Когда пользователи загружают файлы на ваш сервер через веб-форму и некоторый PHP-скрипт, доступ к диску на сервере происходит с идентификатором пользователя, под которым работает веб-сервер (обычно никто, www-data, apache, _httpd или даже корень).
Обратите внимание, что этот идентификатор одного пользователя используется независимо от того, какой пользователь загружает файл.
Пока нет локальных пользователей, обращающихся к системе с помощью других средств (например, 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 и того, где они применяются, обычно начинается с самого начала, когда вы узнаете о проблемах безопасности, что показывает, что вы, вероятно, еще не готовы заняться всеми из возможных проблем.
Кто-нибудь просматривал ваш код!