Wikipedista:Wolf CZ/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. Proto 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řiznak>:<typ>.
Kde hodnota <kdo> může nabývat:
- ID uživatele nebo skupiny
- vlastník@
- skupina@
- 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.