ACL

Listy kontroli dostępu rozszerzające klasyczne uprawnienia uniksowe o wpisy dla poszczególnych użytkowników i grup. Dają precyzyjniejszą kontrolę niż model właściciel/grupa/inni.

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.