ACL – listy kontroli dostępuACL – listy kontroli dostępu

ACL – listy kontroli dostępu do plików, czyli uprawnienia rozszerzone

Standardowe uprawnienia dla plików w systemie Linux wystarczają, gdy pliki są używane tylko przez jednego właściciela i jedną grupę użytkowników. Czasami wymagane jest jednak, aby dostęp do plików był możliwy z różnymi zestawami uprawnień dla wielu różnych użytkowników i grup. Dzięki listom fACL można nadawać takie uprawnienia, używając tych samych flag, które są stosowane w przypadku zwykłych uprawnień do plików, czyli odczytu, zapisu i wykonania.

Standardowe uprawnienia dla plików w systemie Linux wystarczają, gdy pliki są używane tylko przez jednego właściciela i jedną grupę użytkowników. Czasami wymagane jest jednak, aby dostęp do plików był możliwy z różnymi zestawami uprawnień dla wielu różnych użytkowników i grup. Dzięki listom fACL można nadawać takie uprawnienia, używając tych samych flag, które są stosowane w przypadku zwykłych uprawnień do plików, czyli odczytu, zapisu i wykonania.

Użytkownicy mogą ustawiać ACL na plikach i katalogach, których są właścicielami. Uprzywilejowani użytkownicy mogą ustawić ACL na dowolnym pliku lub katalogu. Nowe pliki i podkatalogi automatycznie dziedziczą ustawienia ACL z domyślnego ustawienia ACL katalogu nadrzędnego, jeśli katalog posiada przypisane ustawienia domyślne.

Aby ACL działał poprawnie, systemy plików (ext3, ext4, XFS) muszą być montowane z włączoną obsługą Filesystem Access Control List.

Wyświetlanie ACL

Aby dowiedzieć się, czy plik lub katalog posiadają przypisane ACLe, wystarczy wykonać polecenie ls -l:

[eurolinux@el83 acl]$ ls -l
total 0
drwxrwx---+ 2 eurolinux eurolinux 6 Jul 6 14:04 katalog
-rw-rw-r--. 1 eurolinux eurolinux 0 Jul 6 14:02 plik

W powyższym przypadku znak plus informuje o przypisanych do katalogu listach ACL.

Aby wyświetlić te ustawienia, należy użyć polecenia getfacl:

[eurolinux@el83 acl]$ getfacl katalog
# file: katalog
# owner: eurolinux
# group: eurolinux
user::rwx
user:eurolinux:rwx
user:eurodb:r-x
group::rwx
group:eurolinux:rwx
mask::rwx
other::---
default:user::rwx
default:user:eurolinux:rwx
default:user:eurodb:r-x
default:group::rwx
default:mask::rwx
default:other::---

Jeżeli plik nie posiada przypisanych ACL, to polecenie getfacl wyświetli standardowe uprawnienia:

[eurolinux@el83 acl]$ getfacl plik
# file: plik
# owner: eurolinux
# group: eurolinux
user::rw-
group::rw-
other::r--

Nadawanie uprawnień

Nadawanie uprawnień dla użytkownika:

setfacl -m u:nazwa_użytkownika:uprawnienia /ścieżka/do/pliku

Nadawanie uprawnień dla grupy:

setfacl -m g:nazwa_grupy:uprawnienia /ścieżka/do/pliku

Usunięcie konkretnego wpisu:

setfacl -x "wpis" /ścieżka/do/pliku

Usunięcie wszystkich wpisów ACL:

setfacl -b /ścieżka/do/pliku

Połączenie kilku wpisów w jednym poleceniu:

setfacl -Rm g:nazwa_grupy:rX,u:nazwa_użytkownika,rwX /ścieżka/do/katalogu

Użycie opcji -R skutkuje rekurencyjnym zastosowaniem ustawień ACL dla katalogu. Uprawnienie „duże X” w połączeniu z rekurencją sprawi, że pliki z ustawionym uprawnieniem wykonania zachowają je, a katalogi otrzymają uprawnienie x, aby umożliwić ich przeszukiwanie.

Ograniczenie dostępu do katalogu dla wszystkich innych użytkowników:

setfacl -Rm o::-,d:o::- /ścieżka/do/katalogu

Wyjście z polecenia getfacl może być użyte jako wejście do setfacl dla przywrócenia ustawień ACL w nowej lokalizacji. Można go też użyć w celu skopiowania ACLi ze źródłowego pliku lub katalogu i zapisania ich w nowym pliku, z możliwością wykorzystania jako backupu.

Dodatkową właściwością, jaką można określić, jest wartość domyślna. Ustawiona dla katalogu spowoduje, iż wszystkie pliki w nim tworzone, będą posiadały konkretne uprawnienia domyślne. Nadanie tych uprawnień nie będzie miało wpływu na uprawnienia istniejących już w katalogu plików, a jedynie na te, które są nowo tworzone.

Deklarowanie uprawnień domyślnych dla użytkownika i grupy jest poprzedzane parametrem „d”:

setfacl -Rm d:u:nazwa_użytkownika,rwX,d:g:nazwa_grupy:rX /ścieżka/do/katalogu

Maska uprawnień efektywnych

Maska definiuje maksymalne uprawnienia, które można przyznać określonym użytkownikom, właścicielom grup i określonym grupom. Nie ogranicza ona uprawnień właściciela pliku ani innych użytkowników.

Maskę można podejrzeć poleceniem getfacl i ustawić za pomocą setfacl. Może być też dziedziczona z domyślnego ustawienia maski katalogu nadrzędnego.

Przykład ustawienia maski na katalogu:

setfacl -Rm m:r katalog

Podsumowanie

Jądro systemu EuroLinux 8 zapewnia obsługę Filesystem Access Control List również dla systemów plików eksportowanych przez NFS i Sambę. Obsługa ACL jest w EuroLinux aktywowana domyślnie i uzupełnia braki w tradycyjnym modelu uprawnień, spełniając rolę dodatkowej, opcjonalnej warstwy zarządzania.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.