Когда пользователи загружают файлы на ваш сервер через веб-форму и какой-либо PHP-скрипт, доступ к диску на сервере происходит с идентификатором пользователя, под которым работает веб-сервер (обычно никто, www-data, apache, _httpd или даже root).
Обратите внимание, что этот идентификатор одного пользователя используется независимо от того, какой пользователь загружает файл.
Пока нет локальных пользователей, получающих доступ к системе другими способами (например, ssh), установка разрешений для каталогов загрузки на 0777 не будет иметь большого значения — кроме того, что кто-то воспользуется уязвимостью безопасности где-то еще в вашей системе. ни к кому эти разрешения не применяются, и такой злоумышленник, вероятно, просто воспользуется /tmp.
Всегда рекомендуется устанавливать только те разрешения для файла или каталога, которые действительно необходимы. В данном случае это означает, вероятно, что-то вроде:
drwxrws--- 5 www-data www-data 4096 Nov 17 16:44 upload/
Я предполагаю, что другие локальные пользователи помимо веб-сервера захотят получить доступ к этим файлам, например системный администратор или веб-дизайнер. Добавьте этих пользователей в группу, в которой работает ваш веб-сервер, и им не нужны права sudo или root для доступа к этому каталогу. Кроме того, +s означает, что новые файлы и каталоги в upload/ автоматически будут принадлежать той же группе.
Что касается вашего последнего вопроса: то, что злоумышленник знает, где находится каталог, не означает, что он может волшебным образом заставить файлы появляться там. Должна быть запущена какая-то служба, которая принимает файлы и сохраняет их там ... так что нет, установка разрешений на 0777 напрямую не делает его менее безопасным.
Тем не менее, есть еще несколько аспектов «безопасности» и «защищенности», которые вы не можете решить с помощью прав доступа к файлам во всей этой настройке:
- загрузчики по-прежнему могут перезаписывать файлы друг друга, потому что все они работают с одним и тем же идентификатором пользователя.
- кто-то может загрузить вредоносный PHP-скрипт в каталог загрузки и запустить его оттуда, возможно, использовать другие уязвимости в вашей системе и получить root-доступ
- кто-то может использовать ваш сервер для распространения детской порнографии
- кто-то может запустить фишинговый сайт с вашего сервера после загрузки двойника paypal.com
...и, вероятно, больше. Некоторые из этих проблем вы, возможно, решили в своем сценарии загрузки, но опять же, понимание прав доступа к файлам unix и того, где они применяются, обычно приходит в начале, когда вы изучаете проблемы безопасности, что показывает, что вы, вероятно, еще не готовы решать все из возможных проблем.
Попросите кого-нибудь посмотреть ваш код!
person
Community
schedule
26.02.2009