Как дать разрешение на чтение для папки и ее подпапок и файлов?

Я изменил владельца моего файла localhost на /var/www/ и его подпапках и дал ему разрешение 777. Однако, когда я добавляю в него новую папку, новая папка не получает этого разрешения автоматически. Как я могу дать разрешение папке 777 навсегда, чтобы при добавлении новой папки или файла оно получало такое же разрешение?

10
задан 16 August 2012 в 05:25

6 ответов

Разрешения для вновь создаваемых файлов устанавливаются umask

0
ответ дан 16 August 2012 в 05:25

Вы можете использовать рекурсивную опцию в любое время. sudo chown -R username /var/www

0
ответ дан 16 August 2012 в 05:25

Как другие уже упоминали , предоставление 777 разрешений на /var/www - действительно плохая идея, особенно в производстве.

Лучшим решением было бы дать разрешения на запись только тем пользователям, которым необходимо изменить файлы. Один из способов сделать это:

  • создать новую группу

  • добавить пользователя (ей), который должен изменить данные в /var/www этой группе

  • рекурсивно изменить владельца /var/www для этой группы

  • установить umask на /var/www так все вновь созданные файлы принадлежат созданной нами группе.

Другой вариант - снова использовать ACL, чтобы предоставлять права на запись только тем пользователям, которым они нужны.

Вот подробные инструкции о сбое сервера .

Как правило, веб-сервер или другие сетевые службы или системные учетные записи пользователей не должны иметь разрешений на запись в файлы, обслуживаемые веб-сервером, поскольку это открывает возможность выполнения произвольного кода.

0
ответ дан 16 August 2012 в 05:25

Вы должны отредактировать /etc/apache/envvars как root с вашим редактором.

Пример: ALT + F2
gksudo gedit /etc/apache2/envvars

Перейти в конец файла и добавить линия umask XXX.

Где umask - двоичная противоположность требуемого значения разрешений.
Для 774 это будет 003. Для 777 плохая идея это будет 000.

Сохранить.

Перезапустите Apache.

Пример: sudo apache2ctl restart

Это повлияет только на файлы / папки, только что созданные пользователем apache.

Дополнительное примечание, чтение и запись - 6 в слоте пользователя, группы или любого другого.

0
ответ дан 16 August 2012 в 05:25

Кроме того, одно из готовых решений заключается в настройке вашего http-сервера для использования другой папки. Если вы используете Apache, просто отредактируйте его конфигурационные файлы. Таким образом, вам не нужно менять разрешения для / var / www, ведь это может быть плохой идеей (потенциальные проблемы с безопасностью).

И Umask - это ответ на Ваш вопрос. Его можно использовать для ограничения привилегий по умолчанию для вновь создаваемых папок и файлов. И разработчики дистрибутивов, как правило, используют его для ограничения доступа к некоторым системным папкам.

0
ответ дан 16 August 2012 в 05:25

Я думаю, что вы хотите иметь доступ на запись к /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

0
ответ дан 16 August 2012 в 05:25

Другие вопросы по тегам:

Похожие вопросы: