getfacl wyświetla rozszerzone listy kontroli dostępu (ACL) plików i katalogów na Linuksie. Tam gdzie zwykłe ls -l pokazuje tylko trzy klasyczne klasy uprawnień (właściciel, grupa, reszta), ACL pozwala dokleić dodatkowe wpisy dla konkretnych użytkowników i grup. getfacl jest narzędziem do czytania tych wpisów — wypisuje je w czytelnym formacie tekstowym, który zresztą da się przekierować prosto do setfacl --restore, żeby odtworzyć uprawnienia na innym pliku czy maszynie.
Składnia i najważniejsze opcje
Podstawowa składnia: getfacl [opcje] plik...
-a,--access— pokaż tylko ACL dostępu (zwykłe uprawnienia pliku), pomijając ACL domyślne.-d,--default— pokaż wyłącznie ACL domyślne, czyli te, które katalog narzuca nowo tworzonym w nim plikom.-R,--recursive— schodź rekurencyjnie w dół drzewa katalogów.-c,--omit-header— pomiń trzylinijkowy nagłówek z nazwą pliku, właścicielem i grupą (przydatne w skryptach).-s,--skip-base— pomiń pliki, które mają tylko klasyczne uprawnienia, bez żadnych dodatkowych wpisów ACL.-n,--numeric— wypisuj numeryczne UID i GID zamiast nazw.-t,--tabular— alternatywny, tabelaryczny format wyjścia.-p,--absolute-names— nie obcinaj wiodącego/ze ścieżek.
Przykłady użycia
getfacl plik.txt— pokazuje pełne ACL pojedynczego pliku wraz z nagłówkiem.getfacl -R /var/www— rekurencyjnie wypisuje ACL całego drzewa katalogu, np. żeby zweryfikować uprawnienia projektu.getfacl -s -R /srv | grep -B1 user:— szuka tylko plików z dodatkowymi wpisami ACL, pomijając te z czystymi uprawnieniami bazowymi.getfacl katalog > acl.txt, a potemsetfacl --restore=acl.txt— zapisujesz uprawnienia do pliku i odtwarzasz je gdzie indziej.getfacl -n plik.txt— przydatne, gdy chcesz porównać UID-y między systemami, na których ten sam użytkownik ma inną nazwę.
Częste błędy i pułapki
Najczęstsza wpadka: ACL musi być w ogóle obsługiwane przez system plików i włączone w opcji montowania (acl). Na nowszych jądrach ext4 jest to domyślne, ale na starszych konfiguracjach albo egzotycznych systemach plików potrafi być wyłączone. Druga pułapka to maska — jeśli widzisz w wyniku linię mask::r-x, to ona ogranicza efektywne uprawnienia wpisów nazwanych. getfacl grzecznie dopisuje komentarz #effective:, gdy maska coś przycina, więc nie zdziw się, że nadany dostęp rwx faktycznie działa jak r-x. Pamiętaj też, że ACL domyślne (-d) mają sens wyłącznie dla katalogów — na pliku zwrócą pustkę.
Powiązane komendy: setfacl (ustawianie ACL), ls (znak + przy uprawnieniach oznacza obecność ACL), chmod, chown oraz stat.