Унікс-хаун / надання дозволів для www-data та користувача


2

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

Отже, я виконую цю команду:

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

І це добре, я тепер можу читати, писати, видаляти і т.д. файли через ftp.
Однак тепер будь-яка сторінка мого сайту повертає 403 Заборонену помилку.

Оскільки я дав право власності на ці каталоги на "Джо", тож, щоб зробити свій сайт знову доступним, я запускаю:

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

Але це означає, що 'joe' не може отримати доступ до цих файлів за допомогою ftp.

Чи є у мене спосіб, коли Джо зможе читати та писати файли, в той же час дозволяючи www-даним доступ до файлів, щоб мої веб-сторінки не заборонені 403?


Я спробував створити групу:

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, і Джо має root права ( ALL=(ALL:ALL) ALL)

Відповіді:


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команди.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.