Використання setfacl для дозволу членам групи записувати в будь-який файл у каталозі


12

Я хотів би використовувати setfacl, щоб будь-хто в групі "app" міг редагувати будь-який файл, що міститься в / usr / local / users / app незалежно від того, що кажуть традиційні дозволи UNIX. У мене є два користувачі Джон і Бен. Я намагався дотримуватися інструкції з іншого питання , але Джон не в змозі записати в деякі файли. Схоже, це через маску acl. Однак я встановив маску за замовчуванням у каталозі rwx, тож чи не повинні файли в ній успадковувати це під час створення?

Наприклад, Джон не може записати файл у нижченаведений файл, але він є членом групи "додаток", яка містить acls для запису у файл, тому я здивований, що він не може редагувати файл.

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--

Відповіді:


7

Ви помітите "ефективний" коментар, що getfacl кидає на вас. Проблема полягає в тому, що дозволи розраховуються так, що "додаток" не встановлює біт запису. Це відбувається тому, що маска у файлі встановлена ​​лише для читання. Маска використовується для обмеження кількості дозволів, які, можливо, можуть бути видані для певного файлу чи каталогу.

Приклад того, чому ви хочете, щоб така поведінка була, як, якби ви знали, що файл може законно потребувати різних користувачів / груп, щоб мати доступ до нього, але чомусь справи ускладнюються дозволами, і ви хотіли спосіб сказати "Що б не було інше дозволу за замовчуванням встановлюються, незалежно від того, яке їх членство в групі, або будь-який рекурсивний setfacl буде виконано пізніше, ВИЗНАЧЕНО НЕ ДАЙТЕ ЦЕЙ ! " Користувач, що володіє, має особливий статус у світі POSIX, він має права інших користувачів, як-от здатність бути некореневим та змінювати дозволи на файл, а його права не обмежуються маскою (що було б все-таки безглуздо через першу привілей, яку дає їм система). Ось чому вони все ще отримують rwx, навіть якщо маска обмежена.

Щоб відповісти на ваше конкретне запитання : додайте біт запису до маски у файлі та спробуйте ще раз як johnкористувач.

ось версія командного рядка вищевказаного пояснення, врахуйте, як змінюються "ефективні" права, коли все, що я змінюю, є маскою.


Дякую. Я дуже ціную відповідь. Чи можна створити нові файли за допомогою стандартної маски rwx? Я відредагував своє запитання ще кількома деталями.
Бен Макканн

Так, маска - одна з категорій (наприклад, користувачів і груп), на яку можна встановити ACL за замовчуванням. Маска за замовчуванням повинна успадковуватись до підкаталогів та застосовуватись до файлів. ПРИКЛАД: setfacl -md: m :: rwx / path / to / Dir
Bratchley

За замовчуванням ACL успадковує підкаталоги, але не файли, що робить ACL повністю марними :-(
Бен Макканн

Просто, щоб переконатися, що ми говоримо про те саме, ви говорите про acl за замовчуванням для введення маски? Це те, що я отримую в тестах.
Братчлі

Я також повторив вищевказаний тест для нових файлів у / testBed після зміни ефективної маски у батьківському каталозі та отримав той же результат (до файлу застосовується запис маски за замовчуванням, а не ефективна маска батьків).
Братчлі

0

Це неможливо. cp, rsync тощо створюють файли, ігноруючи ACL за замовчуванням

Чому CP не поважає ACL?


Неправильно Користувач зіткнувся з тією ж маскою, що і раніше, і отримав неправильну відповідь від когось іншого. Це не стосується "cp" або будь-якої іншої утиліти, щоб ігнорувати записи ACL за замовчуванням, що відбувається на рівні файлової системи, коли cp переходить до створення файлу. У цьому інструменті є можливість надсилати системні виклики, щоб зачистити / додати необхідні ACL, але для цього доведеться докласти зусиль.
Братчлі

Чорт у тому, що ви можете побачити запис ACL, що вони говорять про те, що це лише ефективні дозволи, які вони очікують побачити, там немає. Це була прекрасна можливість сказати "ей чувак, перевіри маску".
Братчлі

1
Насправді, я вважаю, що це виглядає так, як EvilRyry розмістив інформацію про маску, і ОП просто відгукнувся "він не працював", а потім розмістив вихідний файл getfacl, який, схоже, показує, що "файли" отримали rwx у файлі. За такою швидкістю відповідь, що найбільше голосує, не відповідає моєму особистому досвіду та тому, що я проілюстрував тут на прикладах команд.
Братчлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.