2

У меня есть пользователь 'joe', которому я хотел бы предоставить разрешения (для /var/www/html/), чтобы я мог использовать ftp (с vsftpd)

Итак, я запускаю эту команду:

sudo chown -R joe /var/www/html/

И это хорошо, теперь я могу читать, писать, удалять и т.д. файлы через FTP.
Однако теперь любая страница на моем сайте возвращает ошибку 403 Forbidden.

Это потому, что я дал «joe» право собственности на эти каталоги, поэтому, чтобы сделать мой сайт снова доступным, я запускаю:

sudo chown -R www-data /var/www/html/

Но это означает, что joe не может получить доступ к этим файлам с помощью ftp.

Можно ли как-нибудь разрешить Джо читать и писать файлы, в то же время позволяя доступ к файлам через www-данные, чтобы мои веб-страницы не были запрещены?


Я попытался создать группу:

sudo addgroup users
sudo add user joe users
sudo add user www-data users

Но я не знаю, как накормить целую группу, я знаю только, например:

sudo chown -R joe:users /var/www/html

Однако это представляет ту же проблему.


Я использую Ubuntu 14.04 x64 с apache2, и у joe есть права root (ALL=(ALL:ALL) ALL)

2 ответа2

2

Я думаю, что вы можете попробовать:

setfacl -R -m u:joe:rw /var/www/html

Вы можете проверить результат, выполнив:

getfacl /var/www/html

Вы должны увидеть что-то похожее на:

# file: var/www/html
# owner: root
# group: root
user::rwx
user:joe:rw-
group::r-x
mask::rwx
other::r-x
2

Если вы посмотрите на разрешения для каталогов и файлов, вы увидите учетную запись, которой они принадлежат, а также группу, к которой они принадлежат. Например:

$ ls -ld /var/www/html
drwxr-xr-x. 2 joe joe 23 Mar 12 11:08 /var/www/html

В приведенном выше примере учетная запись joe владеет каталогом и принадлежит группе joe; группа является вторым "Джо" на линии. Группа может содержать только одну учетную запись, Джо, но я мог бы добавить другие группы в группу. Я мог бы создать группу с именем users и связать каталог с этой группой, как вы это сделали. Вы используете команду chown , но есть также команда chgrp для изменения группы. Вы можете использовать эту команду для назначения файлов и каталогов группе, или вы также можете изменить группу, как вы делали с chown user:group . Например, вы можете использовать приведенную ниже команду, если в системе есть группа www-данных (вы можете увидеть группы и их членов, введя команду cat /etc/group):

sudo chgrp www-data /var/www/html

Тогда я мог бы увидеть что-то вроде следующего:

# ls -ld /var/www/html
drwxr-xr-x. 2 joe www-data 23 Mar 12 11:08 /var/www/html

Или, если вы предпочитаете, вы можете сделать группу для каталога новой группой users вы создали, как вы делали с помощью команды chown -R joe:users .

Когда я выполнил команду ls -ld для проверки прав доступа к каталогу, я увидел следующее:

drwxr-xr-x

"D" говорит мне, что это каталог. Следующие 3 символа говорят мне, что права доступа для владельца - чтение, запись и выполнение. Следующие 3 символа показывают права доступа для группы, которые в приведенном выше примере считываются и выполняются. Я мог бы предоставить группе разрешение на запись с помощью команды ниже:

chmod g+w /var/www/html

Вы также можете рекурсивно изменять разрешения для указанного выше каталога, используя параметр -R или --recursive .

Если вы соответствующим образом измените разрешения группы, вы сможете добиться того, что вы хотите сделать, так что если Apache работает как www-data, а www-data имеет соответствующие групповые разрешения для каталога и файлов и подкаталогов в нем, Apache будет возможность читать и записывать в файлы как необходимые. Похоже, что вы уже установили для владельца и группы настройку, которая будет работать, поэтому, скорее всего, вам теперь нужно только установить разрешения для users группы с помощью команды chmod .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .