linux / setfacl - Встановіть усі поточні / майбутні файли / каталоги в батьківському каталозі на 775 із вказаним власником / групою


42

У мене є каталог під назвою "members" і під ним знаходяться папки / файли. Як я можу рекурсивно встановити всі поточні папки / файли та будь-які майбутні створені там за замовчуванням 775 дозволів і належати власнику / групі нікому / адміністратору відповідно? Я ввімкнув ACL, змонтований, але не можу отримати команду setfacl, щоб зробити це правильно. Будь-яка ідея, як це досягти?

Відповіді:


62

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

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R рекурсивний, що означає, що все, що знаходиться в цьому каталозі, буде застосовано до нього правило.
d за замовчуванням, що означає, що для всіх майбутніх елементів, створених у цьому каталозі, якщо ці правила застосовуються за замовчуванням. m потрібно, щоб додати / змінити правила.

Перша команда призначена для нових елементів (звідси d), друга команда - для старих / існуючих елементів у папці. Сподіваюсь, це допоможе комусь, оскільки цей матеріал трохи складний і не дуже інтуїтивний.


2
Це саме те, що мені потрібно було, щоб власник каталогу бабусь і дідусів міг правильно змінювати вміст нових каталогів онуків.
Joost

Якщо ви єдиний користувач вашого Rpi, ви можете замінити g: groupname на pi: pi або просто pi
SDsolar

Ви можете вказати для користувача, груп та інших в одному рядку, наприклад -Rdm g:groupnamehere:rwx, -Rdm u:groupnamehere:rwx.
користувач2340939

18

Іти з прийнятою відповіддю ...

Ви можете комбінувати ці команди разом:

sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/

Круто. Чому ви ставитесь d:на перший предмет, а не -Rmd? Я можу сказати, що другий параметр повинен мати ні default- просто дивно, як Linux приймає його до мене.
JREAM

1
@JREAM: Linux ( на самому справі getopt_long) відправляє весь аргумент опцію-m , який аналізується вручну шляхом setfacl, розділяючи їх комами переданих аргументів. Вони додаються до пов'язаного списку, який прокручується в кінці, коли фактично змінюється ACL.
Бенуа Даффез

2

setfacl в linux має -dта -kваріанти маніпулювання дозволами за замовчуванням, які, мабуть, те, що ви шукаєте (див. man для отримання додаткової інформації).


1

Легко рекурсивно встановлювати прості дозволи UNIX на вимогу відповідного авторизованого користувача, дозволів каталогів та файлів. Автоматично нав'язувати це неможливо.

Ви можете сказати користувачам використовувати набір umask 0002, і це допомагає створювати нові файли на рівні 0775 (залежно від програми). Але це не підлягає виконанню.

Я розумію, що ACL не успадковуються на системах UNIX / Linux. Вони встановлюються на вимогу.

Що стосується власності на файл / каталог, то вам тут майже не пощастило.

Що стосується власності на файли / каталоги, то, встановивши біт setid-gid (тобто g + s у DIRECTORIES), це призводить до спадкування права власності на групу.

Що я робив у таких ситуаціях - це виконувати періодичний кореневий скрипт cron, який скидає невідповідні дозволи / права власності на стандарт у таких каталогах.

Іншим (НЕ РЕКОМЕНДОВАНО) процесом є те, щоб той самий ідентифікатор користувача використовувався під час роботи над цими файлами. Це може бути досягнуто, коли користувач увійде в систему під власним UID, а потім використовуючи sudo або su для запуску як ідентифікатора. Це все ще не на 100%, особливо це стосується ACL та дозволів.

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