Tak, ACL: pozwalają swobodnie ustawiać różne prawa dla różnych użytkowników lub grup. IIRC zwykłe uprawnienia grupowe ograniczają zestaw uprawnień, które grupy i użytkownicy mogą mieć za pośrednictwem ACL: s (pokazane jak mask
w getfacl
), ale setfacl
powinni sobie z tym poradzić, jeśli dodasz uprawnienia.
Ale w niektórych przypadkach musisz zapytać, czy zestaw uprawnień ma jakiś sens.
Mam 3 użytkowników z tymi pożądanymi uprawnieniami ....
- użytkownik 1 rwx
- użytkownik 2 rw_
- użytkownik 3 r__
Możesz to zaimplementować za pomocą ACL: s lub (w przybliżeniu) ze zwykłymi uprawnieniami uniksowymi, czyniąc user1 właścicielem pliku, user2 członkiem grupy i pozwalając innym, w tym użytkownikowi3, na dostęp do odczytu. Chociaż wtedy wszyscy (z dostępem do katalogu) mieliby również dostęp do odczytu.
Rozważmy znaczenie tych uprawnień. Masz jednego użytkownika, który potrafi czytać, a drugiego użytkownika, który potrafi czytać i pisać. To zupełnie normalne. Żadne z nich nie ma dostępu do wykonania pliku, ale trzeci użytkownik również powinien to zrobić.
To nie ma sensu. Każdy użytkownik, który może odczytać plik, może wykonać kopię (*), oznaczyć plik wykonywalny i uruchomić go, bez dostępu do wykonania oryginalnego pliku. Jedyną sytuacją, która ma sens, aby mieć dostęp do wykonywania dla niektórych użytkowników, ale nie dla innych, jest sytuacja, gdy plik wykonywalny ma podwyższone uprawnienia dzięki suid. Ale gdyby tak było, nie powinieneś mieć również innych użytkowników z dostępem do zapisu do pliku.
W tym samym sensie, użytkownik 4 z -wx
i użytkownik 5 --x
nie mają dla mnie sensu. Dostęp tylko do zapisu może mieć sens, jeśli istniała możliwość zezwalania tylko na dołączanie , ale system uprawnień nie jest tak drobiazgowy.
(* chyba że nie mogą nigdzie pisać)
Chociaż jeśli usuniemy dziwne wymagania dotyczące x
bitu, pozostanie nam plik, w którym użytkownik1 i użytkownik2 powinni mieć dostęp do zapisu, a użytkownik3 powinien mieć dostęp do odczytu. Jeden pisarz i wiele czytników byłoby łatwych w tradycyjnym modelu, ale ten przypadek wymagałby sztuczek, aby połączyć uprawnienia do plików z uprawnieniami zawartego katalogu. Na szczęście w wielu przypadkach wystarczy jeden użytkownik z większą liczbą uprawnień.
Bez wymogu wykonania bitu, wygląda to na przypadek użycia ACL: s. Ale dzięki temu ten konkretny przykład wydaje mi się raczej zawiły.