Я изменил владельца моего файла localhost на /var/www/
и его подпапках и дал ему разрешение 777. Однако, когда я добавляю в него новую папку, новая папка не получает этого разрешения автоматически. Как я могу дать разрешение папке 777 навсегда, чтобы при добавлении новой папки или файла оно получало такое же разрешение?
Разрешения для вновь создаваемых файлов устанавливаются umask
Вы можете использовать рекурсивную опцию в любое время. sudo chown -R username /var/www
Как другие уже упоминали , предоставление 777 разрешений на /var/www
- действительно плохая идея, особенно в производстве.
Лучшим решением было бы дать разрешения на запись только тем пользователям, которым необходимо изменить файлы. Один из способов сделать это:
создать новую группу
добавить пользователя (ей), который должен изменить данные в /var/www
этой группе
рекурсивно изменить владельца /var/www
для этой группы
установить umask
на /var/www
так все вновь созданные файлы принадлежат созданной нами группе.
Другой вариант - снова использовать ACL, чтобы предоставлять права на запись только тем пользователям, которым они нужны.
Вот подробные инструкции о сбое сервера .
Как правило, веб-сервер или другие сетевые службы или системные учетные записи пользователей не должны иметь разрешений на запись в файлы, обслуживаемые веб-сервером, поскольку это открывает возможность выполнения произвольного кода.
Вы должны отредактировать /etc/apache/envvars
как root с вашим редактором.
Пример: ALT kbd> + F2 kbd>
gksudo gedit /etc/apache2/envvars
Перейти в конец файла и добавить линия umask XXX
.
Где umask - двоичная противоположность требуемого значения разрешений.
Для 774 это будет 003. Для 777 плохая идея это будет 000.
Сохранить.
Перезапустите Apache.
Пример: sudo apache2ctl restart
Это повлияет только на файлы / папки, только что созданные пользователем apache.
Дополнительное примечание, чтение и запись - 6 в слоте пользователя, группы или любого другого.
Кроме того, одно из готовых решений заключается в настройке вашего http-сервера для использования другой папки. Если вы используете Apache, просто отредактируйте его конфигурационные файлы. Таким образом, вам не нужно менять разрешения для / var / www, ведь это может быть плохой идеей (потенциальные проблемы с безопасностью).
И Umask - это ответ на Ваш вопрос. Его можно использовать для ограничения привилегий по умолчанию для вновь создаваемых папок и файлов. И разработчики дистрибутивов, как правило, используют его для ограничения доступа к некоторым системным папкам.
Я думаю, что вы хотите иметь доступ на запись к /var/www
для изменения файлов и каталогов. Я думаю, что лучшее решение - это установить apache2-mpm-itk
, а в конфигурационном файле виртуального хоста добавить /etc/apache2/sites-available/default
:
<IfModule mpm_itk_module>
AssignUserId your-username your-group
</IfModule>
и запустить chown your-username\: /var/www -Rv
таким образом, Apache для этого виртуального хоста будет работать с вашим UID / GID и вы сможете редактировать файлы. Даже файлы, созданные в PHP, будут иметь ваш UID / GID