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

10

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

Камаль
источник
4
ПОЖАЛУЙСТА, прочтите это Причины, по которым / var / www НЕ ДОЛЖЕН иметь chmod 777
Марко Чеппи
777 - плохая идея . Но использование ACL вполне подходит. Пожалуйста, прочитайте это решение на ACL, чтобы увидеть, хорошо ли оно работает для вас?
1
Кроме того, для chmod всех каталогов вы можете использовать find . -type d -exec chmod 777 {} +для изменения всех каталогов на 777. Помните, что вы должны войти в систему как root для получения лучших результатов, и убедитесь, что вы находитесь в папке.
Redy S

Ответы:

1

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

Войтех Трефны
источник
Можете ли вы написать команду для создания / var / www / writable и предоставления ей разрешения, чтобы я получил такое же разрешение (777) для сайта, который я недавно добавил в него.
Камаль
1
Предоставление разрешения 777 вашему веб-серверу не очень хорошо.
saji89
Не могли бы вы добавить более подробную информацию.
saji89
@ Войтех Трефны. Ссылка в данный момент не работает. Это говорит 404 Not Found.
all4naija
12

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

BZ1
источник
Вам нужно больше голосов!
Шехарьяр
10

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

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

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

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

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

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

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

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

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

Сергей
источник
2

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

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

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

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

Сохранить.

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

Пример: sudo apache2ctl restart

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

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

RobotHumans
источник
0

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

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

przemo_li
источник
0

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

Dawid
источник