Proč potřebujeme seznamy ACL?
Každý soubor na libovolném souborovém systému UNIX bude mít vlastníka/skupinu a sadu oprávnění. Představte si případ, kdy více uživatelů potřebuje přístup ke stejnému souboru a uživatelé jsou z různých skupin. Seznamy řízení přístupu k souborům (FACL) nebo jednoduše ACL jsou seznamem dalších uživatelů/skupin a jejich oprávnění k souboru.
Jak zjistit, kdy je k souboru připojen ACL
Je velmi snadné zjistit, kdy je k souboru připojen ACL. ls -l příkaz vytvoří výstup, jak je ukázáno níže.
# ls -l -rw-r--r-+ 1 root root 0 Sep 19 14:41 file
Všimněte si + podepsat na konci oprávnění. Tím potvrdíte, že k souboru je připojen ACL.
Zobrazení seznamů ACL
Chcete-li zobrazit podrobné informace ACL o souboru, použijte getfacl příkaz.
# getfacl /tmp/test # file: test # owner: root # group: root user::rw- user:john:rw- user:sam:rwx group::r-- mask::rwx other:---
Všimněte si 3 různých uživatelů: linky. Na prvním řádku jsou uvedena standardní oprávnění vlastníka souboru. Další 2 uživatelská oprávnění jsou individuální oprávnění pro uživatele john a sam. Pole masky zde platí pouze pro další oprávnění, která jsme uživateli a skupinám udělili. Pokud je maska nastavena na rwx, budou oprávnění ke čtení, zápisu a spouštění udělena dalším uživatelům/skupinám. Pokud je maska nastavena na r-x, oprávnění k zápisu nebude uděleno dalším uživatelům/skupinám. Obecně platí, že NE nastavte masku na cokoli jiného než rwx. Hodnota masky nemá vliv na standardní oprávnění uživatele/skupiny/ostatní v systému UNIX.
Soubor bez ACL
Pokud spustíte příkaz getfacl na souboru bez ACL, další řádky „user:“ a „mask“ se nezobrazí a zobrazí se standardní oprávnění k souboru.
# getfacl test # file: test # owner: root # group: root user::rw- group::r-- other::r--
Vytváření a správa FACL
setfacl příkaz slouží k nastavení ACL na daný soubor. Chcete-li poskytnout rw přístup uživateli john k souboru /tmp/test:
# setfacl -m u:john:rw /tmp/test
Volba -m říká setfacl, aby upravil ACL v souborech uvedených v příkazovém řádku. Místo uživatele john můžeme mít skupinu, která má konkrétní oprávnění k souboru:
# setfacl -m g:accounts:rw /tmp/test
FACL pro více uživatelů a skupin lze také nastavit jediným příkazem:
# setfacl -m u:john:rw,g:accounts:rwx /tmp/test
Výchozí seznamy FACL v adresářích
Výchozí seznamy ACL se vytvářejí pouze v adresářích. Když nastavíte výchozí ACL na adresáře, všechny soubory vytvořené v tomto adresáři budou mít také automaticky přiřazeny výchozí FACL.
Chcete-li vytvořit výchozí FACL v adresáři:
# setfacl -m default:u:john:rw /accounts
# getfacl accounts/ # file: accounts/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:john:rw- default:group::r-x default:mask::rwx default:other::r-x
Nyní vytvořte nový soubor v adresáři účtů a uveďte FACL v souboru:
# touch /accounts/test # getfacl test # file: test # owner: root # group: root user::rw- user:john:rw- group::r-x #effective:r-- mask::rw- other::r--
Odebrání FACL
Chcete-li odstranit FACL, použijte příkaz setfacl s volbou -x :
# setfacl -x u:john /tmp/test
Výše uvedený příkaz odebere ACL pro uživatele john ze souboru /tmp/test. ACL pro ostatní uživatele/skupiny, pokud nějaké zůstanou nedotčeny.
K odstranění všech ACL přidružených k souboru použijte volbu -b s setfacl :
# setfacl -b /tmp/test
Zálohování FACL
Zálohovací software často nemusí zkopírovat metadata související s FACL na soubory. V takovém případě možná budete chtít zálohovat informace FACL na soubory. Nyní lze FACL na všech souborech v adresáři (včetně všech podadresářů) zkopírovat do jednoho souboru.
# cd /accounts # getfacl -R * > accounts_facl ( -R -> recursive )
Obnovení FACL
Když obnovíte soubory v adresáři /accounts, budete muset obnovit FACL spojené se soubory v tomto adresáři. K tomu použijte záložní soubor FACL accounts_facl spolu s –obnovit možnost :
# setfacl --restore=accounts_facl