Спочатку я створюю файл і перевіряю його стандартні дозволи та записи ACL:
$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--
Потім я встановлюю маску ACL у файл і ще раз перевіряю, чи це стандартні дозволи та записи ACL:
$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--
Зверніть увагу, що поряд з ACL-маскою також змінився стандартний дозвіл групи на файл.
- Який зв’язок існує між маскою ACL та стандартним дозволом групи?
- Яка причина поєднання дозволів ACL-маски та дозволу групи файлів? Яка логіка лежить за нею?
Про це говорять дистрибутиви Debian Linux 7.6 та CentOS 7
EDIT
На цей момент я просто хотів поділитися деякими моїми висновками, які я придумав під час дослідження зв’язків між стандартними дозволами групи файлів та маскою ACL. Ось знайдені нами емпіричні спостереження:
Маску ACL можна змінити:
- безпосередньо встановивши його
setfacl -m m:<perms>
командою; - шляхом зміни дозволів групи файлів за допомогою
chmod
команди (якщо маска ACL вже присутня; вона може бути відсутньою, оскільки вона є необов'язковою, якщо у файлі немає дозволів користувача або групи ACL); - додавши абоментований запис ACL або користувача (маска буде автоматично перерахована).
- безпосередньо встановивши його
Маска буде застосовувати максимальні права доступу (якщо є записи ACL з наявними дозволами, що перевищують дозволи на маску ACL), лише якщо маска встановлюється безпосередньо setfacl або шляхом зміни дозволу групи файлів з chmod (не розраховується автоматично). Будь-які зміни в записах ACL викликають автоматичний перерахунок ACL-маски та ефективно відключають "режим виконання".
Існує пара побічних ефектів, які негативно впливають на стандартні дозволи файлових файлів при використанні ACL:
- Записаний користувачем або групою запис ACL, застосований до файлу, може змінити маску ACL (збільшити її дозволи), а отже, і ефективні дозволи групи файлів. Наприклад, якщо ви, як власник файлу, встановили на нього права "rw-r - r-- jim students", а ви також надаєте дозвіл rw користувачеві "jack", ви також неявно надаєте права доступу rw будь-кому від групи «студенти».
- Більш сувора (менша кількість дозволів) маска ACL може назавжди видалити відповідні стандартні дозволи файлових груп. Наприклад, якщо у вас є файл із стандартними дозволами групи файлів rw і ви застосуєте до файлу маску ACL, доступну лише для читання, його дозволи групи зменшаться до лише читання. Тоді якщо ви видалите всі розширені записи ACL (за допомогою
setfacl -b
команди), групові дозволи залишатимуться лише для читання. Це стосується лише більш жорсткої маски ACL, більш м’яка маска ACL (більше дозволів) не змінює остаточно дозвіл оригінальної групи файлів після її видалення.