Да, списки ACL позволяют свободно устанавливать разные права для разных пользователей или групп. IIRC обычные групповые разрешения ограничивают набор разрешений, которые группы и пользователи могут иметь через ACL: s (показано как mask
на getfacl
), но setfacl
должны иметь дело с этим, если вы добавляете разрешения.
Но в некоторых случаях вам нужно спросить, имеет ли смысл набор разрешений.
У меня есть 3 пользователя с этими желаемыми разрешениями ....
- user1 rwx
- user2 rw_
- user3 r__
Вы можете реализовать это с помощью ACL: s или (приблизительно) с обычными разрешениями Unix, сделав user1 владельцем файла, user2 членом группы и предоставив другим пользователям, включая user3, доступ на чтение. Хотя тогда каждый (с доступом к каталогу) также будет иметь права на чтение.
Давайте рассмотрим значение этих разрешений. У вас есть один пользователь, который может читать, и другой, который может читать и писать. Это совершенно обычно. Ни один из них не имеет доступа к выполнению файла, но тогда предполагается, что это может сделать и третий пользователь.
Это не имеет большого смысла в моем уме. Любой пользователь, который может прочитать файл, может сделать копию (*), пометить его как исполняемый и запустить его, не имея права на запуск исходного файла. Единственная ситуация, в которой имеет смысл иметь доступ к исполнению для некоторых пользователей, но не для других, - это когда исполняемый файл имеет повышенные привилегии через suid. Но если бы это было так, у вас не должно быть других пользователей с правами на запись в файл.
В том же смысле user4 с -wx
и user5 с --x
не имеют смысла для меня. Доступ только для записи может иметь смысл, если бы была возможность разрешать только добавления , но система разрешений не настолько детализирована.
(* если они не могут нигде писать)
Хотя, если мы удалим странное требование для x
бита, у нас останется файл, в котором user1 и user2 должны иметь доступ на запись, а user3 должен иметь доступ на чтение. Один автор и несколько читателей могли бы легко использовать традиционную модель, но в этом случае потребовались бы хитрости, чтобы объединить права доступа к файлу с разрешениями содержащего каталога. К счастью, во многих случаях достаточно одного пользователя с большим количеством разрешений.
Без требования к биту выполнения это похоже на случай использования ACL: s. Но с этим, этот конкретный пример кажется мне довольно запутанным.