ACL (Access Control List) to lista wpisów kontroli dostępu, która rozszerza klasyczny model uprawnień uniksowych — czyli ten słynny zestaw user / group / other z rwx — o reguły przypisane konkretnym użytkownikom i grupom. Dzięki temu na jednym pliku albo katalogu możesz nadać dostęp dziesięciu różnym osobom z różnymi prawami, nie naginając systemu grup i nie robiąc gimnastyki z chmod 777, która zwykle kończy się dziurą w bezpieczeństwie.
Klasyczny model uniksowy ma jedną poważną wadę: plik ma dokładnie jednego właściciela i dokładnie jedną grupę. Jeśli chcesz, żeby Ania miała zapis, Bartek tylko odczyt, a reszta nic — w czystym rwx nie ma jak tego zapisać bez tworzenia sztucznych grup. ACL rozwiązuje to wprost: do pliku doczepiasz dodatkowe wpisy w stylu „użytkownik anna: rw-” i „użytkownik bartek: r–”. System operacyjny sprawdza je przy każdej próbie dostępu, obok standardowych bitów uprawnień.
Jak to wygląda w praktyce
Na Linuksie obsługują to dwa polecenia z pakietu acl: getfacl (pokaż) i setfacl (ustaw). System plików musi być zamontowany z opcją acl — w przypadku ext4 czy XFS jest to dziś domyślne, więc rzadko trzeba cokolwiek dłubać w /etc/fstab.
Przykład z życia: masz katalog /srv/projekt i chcesz dać użytkownikowi anna pełen dostęp tylko do niego.
- Nadanie praw:
setfacl -m u:anna:rwx /srv/projekt - Podejrzenie wpisów:
getfacl /srv/projekt - Usunięcie konkretnego wpisu:
setfacl -x u:anna /srv/projekt
Bardzo przydatna jest też domyślna ACL (default ACL) na katalogu, ustawiana flagą -d. Sprawia, że każdy nowy plik tworzony wewnątrz dziedziczy zadane uprawnienia — idealne dla współdzielonych folderów zespołowych, gdzie nie chcesz ręcznie poprawiać praw po każdym touch.
Na co uważać
Pierwsza pułapka: gdy plik ma ACL, polecenie ls -l dokleja znak + na końcu uprawnień (np. -rw-r--r--+). Łatwo to przeoczyć i potem się dziwić, „dlaczego ten ktoś ma dostęp, skoro chmod mówi inaczej”. Druga sprawa to mask — wpis maski ogranicza efektywne prawa nazwanych użytkowników i grup. Możesz nadać komuś rwx, a maska i tak utnie to do r--, więc zawsze sprawdzaj efektywne uprawnienia w getfacl (kolumna effective). Trzeci klasyk: ACL bywają gubione przy kopiowaniu — cp wymaga -p albo --preserve=all, a do backupów używaj rsync -A lub tar --acls, inaczej cała precyzyjna konfiguracja wyparuje.
Pojęcia powiązane: uprawnienia POSIX (rwx), chmod, chown, umask, default ACL, sticky bit, oraz ACL w innych światach — sieciowe (np. na routerach Cisco) i w systemach plików NFSv4 czy NTFS, gdzie model jest bogatszy niż POSIX.