Access Control Lists na NFSv4

From MetaCentrum
Jump to: navigation, search

(English version)

Access Control Lists na NFSv4 svazcích umožňují detailní nastavení přístupových práv k souborům a adresářům. Tento návod předpokládá u čtenáře znalost standardních POSIX přístupových práv.


Warning.gif WARNING: Tento návod popisuje jednu z možností, jak sdílet data mezi uživateli. Pamatujte, že sdílení hesla není povoleno! Prohlášení uživatele MetaCentra"'


Ke sdílení dat lze také využít založení vlastní skupiny.

Nástroj pro nastavování ACL

K dispozici jsou programy nfs4_getfacl, nfs4_setfacl a nfs4_editfacl v rámci modulu nfs4acl - module add nfs4acl

Obecně je nezbytné mít na paměti, že:

  • po manipulaci s ACL na úrovni NFSv4 již není vhodné používat na dané soubory a adresáře standardní POSIXový příkaz chmod, změní nastavení ACL nechtěným způsobem,
  • příkaz ls -l neukazuje při nastavených ACL úplně správná práva, je nutno použít nfs4_getfacl.

Důrazně doporučujeme nastavování přístupu podle POSIXu a pomocí NFSv4 ACL nemíchat (například důsledně vyčlenit adresář, ve kterém používáte NFSv4 ACL).

Výpis ACL

  • Program nfs4_getfacl
  • Použití: nfs4_getfacl /storage/home/login/cesta/soubor
$ nfs4_getfacl /storage/home/xhejtman/c
A::OWNER@:rtTcCy
A::GROUP@:rtcy
A::EVERYONE@:rtcy
  • Význam jednotlivých polí <typ>:<příznaky>:<principál>:<oprávnění>
  • Význam je detailně popsán v manuálové stránce nfs4_acl, zde uvádíme běžné možnosti.
    • Typ
      • A - povolit (allow)
      • D - zakázat (deny)
        • D je standardní politika pro vše, co není explicitně povoleno, obvykle není třeba D pravidla psát explicitně. Pokud se chystáte ke složitějším konstrukcím kombinujícím A a D pravidla (výjimky ze skupin a podobně), prostudujte nfs4_acl(5).
    • Příznaky
      • 'f' dědit ACL na soubory (u adresářů)
      • 'd' dědit ACL na adresáře (u adresářů)
      • 'g' principál je skupina
    • Principál
      • jméno uživatele nebo skupiny, např. xhejtman@META
      • speciální OWNER@, GROUP@, EVERYONE@, kteří odpovídají standardním unixovým User/Group/Other
    • Oprávnění
      • 'r' čtení souboru / výpis adresáře
      • 'w' zápis do souboru / založení souboru v adresáři
      • 'a' připisování do souboru / založení podadresáře
      • 'x' spuštění
      • 'd' smazání
      • 'D' smazání podadresáře nebo souboru
      • 't' čtení atributů
      • 'T' zápis atributů
      • 'n' čtení pojmenovaných atributů
      • 'N' zápis pojmenovaných atributů
      • 'c' čtení ACL
      • 'C' zápis ACL
      • 'o' změna vlastníka souboru nebo adresáře
      • 'y' umožní synchronizované čtení a zápis dat z/na server
    • Při nastavování práv lze používat zkratky 'R', 'W' a 'X' pro obecné čtení, zápis a spouštění. Ty se expandují na detailní seznamy jako výše (detaily v manuálu nfs4_setfacl(1)):
      • 'R' = rntcy
      • 'W' = watTNcCy (pro adresáře navíc D)
      • 'X' = xtcy

Nastavení ACL

  • Doporučovaná cesta: nfs4_editfacl spustí textový editor pro editaci práv (podle nastavení proměnné EDITOR)
  • Použití: nfs4_editfacl /storage/home/login/cesta/soubor
    • Přidání konkrétního ACL se provede prostým přidáním řádku, odstranění ACL je naopak provedeno prostým odstraněním řádku, řádky lze libovolně editovat.
    • Po editaci práv doporučujeme zkontrolovat, že se operace provedla (pomocí nfs4_getfacl nebo se opět podívat editorem). Nastavovací programy zásadně neumí vypsat, že něco nelze, pouze tiše neudělají nic. Některá práva nemá uživatel právo změnit, například uživatel nemůže svému souboru povolit změnu vlastníka.
  • Z příkazové řádky: programem nfs4_setfacl
    • nfs4_editfacl je zkratkou pro nfs4_setfacl -e
    • jinak ovšem nfs4_setfacl spíše nedoporučujeme, použití voleb -s, -a je značně neintuitivní
  • Přidání práva čtení a zápisu na soubor:
$ nfs4_setfacl -e /storage/home/xhejtman/c
 … editace v textu…
A::OWNER@:rtTcCy
A::antos@META:rwatcy
A::GROUP@:rtcy
A::EVERYONE@:rtcy

Příklady

Nastavení práv interaktivně

Nejjednodušeji lze nastavit práva pro nějaký adresář takto:

$ nfs4_setfacl -e /storage/home/xhejtman/xxx

Tento příkaz otevře v textovém editoru vi soubor s právy k zadanému adresáři. Do něj pak stačí dopsat řádek (nejprve zmáčknout klávesu i pro editaci):

A::jeronimo@META:RWX

Soubor pak uložte: nejprve klávesou Esc, potom zadejte :wq a Enter.

Nastavení práv v úloze

Nejprve je třeba si připravit soubor se specifikací práv (ACL), který potom použijeme na nastavení práv v dávce:

$ nfs4_getfacl  . >acl_spec # soucasna prava
$ sed -n 's/^A::OWNER@:/A::jeronimo@META:/p' acl_spec >>acl_spec # stejna pro kolegu

Toto nastaví uživateli jeronimo@META práva stejná, jako má vlastník adresáře. Ověření můžeme provést následovně:

$ cat acl_spec
A::OWNER@:rwaDxtTcCy
A::jeronimo@META:rwaDxtTcCy
A::GROUP@:rxtcy
A::EVERYONE@:rxtcy

Aplikovat soubor s ACL (acl_spec) na adresář nebo soubory pak můžeme takto:

$ nfs4_setfacl -R -S acl_spec dirs... files...