Так, ACL: s дозволяють вільно встановлювати різні права різним користувачам або групам. IIRC, звичайні групові дозволи обмежують набір дозволів, які можуть мати групи та користувачі через ACL: s (показано як mask
у getfacl
), але це setfacl
слід вирішувати, якщо ви додаєте дозволи.
Але в деяких випадках потрібно запитати, чи має набір дозволів якийсь сенс.
У мене є 3 користувачі з цими бажаними дозволами ....
- user1 rwx
- user2 rw_
- user3 r__
Ви можете реалізувати це за допомогою ACL: s або (приблизно) за допомогою звичайних дозволів Unix, зробивши user1 власником файлу, user2 членом групи, а інші, включаючи user3, мають доступ для читання. Хоча тоді всі (з доступом до каталогу) мали б також доступ для читання.
Розглянемо значення цих дозволів. У вас є один користувач, який може читати, та інший, який може читати та писати. Це абсолютно звичайно. Жоден із них не має доступу для виконання файлу, але тоді третій користувач повинен також це зробити.
Це не має особливого сенсу в моїй свідомості. Будь-який користувач, який може прочитати файл, може зробити копію (*), позначити її виконуваною та запустити її, не маючи доступу для виконання оригінального файлу. Єдина ситуація, яка має сенс мати доступ для деяких користувачів, але не для інших, - це коли виконуваний файл має підвищені привілеї через suid. Але якби це було так, у вас також не повинно бути інших користувачів, які мають доступ до файлу.
У цьому ж сенсі, user4 with -wx
та user5 with --x
не мають для мене сенсу. Доступ лише для запису може мати сенс, якщо існувала б можливість дозволу лише додавання файлів , але система дозволів не є такою дрібною.
(* якщо тільки вони не можуть писати ніде)
Хоча якщо ми видалимо дивну вимогу до x
біту, ми залишимо файл, у якому user1 та user2 повинні мати доступ для запису, а user3 повинен мати доступ для читання. Один автор і кілька читачів було б легко з традиційною моделлю, але в цьому випадку потрібні хитрощі, щоб поєднати дозволи файлів з дозволом каталогу, що містить. На щастя, у багатьох випадках достатньо одного користувача з більшою кількістю дозволів.
Без вимоги про біт виконання, це виглядає як випадок використання ACL: s. Але в цьому випадку цей конкретний приклад здається мені досить заплутаним.