
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.