getfacl

Wyświetla rozszerzone listy kontroli dostępu (ACL) pliku lub katalogu.

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 potem setfacl --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.