Richacls
Richacls je implementace NFSv4 ACL, která byla rozšířena o souborové masky, aby více splňovala standardní POSIX model souborových práv.[1]
Dnes nabízí komplexnější model oprávnění pro systém souborů ext4 v operačním systému Linux. Kvůli přesahu specifikace ACL v POSIXu není možné přejít zpět z Richacls bez ztráty informací. Hlavní výhodou je rozlišení mezi právy na zápis a přepsání a také mezi právy na smazání a smazání potomků. Používají se rozšířené atributy(xattrs) ext4 pro uložení ACL. Záznamy v ACL se nazývají ACE (Access Control List Entry).
Podpora v Linuxovém Kernelu
[editovat | editovat zdroj]V poslední verzi oficiálního linuxového kernelu není pro Richacls zabudována podpora. Pro zprovoznění je možné využít jednoho z následujících postupů:
- Aplikovat dodatečný patch kernelu a následně vlastní kernel zkompilovat. Patch je ke stažení na domovské stránce projektu
- Použít linuxovou distribuci, která tento patch již obsahuje, například OpenSUSE verze 11.3 a vyšší.
Na ověření, zda váš systém má podporu pro Richacls, lze ve většině případů využít následujícího příkazu do konzole:
$ cat /boot/config-`uname -r` | grep RICHACL
Výstup by měl odpovídat:
CONFIG_EXT4_FS_RICHACL=y
CONFIG_FS_RICHACL=y
Aktivace Richacls
[editovat | editovat zdroj]Jakmile máte v systému podporu Richacls, můžete je aktivovat na určitých souborových systémech. Následující příklad ukazuje aktivaci na root filesystému.
$ mount -o remount,richacl /
Ověření příkazem do konzole:
$ mount | grep " / "
a výsledek odpovídající aktivovaným Richacls:
/dev/sda1 on / type ext4 (rw,richacl)
Richacls mohou být také aktivovány permanentně přidáním parametru richacl do konkrétního záznamu v /etc/fstab.
Manipulace s ACL
[editovat | editovat zdroj]Nástroje pro manipulaci s Richacl
[editovat | editovat zdroj]Pro manipulaci s Richacl záznamy se využívá utility richacl, dostupné na domovské stránce projektu. Tímto nástrojem lze provádět většinu základních operací pro specifické soubory a složky, jako například:
- zobrazit ACL
- nastavit ACL
- změnit jednotlivá ACE
- odebrat ACL
- zobrazit aktuální oprávnění určitého uživatele nebo skupiny
Formát Richacl ACE
[editovat | editovat zdroj]Formát jednotlivých záznamů v ACL koresponduje s: <kdo>:<maska oprávnění>:< příznak>:<typ>.
Kde hodnota <kdo> může nabývat:
- ID uživatele nebo skupiny
- owner@ – vlastník
- group@ – skupina
- everyone@ – všichni
Hodnoty se symbolem @ jsou použity pro definování oprávnění pro vlastníka, vlastnící skupinu a ostatní.
<maska oprávnění>, je nastavena 16 bity oprávnění (podle NFSv4 resp. NFSv4.1 specifikace), ale pět z nich není implementováno. Význam jednotlivých bitů je popsán v následující tabulce:
| název bitu | symbol | popis |
|---|---|---|
| READ_DATA | r | Čtení |
| WRITE_DATA | w | Zápis |
| APPEND_DATA | a | Write to a file in O_APPEND mode |
| LIST_DIRECTORY | r | Zobrazení obsahu složky |
| ADD_FILE | a | Vytvoření souboru ve složce |
| ADD_SUBDIRECTORY | a | Vytvoření podsložky ve složce |
| DELETE_CHILD | d | Smazání souboru nebo složky z podsložky |
| EXECUTE | x | Spuštění souboru, Traverse a directory |
| DELETE | d | Smazání souboru samotného, bez DELETE_CHILD nastaveného u rodiče |
| READ_ATTRIBUTES | T | Načíst stat() informace objektu
Vždy povolené |
| WRITE_ATTRIBUTES | t | Nastavení atime/mtime objektu |
| READ_ACL | M | Čtení ACL objektu
Vždy povolené |
| WRITE_ACL | m | Nastavení ACL a POSIX módu objektu |
| WRITE_OWNER | o | Převzetí vlastníka objektu
Nastavení vlastnící skupiny objektu na jedno z vašeho GID |
| SYNCHRONIZE | Uloženo, ale neinterpretováno. | |
| READ_NAMED_ATTRS | ||
| WRITE_NAMED_ATTRS | ||
| WRITE_RETENTION | ||
| WRITE_RETENTION_HOLE | ||
< příznak> může nabývat hodnot:
| název příznaku | symbol příznaku | popis |
|---|---|---|
| FILE_INHERIT_ACE | f | Nové soubory podědí tyto ACE |
| DIRECTORY_INHERIT_ACE | d | Nové složky podědí tyto ACE |
| NO_PROPAGATE_INHERIT_ACE | n | |
| INHERIT_ONLY_ACE | i | |
| IDENTIFIER_GROUP | g | Dané <kdo> ID je skupinou |
| INHERITED_ACE | a |
Hodnoty <typ> jsou pouze ALLOW nebo DENY. NFSv4 specifikace používá také AUDIT a ALARM ACE typ, ty jsou akceptovány a uloženy, ale nejsou v Richacls implementovány.
DENY ACE má nejvyšší prioritu.
Příklad použití
[editovat | editovat zdroj]$ richacl --get /srv/files/exchange
/srv/files/exchange:
owner@:rwa-dtD------:fd:allow
owner@:---x---------:d:allow
powerusers:rwa----------:fdg:allow
powerusers:---x---------:dg:allow
storageadmins:rwa-dtDmo----:fdg:allow
storageadmins:---x---------:dg:allow
Výše uvedený příklad definuje takovou politiku oprávnění, která povoluje všem uživatelům ze skupiny powerusers čtení, zápis a přepis souborů v /srv/files/exchange/ a podsložkách. Dále uživatelé ve skupině powerusers mohou mazat své soubory a adresáře (včetně jejich obsahu). Navíc uživatelé skupiny storageadmins smí manipulovat s daty libovolně. Mohou také modifikovat ACL. Ostatní uživatelé nemají do daného adresáře přístup vůbec.
Tento model je nerealizovatelný za použití POSIXových ACL a to i se sticky bitem, kvůli potřebné dědičnosti práv.
Reference
[editovat | editovat zdroj]- ↑ Richacls - Native NFSv4 ACLs on Linux [online]. Dostupné online.