Дайте дозволи на запис декільком користувачам у папці Ubuntu


80

Існує папка, якою належить користувач tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Я хочу дозволити іншому користувачеві (русеру) писати дозволи на папку документів. Два користувачі (tomcat6 та ruser) не належать до однієї групи. Я спробував використовувати setfacl:

sudo setfacl -m  u:ruser:rwx document

але це дає мені setfacl: document: Operation not supportedпомилку. Ласкаво допоможіть мені.

Відповіді:


143

Це можна зробити двома способами: встановити каталог на "світ" для запису або створити нову групу для двох користувачів і зробити каталог, який можна записати в цю групу.

Очевидно, що зробити його всесвітнім - це погана річ, тому другий варіант є кращим.

Користувачі в Linux можуть належати до декількох груп. У цьому випадку ви хочете створити абсолютно нову групу, назвемо її tomandruser:

sudo groupadd tomandruser

Тепер, коли група існує, додайте до неї двох користувачів:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Тепер все, що залишилося, - це встановити дозволи на каталог:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Тепер лише члени групи довірителів можуть читати, писати або виконувати що-небудь у каталозі. Зверніть увагу на аргумент -R до команд chmod та chgrp: це вказує їм повторюватись у кожному підкаталозі цільового каталогу та змінювати кожен знайдений файл та каталог.

Ви також можете змінити 770 на щось на зразок, 774якщо ви хочете, щоб інші могли читати файли, 775якщо ви хочете, щоб інші читали та виконували файли тощо. Зміни групового призначення не набудуть чинності, поки користувачі не вийдуть із системи та не повернуться назад в.

Якщо ви також хочете (напевно, це робите), щоб нові файли, створені одним із користувачів у каталозі, були автоматично записані іншими учасниками групи, тоді дивіться тут .


2
Ви, мабуть, хочете також встановити прапор set-group-ID для каталогів, щоб автоматично створювати нові файли та підкаталоги, які належать правій групі:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio

8
Я б уникав використання chmod 770, 775 чи будь-чого іншого. Це змішується з дозволами всіх файлів. Натомість використовуйте щось на зразок chmod -R g+wдодавання дозволів на запис, не мукуючи все інше.
Крістіан Варга

2
Якщо користувач створює там новий файл (скажімо, mysql by SELECT INTO OUTFILE), він встановлює дозволи своїй основній групі ( mysqlв даному випадку), а файл не доступний іншим користувачем у будь-якому випадку. Як це вирішити?
Олекса

2
Що робити, якщо ви хочете дозволити користувачам писати доступ до папки, не змінюючи право власності на папку, наприклад, ви не хочете возитися з дозволами апаша на папку public_html?
codecowboy

2
Примітка. "Зміни в груповому призначенні не наберуть чинності, поки користувачі не вийдуть із системи та знову не ввійдуть у систему" Я пропустив це :)
Володимир Вуканчак

3

Приклад сценарію показує приклад надання w (write)/ r (read) / x (execute)дозволу на даний шлях /path/to/the/directoryдо папки для USER1і USER2. Якщо ви хочете надати доступ лише для запису, будь ласка, замініть rwxна w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.