2013-09-16 13:33:11 +0000 2013-09-16 13:33:11 +0000
27
27

Предоставление разрешений на запись группе www-data

Я создаю сайт и частью функции является переписывание данных, сгенерированных пользователем с помощью php. Я использую nginx на Ubuntu 13.04. Сейчас я только тестирую и все обслуживается через nginx на locahost.

Мой php скрипт не пишет текстовый файл (хотя я могу сделать это вручную) и я думаю, что это проблема с разрешениями на запись в мой каталог /var/www/example.com/public_html.

На данный момент этот каталог принадлежит мне (iain), но, похоже, было бы более разумно передать право собственности на каталог /var/www и все, что в нем находится, пользователю www-data (или это должна быть группа?) и добавить себя в группу www-data. Правильно ли это сделать?

useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www

Значит ли это, что кто-либо в группе www-data теперь может читать, писать и выполнять в /var/www?

Ответы (1)

53
53
53
2013-09-16 13:53:44 +0000

Во-первых, useradd создает нового пользователя. Так как вы (iain) уже существуете, вы хотите позвонить usermod. Так и будет:

sudo usermod -aG www-data iain
addgroup www-data

(обратите внимание на -a на серверах на базе Debian (включая Ubuntu), которые добавят вас в эту группу и сохранят ваше членство в других группах. Забудьте об этом, и вы будете принадлежать только к группе www-data - это может быть плохим опытом, если один из них будет колесом. На серверах типа SUSE вариант -A вместо -aG, так что прочтите man usermod внимательно, чтобы все исправить)).

Во-вторых, вы не хотите, чтобы apache имел полный rw-доступ к /var/www: это потенциально серьезное нарушение безопасности. Как правило, разрешайте только то, что вам нужно, и ничего более принцип наименьших привилегий ). В этом случае вам нужен apache (www-data) и вы (www-data group) для записи (и чтения) в /var/www/example.com/public_html, поэтому

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html

Правка : чтобы ответить на ваш оригинальный вопрос, да, любой член www-data теперь может читать и выполнять /var/www (потому что последний бит ваших разрешений - 5 = чтение + выполнение). Но поскольку вы не использовали переключатель -R, это относится только к /var/www, а не к содержащимся в нем файлам и подкаталогам. Теперь, могут ли они писать - это другое дело, и зависит от группы /var/www, которую вы не установили. Я думаю, что это обычно root:root, так что нет, они (вероятно) не могут писать.

Правка 2014-06-22 : добавлено примечание, что опция -aG действительна на серверах на базе Debian. Очевидно, что она изменяется в зависимости от дистрибутива, так что внимательно прочтите man перед выполнением.

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

6
10
8
5
3