Jak przyznać różne uprawnienia dla każdego użytkownika?

11

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ć.

trueCamelType
źródło
8
Aby uzyskać taki stopień szczegółowości uprawnień, musisz skorzystać z list kontroli dostępu (ACL). Krótki samouczek można znaleźć tutaj . Chociaż słowo ostrzeżenia, gdy zaczniesz na ścieżce ACL zamiast uprawnień, jest to bardzo śliskie nachylenie i wszystko komplikuje się naprawdę szybko z pewnymi niezamierzonymi konsekwencjami na końcu.
MelBurslan

Odpowiedzi:

19

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ą setfaclpolecenia i odczytywane za pomocągetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

Możesz łatwo stwierdzić, czy plik ma listę ACL, patrząc na dane lswyjściowe:

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

Na +końcu uprawnień wskazuje ACL.

Stephen Harris
źródło
2

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 maskw getfacl), ale setfaclpowinni 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 -wxi użytkownik 5 --xnie 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 xbitu, 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.

ilkkachu
źródło
Jeśli użytkownik może zapisywać tylko w systemie plików zamontowanym bez pozwolenia, nie może wykonać kopii, nawet jeśli mógłby wykonać oryginał, jeśli zostałyby ustawione odpowiednie uprawnienia. Również wykonanie tylko może mieć sens, jeśli chcesz uniemożliwić im szukanie exploitów. -wxjest zdecydowanie dziwny.
celtschk
1
Niektóre systemy mają mechanizm pozwalający tylko na dołączanie. Na przykład Linux chattr +a. I nawet bez żadnych specyficznych cech systemowych, możesz uczynić ten plik FIFO. --x, a przez to także -wxma dla mnie sens dla katalogów .
Random832