установка 0777 на folder
(и я говорю о папке здесь, а не о файле) не связано с каким-либо риском безопасности выполнения, как некоторые из них могли бы заявить.
Execute is needed on a directory to access the inode information of the files within. You need this to search a directory to read the inodes of the files within. For this reason the execute permission on a directory is often called search permission instead.
посмотреть http://content.hccfl.edu/pollock/aunix1/filepermissions.htm
риски:
- кто-нибудь может читать файлы в этой папке (при условии, что сам файл имеет
r
разрешение на пользователя / группу, пытающуюся прочитать его, или для others
)
- любой может создавать файлы в этой папке (и при необходимости выполнять их, но только те, которые созданы этим конкретным пользователем)
- кто-нибудь может удалить файлы, принадлежащие другим людям в этой папке (файлы не защищены, независимо от владельца/разрешения)
если вы хотите защитить некоторые файлы, вам нужно создать другую папку с" нормальными " разрешениями (rw только для вас или rw для вас и вашей группы) и поместить ваши файлы в она.
С другой стороны, никто не может превратить неисполняемый файл в исполняемый (chmod не разрешается, если вы не являетесь владельцем файла).
что риски нет?
некоторые считают, что 0777 наследуется каждым файлом в папке. Это неправильно. Вы не можете редактировать файл, если у вас нет w
разрешение только потому, что его родительская папка 0777. Вы не можете прочитать файл, если в нем нет r
разрешение.
как обеспечить его?
если у вас есть доступ к какой-либо оболочки или если ваш FTP-клиент позволяет изменить владельца файлов, и вы знаете, какой владелец вам нужно, то вы могли бы создать папку и установить его владельца процесса apache (как правило, nobody
,daemon
или apache
) и просто установите разрешения 0700. Проблема в том, что другие пользователи, как и вы при просмотре с помощью FTP-клиента, не смогут прочитать файлы, созданные позже PHP, который это не обязательно проблема.
хорошо, но как насчет файлов?
Я не говорю о рисках, присущих files
выполнение, потому что нет причин, по которым вы хотели бы заставить x
разрешения на файл, который не должен быть выполнен в первую очередь.
если какое-то веб-приложение нужно записать в существующий файл, достаточно установить значение 0666 (или 0600, если владелец-пользователь apache).