Когда пользователи загружают файлы на ваш сервер через веб-форму и некоторый скрипт 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
не делает его менее безопасным.
Тем не менее, есть еще несколько аспектов, чтобы «безопасность» и «безопасность», что вы не можете обращаться с правами доступа к файлам во всей этой установке:
- закачивающих еще может перезаписывать друг друг файлы, потому что все они работают с тот же идентификатор пользователя
- кто-нибудь может загрузить вредоносный скрипт в директорию загрузки и запустить его оттуда, возможно, использовать другие уязвимости в системе и получить доступ корневой
- кто-то может использовать сервер для распространения детской порнографии
- кто-то может запустить фишинговый сайт с вашего сервера после того, как вы выберете внешний вид paypal.com.
... и, возможно, больше. Некоторые из этих проблем, которые вы, возможно, рассмотрели в своем сценарии загрузки, но опять же, понимание прав доступа к файлам unix и их применение, как правило, начинается с самого начала при изучении проблем безопасности, что показывает, что вы, вероятно, еще не готовы решать все проблемы возможных проблем.
У кого-то есть код?
этот вопрос невозможно ответить без дополнительной информации. например, как файлы загружаются? у вашего кода, вероятно, достаточно собственных проблем, что разрешения каталога загрузки являются наименьшим из ваших забот. – hop
Благодарим вас за то, что вы пестализировали мою кодировку, но она действительно не отвечает на вопрос. Файлы будут загружены через форму, созданную на php-странице. Вопрос был в том, чтобы выяснить, можно ли оставить набор каталогов с разрешением 777? –
обновите вопрос с этой информацией – hop