Як можна надати доступ до запису папки всім користувачам в Linux?


191

Я зараз встановив apache2 на Ubuntu і помітив, що папка / var / www захищена. Я можу просто sudoвсе, але бажаю просто дати йому доступ для запису.

Як я можу це зробити?

Я спробував, sudo chmod 7777 /var/wwwале не вийшло.


Це загальнодоступний сервер чи він не має прямого зв’язку з Інтернетом? Якщо перше, важливо враховувати рішення щодо безпеки - сервери в Інтернеті постійно піддаються атаці (дивіться у вашій / var / log / повідомлення або ін.).
kwutchak

це лише мій ноутбук, він недоступний з Інтернету.
Карсон Майєрс

Відповіді:


321

Щоб найкраще ділитися з кількома користувачами, які мають змогу писати /var/www, слід призначити загальну групу. Наприклад, типовою для веб-контенту для Ubuntu та Debian є група за замовчуванням www-data. Переконайтеся, що всі користувачі, яким потрібен доступ для запису, /var/wwwперебувають у цій групі.

sudo usermod -a -G www-data <some_user>

Потім встановіть правильні дозволи на / var / www.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Крім того, ви повинні зробити каталог та всі каталоги під ним "встановити GID", так що всі нові файли та каталоги, створені під /var/www, належать www-dataгрупі.

sudo find /var/www -type d -exec chmod 2775 {} \;    

Знайдіть усі файли /var/wwwта додайте дозвіл на читання та запис власника та групи:

sudo find /var/www -type f -exec chmod ug+rw {} \;

Можливо, вам доведеться вийти з системи та увійти знову, щоб мати змогу вносити зміни, якщо ви редагуєте дозвіл на власний обліковий запис.


2
це досить нудно ... Я не можу просто надати користувачам доступ до нього, як ніби це будь-яка інша папка?
Карсон Майєрс

9
Те є , як ви даєте доступ до нього. Копіювати та вставляти команди швидше, ніж намагатися переходити через діалоги діалогового вікна файлів GUI, щоб зробити те саме. Довгостроково це допоможе вам, якщо ви прочитаєте сторінки керівництва для chmod і chgrp, принаймні ("man chmod").
jtimberman

можливо, я не зрозумів команди вперше, коли прочитав їх, і ваша редакція робить це набагато зрозумілішим.
Карсон Майєрс

1
+1 для орієнтування на примусове використання дозволів apache. добре працює з umask від 027. Якщо щось потребує запису доступу, це так просто, як chmod g + w dir /
LiraNuna

1
Чому ваша група команди дозволу sudo chmod -R g+wі не g+rwчи g+rwX?
detly

31

Існує простіший спосіб зробити це, спробуйте виконати цю команду.

sudo chmod -R 757 /var/www

По суті, chmodкоманда змінює дозволи та -Rперемикач впливає на всіх користувачів. Тоді це просто надання правильних дозволів на використання.


3
Чи можете ви дати деяке уявлення про те, що робить команда для ОП?
n0pe

11
-1 за відсутністю пояснень. Крім того, chmod $permissions -R $fileне вірно…
Blacklight Shining

1
це варіанти, тоді дозволи не навпаки
Moataz Elmasry

2
sudo chmod -R 757 /var/www
Bwyss

будь-хто досвідчений запропонує редагувати, коротко пояснивши це.
Аді Прасетьо

29

Читати + писати:

sudo chmod -R a+rw /var/www

Прочитати + написати + виконати:

sudo chmod -R a+rwx /var/www

7

Ви також можете повторити те, що jtimberman запропонував, використовуючи списки контролю доступу . Команда setfacl приймає -s для заміни існуючого ACL або -m для зміни його; -R, щоб зробити ACL каталогів рекурсивними; і -d зробити вказані налаштування за замовчуванням, що корисно, якщо ви очікуєте майбутніх облікових записів користувачів.

Вони просто встановлюють дозволи, як для користувача, групи, інших та маскування за допомогою chmod:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

І це може бути, як ви це зробите для вказаного користувача чи його / її групи:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

І звичайно, сила полягає в тому, що ви можете призначити будь-якого конкретного користувача, кількох користувачів тощо, і все це не потребуючи змін ваших налаштувань групи. І на відміну від chmod, якщо ви хочете, щоб деякі групи мали доступ до однієї директорії, а інші групи мали доступ лише до іншої, це реально можливо за допомогою setfacl. Нарешті, щоб переглянути ACL- адреси каталогів, запустіть getfacl :

getfacl DIRECTORY

Ви можете вказати -R для перегляду ACL для підкаталогів або -d для перегляду за замовчуванням.


2

Швидка та проста відповідь -

а. Додайте ( -a ) свого користувача ( ім'я користувача ) до www-data групи ( -G ) .

sudo usermod -a -G www-data user_name

б. Дайте групі ( g ) ті ж ( = ) дозволи, що й користувачеві користувач ( u ) / var / www рекурсивно ( -R ).

sudo chmod -R g=u /var/www

Пояснення: Apache 2 на Debian / Ubuntu встановлює www-дані користувача та групи як власника / var / www . Типовими дозволами для користувача є "Переглянути та змінити вміст", однак група може лише "Переглянути вміст". Отже, додавання себе до групи даних www та надання йому тих же дозволів, що і користувач wwww-data, - це швидкий і простий спосіб дістати розвиток. Я роблю це для всіх моїх локальних середовищ (ПК / ноутбуків) для веб-розробок.


1

Я типове використання

chmod g+w /folder/ -R

Це майже самопояснення.

Він додає, що всі, хто gпотрапив у пакет, /folder/мають wдоступ до обряду ( +w), -Rпризначені для рекурсії для підпапок.


-3

Можна просто спробувати chmod 0777 /var/www?

Слово попередження: якщо ви дозволите всім отримувати доступ до цієї папки, це означає, що хакери можуть отримати доступ до цієї папки, якщо вони отримають доступ до вашої системи. Ось чому краще створити групу допустимих користувачів і надати цій групі доступ для запису.


то чому б пропонувати це як рішення, а потім негайно його дискредитувати? -1 голос
Тиш

-3

Спочатку ви вводите певний шлях до папки, потім використовуючи цю команду ...

chmod -R 777 foldername
chown username:username foldername 

7
Ого, це погано! Ви не даєте 777 з -R - особливо якщо людина, яка задає питання, є новачком і не розуміє ризиків.
відійти

Правда досить @recluze.
vgoff
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.