Jakie relacje wiążą maskę ACL i standardowe uprawnienia grupy do pliku?

17

Najpierw tworzę plik i sprawdzam, czy jest to standardowe uprawnienia i wpisy ACL:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

Następnie ustawiam maskę ACL w pliku i ponownie sprawdzam, czy są to standardowe uprawnienia i wpisy ACL:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

Zauważ, że wraz z maską ACL zmieniono także standardowe uprawnienia grupy do pliku.

  1. Jakie połączenie istnieje między maską ACL a standardowym uprawnieniem grupy?
  2. Jaki jest powód sprzęgania maski ACL i uprawnień grupy plików? Jaka jest za tym logika?

Omawiane dystrybucje to Debian Linux 7.6 i CentOS 7


EDYTOWAĆ

W tym momencie chciałem tylko podzielić się niektórymi moimi odkryciami, które wymyśliłem, badając relacje między standardowymi uprawnieniami grupy plików a maską ACL. Oto obserwacje empiryczne, które znalazłem:

  1. Maskę ACL można zmienić:

    1. przez bezpośrednie ustawienie go za pomocą setfacl -m m:<perms>polecenia;
    2. zmieniając uprawnienia grupy plików za pomocą chmodpolecenia (jeśli maska ​​ACL jest już obecna; może nie być obecna, ponieważ jest opcjonalna, jeśli w pliku nie ma nazwanych uprawnień ACL użytkownika lub grupy);
    3. przez dodanie wpisu ACL nazwanego użytkownika lub grupy (maska ​​zostanie automatycznie ponownie obliczona).
  2. Maska wymusi maksymalne prawa dostępu (jeśli istnieją wpisy ACL z uprawnieniami przekraczającymi uprawnienia maski ACL) tylko wtedy, gdy maska ​​jest ustawiona bezpośrednio przez setfacl lub przez modyfikację uprawnień grupy plików za pomocą chmod (nie obliczane automatycznie). Wszelkie zmiany we wpisach ACL spowodują automatyczne ponowne obliczenie maski ACL i skuteczne wyłączenie „trybu wymuszania”.

  3. Istnieje kilka skutków ubocznych, które pośrednio wpływają na standardowe uprawnienia grupy plików podczas korzystania z list ACL:

    1. Nazwana pozycja ACL użytkownika lub grupy zastosowana do pliku może zmienić maskę ACL (zwiększyć jej uprawnienia), a tym samym efektywne uprawnienia grupy plików. Na przykład, jeśli jako właściciel pliku masz ustawione uprawnienia „rw-r - r-- jim uczniowie”, a także udzielasz uprawnienia rw użytkownikowi „jack”, w sposób pośredni przyznasz również uprawnienia rw każdemu z grupy „studentów”.
    2. Bardziej rygorystyczne (mniej uprawnień) maska ​​ACL może trwale usunąć odpowiednie standardowe uprawnienia grupy plików. Np. Jeśli masz plik ze standardowymi uprawnieniami grupy plików rw i zastosujesz do pliku maskę ACL tylko do odczytu, uprawnienia grupy zmniejszą się do tylko do odczytu. Następnie, jeśli usuniesz wszystkie rozszerzone wpisy ACL (z setfacl -bpoleceniem), uprawnienia grupy pozostaną tylko do odczytu. Dotyczy to tylko bardziej rygorystycznej maski ACL, bardziej miękka maska ​​ACL (więcej uprawnień) nie zmienia trwale uprawnień oryginalnej grupy plików po jej usunięciu.
golem
źródło
Myślę, że możesz wziąć następującą stronę w celach informacyjnych, www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/…
kundy

Odpowiedzi:

11

Nie ma sensu, jeśli uprawnienia do plików unix nie zgadzają się z wpisem acl i vice versa. W związku z tym strona podręcznika ( acl(5)) podaje, o co prosisz:

KORESPONDENCJA MIĘDZY WPISAMI ACL A bitami ZEZWOLENIA NA PLIK

Uprawnienia zdefiniowane przez listy ACL są nadzbiorem uprawnień określonych przez bity uprawnień do plików.

Istnieje zgoda między właścicielem pliku, grupą i innymi uprawnieniami a konkretnymi wpisami ACL: uprawnienia właściciela odpowiadają uprawnieniom wpisu ACL_USER_OBJ. Jeśli lista ACL ma wpis ACL_MASK, uprawnienia grupy odpowiadają uprawnieniom wpisu ACL_MASK. W przeciwnym razie, jeśli ACL nie ma wpisu ACL_MASK, uprawnienia grupy odpowiadają uprawnieniom wpisu ACL_GROUP_OBJ. Pozostałe uprawnienia odpowiadają uprawnieniom wpisu ACL_OTHER_OBJ.

Właściciel pliku, grupa i inne uprawnienia zawsze odpowiadają uprawnieniom odpowiedniego wpisu ACL. Modyfikacja bitów uprawnień do pliku powoduje modyfikację powiązanych wpisów ACL, a modyfikacja tych wpisów ACL powoduje modyfikację bitów uprawnień do plików.

Dodatek w odpowiedzi na dyskusję:

Jaki jest powód sprzęgania maski ACL i uprawnień grupy plików? Jaka jest za tym logika?

Dobre wyjaśnienie jest tutaj . Zasadniczo maska ​​jest

[...] górna granica uprawnień, które przyzna każdy wpis w klasie grupy.

Ta górna granica zapewnia, że ​​aplikacje POSIX.1, które nie są świadome list ACL, nie zaczną nagle i nieoczekiwanie przyznawać dodatkowych uprawnień, gdy listy ACL będą obsługiwane.

W minimalnych listach kontroli dostępu uprawnienia klasy grupy są identyczne z uprawnieniami grupy właściciela. W rozszerzonych listach ACL klasa grupy może zawierać wpisy dla dodatkowych użytkowników lub grup. Powoduje to problem: niektóre z tych dodatkowych wpisów mogą zawierać uprawnienia, które nie są zawarte we wpisie grupy właściciela, więc uprawnienia wejścia grupy właściciela mogą różnić się od uprawnień klasy grupy.

Ten problem rozwiązuje cnota wprowadzenia maski. Przy minimalnych listach ACL uprawnienia klasy grupy są odwzorowywane na uprawnienia do wejścia grupy posiadającej. W przypadku rozszerzonych list ACL uprawnienia klasy grupy są odwzorowywane na uprawnienia do wprowadzania maski, podczas gdy pozycja grupy właściciela wciąż definiuje uprawnienia grupy właściciela. Odwzorowanie uprawnień klasy grupowej nie jest już stałe.

przeciwdziałanie
źródło
To, co mówisz, odnosi się do następującego wyniku getfacl: user :: rw- group :: r-- other :: r-- . Te 3 wiersze zmieniłyby się, jeśli użyjesz chmodpolecenia do zmiany standardowych uprawnień i odwrotnie, gdy wykonasz powiedzmy getfacl -m u:someuser:rwx, standardowe uprawnienia właściciela pliku zostaną zmienione, a zmiana zostanie odzwierciedlona w danych ls -lwyjściowych. To wszystko prawda, ale nie rozumiem, w jaki sposób odpowiada na moje pytanie
golem
zobacz moją edycję, aby zobaczyć pełną historię
przeciwdziałanie
1
Twoja zredagowana odpowiedź mówi, że zgodnie z projektem istnieje sprzężenie między uprawnieniami grupy plików a maską ACL. Pytanie o powód sprzężenia maski ACL i uprawnień grupy plików jest wciąż aktualne. Jaka logika się za tym kryje, nie jest dla mnie jasne.
golem
1
Może być sens. To zależy od definicji i implementacji. Z definicji plik linuksowy ACL, tak jak jest teraz zaimplementowany, jest nadzbiorem standardowych uprawnień do plików, czyli je obejmuje. Nie mogą więc „zaprzeczać”. Oto przypadek użycia. Jeśli przypiszę uprawnienia rwx do „testuser” dla pliku z -rw-r--r-- 1 user useruprawnieniami początkowymi , nazwa użytkownika ACL zostanie zaakceptowana, a maska ​​ACL (wraz z uprawnieniami grupy plików) również zostanie zmieniona na rwx. --- [patrz następny komentarz jako kontynuacja]
golem
1
Czy uprawnienia rwx „testuser” są sprzeczne z nowymi -rw-rwxr-- 1 user useruprawnieniami do pliku, czy nie? Jak określić sprzeczność? Porównując uprawnienia ACL testusera ze standardowymi uprawnieniami grupy plików? Jaka logika skłoniła cię do porównania uprawnień grupowych z uprawnieniami użytkowników? Czy to nie są różne byty? Czy to nie sprzeczne z intuicją? To prawdopodobnie dla ciebie oczywiste, ale wciąż staram się to zrozumieć.
golem
3

W końcu zrozumiałem, co dokładnie się dzieje, kiedy zobaczyłem ten link Obsługa list ACL

W szczególności maski te zastępują NAZWĘ UŻYTKOWNIKA i wszystkie uprawnienia GRUPY i działają w ich miejsce. Oznacza to, że:

  1. dostosuj maskę, zmień maksymalne uprawnienia grupy,
  2. jeśli zmienisz dowolne z uprawnień grupy z obecną maską, maska ​​przyjmuje maksymalne uprawnienia grupy ze wszystkich uprawnień grupy
  3. uprawnienia do odczytu, zapisu i wykonywania w grupie są określane na podstawie maski, jeśli jest dostępna

wprowadź opis zdjęcia tutaj

Mam nadzieję, że to pomaga.

jjisnow
źródło
Bardzo przyjemne wyjaśnienie maski na podanej stronie (cytat z sekcji 27.3.3. Katalog z listą ACL dostępu ): maska ​​określa maksymalne efektywne uprawnienia dostępu dla wszystkich pozycji w klasie grupy. Dotyczy to nazwanego użytkownika, nazwanej grupy i grupy będącej właścicielem. .
patryk.beza
-1

Jaka jest za tym logika?

Logika jest całkowicie zepsuta, dlatego listy ACL POSIX są czystymi i bezużytecznymi bzdurami.

Jeśli dążyli do zachowania zgodności z aplikacjami, które nie mają pojęcia list ACL, z wyjątkiem standardowego modelu „ugo” pierwotnego systemu UNIX, tak naprawdę na początku zawiodły, ponieważ teraz każda aplikacja, która usuwa uprawnienia grupy, skutecznie wycofuje dostęp dodany przez listy ACL.

poige
źródło