Не устанавливайте для вслепую права доступа к папке 777, что позволяет читать, записывать и выполнять биты каждому пользователю в системе.
Вы должны всегда предоставлять минимальное количество привилегий , необходимое для запуска приложения в качестве общей меры безопасности.
Я не знаю много о требованиях вашего приложения из вашего вопроса выше, но кажется, что каталоги преступника должны иметь только разрешения на чтение / запись / выполнение для вас и пользователя, от имени которого работает веб-сервер. Вы можете просто предоставить их веб-пользователю, а затем использовать sudo для доступа к ним самостоятельно.
читать - чтобы вы могли получить список каталогов.
написать - создать новые или удалить существующие файлы в каталоге или переименовать файлы. (например: использование функции unlink ())
выполнить - так что вы можете перейти в каталог и получить к нему доступ.
В вашем случае нормально должно работать следующее:
chown -R www-data: folder1/
chmod 700 folder1/ folder1/folder2/
Предполагается, что ваш веб-сервер работает как пользователь www-data. Если вы хотите иметь доступ к каталогам и их соответствующим файлам через FTP или оболочку bash без использования sudo, вам необходимо создать группу, например wwwusers, и добавить всех, кому нужен доступ к этим каталогам в этой группе. Затем сделайте что-то вроде:
chown -R www-data:wwwusers folder1/
chmod 770 folder1/ folder1/folder2/
Кстати, мой ответ наивен, так как я предполагаю, что у вас есть root на сервере, и что нет ничего похожего на POSIX ACL или что-то вроде grsecurity. С ACL вам нужно будет сделать что-то вроде setfacl -mu:www-data:rwx /path/to/dir
. В этом случае вам, скорее всего, потребуется обратиться за помощью к вашему хостинг-провайдеру.
Вы действительно должны понимать основы работы разрешений для каталогов и файлов в Unix или Unix-подобной файловой системе. Убедитесь, что вы запускаете man chmod
, man chown
. Вы также можете узнать больше здесь о разрешениях UNIX и здесь .