Tak więc używam Linuksa od kilku lat i naprawdę powinienem znać tę odpowiedź, ale mam problem ze znalezieniem jej. W szczególności używałem dystrybucji opartych na Debianie .... głównie Ubuntu.
Jeśli mam serwer, który ma więcej niż trzech użytkowników, jak ustawić inny zestaw uprawnień do pliku dla każdego użytkownika.
Na przykład:
Jeśli mam plik z tymi uprawnieniami i prawem własności:
rwx rw_ r__ user1:group1 file1.txt
i mam 3 użytkowników z tymi pożądanymi uprawnieniami ....
- użytkownik1 rwx
- użytkownik2 rw_
- użytkownik3 r__
Wszystko co musisz zrobić, to mieć user1 właścicielem pliku, użytkownik2 być w grupy1 i użytkownik3 może być ani - prawidłowa?
Ale co jeśli mam user4 i user5 .
- użytkownik4 _wx
- użytkownik5 __x
Jak mam to skonfigurować?
Nie musiałem tego robić wcześniej, ale administrator Windows zadał mi to pytanie i szczerze mówiąc, nie mogłem odpowiedzieć.
źródło
Odpowiedzi:
Tradycyjne uprawnienia uniksowe zezwalają tylko na uprawnienia użytkownika, grupy i inne, jakie znaleziono. Może to spowodować utworzenie niezręcznej kombinacji grup ...
Tak więc opracowano nową formę list kontroli dostępu (ACL). Umożliwia to określenie wielu użytkowników i wielu grup z różnymi uprawnieniami. Są one ustawiane za pomocą
setfacl
polecenia i odczytywane za pomocągetfacl
Możesz łatwo stwierdzić, czy plik ma listę ACL, patrząc na dane
ls
wyjściowe:Na
+
końcu uprawnień wskazuje ACL.źródło
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
wgetfacl
), alesetfacl
powinni sobie z tym poradzić, jeśli dodasz uprawnienia.Ale w niektórych przypadkach musisz zapytać, czy zestaw uprawnień ma jakiś sens.
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.
źródło
-wx
jest zdecydowanie dziwny.chattr +a
. I nawet bez żadnych specyficznych cech systemowych, możesz uczynić ten plik FIFO.--x
, a przez to także-wx
ma dla mnie sens dla katalogów .