W jaki sposób przetwarzane są uprawnienia ACL i w jakiej kolejności dotyczą danej akcji użytkownika?

21

CentOS 6.4

Próbuję lepiej zrozumieć, w jaki sposób przetwarzane są reguły ACL systemu plików i w jakiej kolejności mają zastosowanie reguły ACL.

Załóżmy na przykład, że użytkownicy bob i Joe należą do grupy o nazwie sprzedaż. Powiedzmy też, że mam dokument sprzedaży z następującymi szczegółami:

[root@Maui ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---

Moje pytanie brzmi: w jaki sposób przetwarzane są uprawnienia w takim przykładzie i jakie uprawnienia dostępu mają pierwszeństwo?

Czy istnieje tylko wyszukiwanie odgórne i która reguła pasuje jako pierwsza, to ta, która ma zastosowanie?

A może Linux wymusza dostęp na podstawie najbardziej szczegółowej reguły dla danego użytkownika? A może pierwszeństwo ma najbardziej restrykcyjna i obowiązująca zasada?

Mike B.
źródło

Odpowiedzi:

15

Jest to rodzaj szerokiego tematu i trochę za dużo, by go tutaj omówić. Odsyłam cię do list kontroli dostępu POSIX na białej księdze Linuksa przygotowanej przez Andreasa Grünbachera z SuSE Labs. Wykonuje całkiem dobrą robotę, obejmując temat i rozkładając go, aby zrozumieć, jak działają listy ACL.

Twój przykład

Teraz spójrzmy na twój przykład i podziel go.

  • grupa (sprzedaż)
  • członkowie grupy sprzedaży (Bob, Joe)

Teraz podzielmy uprawnienia do pliku /home/foo/docs/foo.txt. Listy ACL zawierają również te same uprawnienia, które większość osób powinna znać na Uniksie, głównie Użytkownik, Grupa i Inne bity. Najpierw wyciągnijmy je.

user:: r--
group::r--
other::---

Zwykle wyglądałyby tak ls -l:

$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt

Możesz zobaczyć, kto jest właścicielem pliku i jaka jest grupa za pomocą tych linii ACL:

# owner: jane
# group: executives

Teraz przechodzimy do drobiazgowej listy ACL:

user:bob:rw-
user:joe:rwx
group:sales:rwx

To pokazuje, że użytkownik bobma rw, a użytkownik joema rwx. Istnieje również grupa, która ma rwxpodobny do Joe. Uprawnienia te wyglądają tak, jakby kolumna użytkownika w naszych ls -lwynikach miała 3 właścicieli (Jane, Bob i Joe), a także 2 grupy (kierownictwo i sprzedaż). Nie ma innego rozróżnienia niż tylko listy ACL.

Wreszcie masklinia:

mask::rwx

W tym przypadku niczego nie maskujemy, jest szeroko otwarty. Więc jeśli użytkownicy mają bob i Joe mają następujące linie:

user:bob:rw-
user:joe:rwx

To są ich skuteczne uprawnienia. Gdyby maska ​​była taka:

mask::r-x

Wtedy ich efektywne uprawnienia będą wyglądały następująco:

user:bob:rw-    # effective:r--
user:joe:rwx    # effective:r-x

Jest to potężny mechanizm ograniczania uprawnień przyznawanych w sposób hurtowy.

UWAGA: Efektywna maska ​​uprawnień nie wpływa na właściciela pliku i uprawnienia innych osób; wszystkie inne wpisy są! Jeśli chodzi o maskę, uprawnienia ACL są obywatelami drugiej kategorii w porównaniu z tradycyjnymi uprawnieniami uniksowymi.

Referencje

slm
źródło