Richacls

Z Wikipedie, otevřené encyklopedie

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]

  1. Richacls - Native NFSv4 ACLs on Linux [online]. Dostupné online. (anglicky)