Portál AbcLinuxu, 1. května 2025 02:55

Access Control Listy - Pokročilá práva

2.3.2006 07:36 | Přečteno: 1768×

Aneb když běžná práva nestačí.

ACL práva nastupují na scénu pokud potřebujete vyřešit práva, ale standardní metody pomocí vlastníka, skupiny a ostatních už na to nestačí. ACLka fungují téměř napříč politickým spektrem, takže jejich podpora je skoro ve všech (né-li ve všech) UNIXech resp. filesystémech.

Pomocí ACL práv se ke standardním právům přidají práva pro další uživatele nebo skupiny a také maska. Maska určuje maximální možná práva, která může dostat uživatel nebo skupina definovaná v ACL. Maska se nevztahuje na vlastníka. Změnou masky souboru můžete naráz všem definovaným ALC uživatelům a skupinám zatrhnout všechny přístupy.

Pomocí getfacl soubor vypíšete práva na soubor. Jak můžete vidět na příkladu, soubor jsem vytvořil pod uživatelem root, ostatní mají možnost pouze číst.

root@demo-141 # getfacl soubor 

# file: soubor
# owner: root
# group: other
user::rw-
group::r--              #effective:r--
mask:r--
other:r--
Teď nastavím uživateli uzivatel práva pro čtení a zápis.
root@demo-141 # setfacl -m user:uzivatel:6 soubor 
root@demo-141 # getfacl soubor 

# file: soubor
# owner: root
# group: other
user::rw-
user:uzivatel:rw-       #effective:r--
group::r--             	#effective:r--
mask:r--
other:r--
Nastavení proběhlo, ale efektivní práva jsou stále jen pro čtení a to z důvodu nastavené masky. Ponastavíme tedy masku na rw-.
root@demo-141 # setfacl -m m:6 soubor 
root@demo-141 # getfacl soubor 

# file: soubor
# owner: root
# group: other
user::rw-
user:uzivatel:rw-       #effective:rw-
group::r--              #effective:r--
mask:rw-
other:r--
Tak a teď je vidět, že efektivní práva jsou rw-, tj. je možný i zápis, a to vše bez toho, aby uzivatel soubor vlastnil, nebo měl přes svou skupinu práva na zápis.

Jak poznám, že je na souboru použito ACL?
Z dlouhé výpisu tj. příkaz ls -l.

root@demo-141 # ls -l
-rw-r--r--+  1 root     other         19 Feb 23 20:34 soubor
Koncové + značí použití ACL práv.

Jak smazat nastavené ACL?
Použitím příkazu setfacl -d ACL_zaznam soubor

root@demo-141 # getfacl soubor 
.....
user:uzivatel:rw-       #effective:rw-
user:user:rw-           #effective:rw-
.....
Takže uživatel s loginem user má aktuálně přidělená práva čtení a zápisu. Příkazem setfacl -d u:user soubor mu všechna přidělená práva odstraním a uživatel přestane existovat v ACL záznamu.

Nastavení všech práv najednou.
Pokud chcete nastavit práva souboru pomocí jednoho příkazu, je to možné...

root@demo-141 # setfacl -s user::r--,group::---,other:---,mask:rw-,user:uzivatel:rw- file 
Je to trochu tasemnice, ale celkem jasná. Pozor na zdvojené dvojtečky. Výsledek:
root@demo-141 # getfacl file 

# file: file
# owner: root
# group: other
user::r--
user:uzivatel:rw-       #effective:rw-
group::---              #effective:---
mask:rw-
other:---
Ke stejnému výsledku můžeme také dojít číselným nastavením práv.
 setfacl -s user::4,group::0,other:0,mask:6,user:uzivatel:6 file 

Přenesení práv z jednoho souboru na druhý:
Přečtená práva přes | přeneseme na vstup setfacl a nastavíme na soubor s názvem file.

root@demo-141 # getfacl soubor | setfacl -f - file 
Pokud chcete práva nejdříve uložit do souboru a pak tento soubor zvolit jako zdroj, není problém. Nejdříve přesměrujeme do souboru nastavená práva:
getfacl soubor > soubor_prav
A tyto pak aplikujeme na vybrané soubory:
root@demo-141 # setfacl -f soubor_prav soubor soubor1 soubor2 

Závěr:
Na Solarisu plně funkční, u jiných systémů je možné, že bude nutné zapnout podporu ACL při mountování filesystemu. Pokud to neuděláte, soubory budou mít pouze práva, která mají standardně a také se tak budou chovat...

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

2.3.2006 08:13 Karel Benák | skóre: 8 | blog: benyho
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Odpovědět | Sbalit | Link | Blokovat | Admin
Na Solarisu je to opravdu pohoda, bohuzel na Linuxu bez nejakeho patchovani baliku Core-utils ne. Dobra zprava pro vsechny kdo pouzivaji ruzna distra jako jsou Fedora, Mandriva nebo Debian, v nich by mel byt zmineny ACL patch aplikovan. Pokud ale pouzivate LFS ........
Láska je jako prd, když hodně tlačiš tak z toho bude ...
2.3.2006 08:34 #Tom
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Pokud ale pouzivate LFS ........
tak je to taky naprosto v pohodě, protože jde o snadnou kompilaci, jako je každá druhá. :-)
2.3.2006 19:08 Karel Benák | skóre: 8 | blog: benyho
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
A to mluvite z vlastni zkusenosti s LFS a zprovoznenim ACL pod nim?
Láska je jako prd, když hodně tlačiš tak z toho bude ...
2.3.2006 10:39 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Na Linuxu používám ACL asi šest let a nestěžuji si.
2.3.2006 08:47 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Odpovědět | Sbalit | Link | Blokovat | Admin
Máte tam chybičku, k odstranění položky ACL slouží u příkazu setfacl přepínač -x. Přepínač -d se používá, pokud chcete u adresáře pracovat s default ACL místo normálního.
2.3.2006 09:03 bee_free | skóre: 3 | blog: bee_free
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Ono je to chybička nechybička. V Solarisu přepínač -x není, ale u mého Debianu je...
2.3.2006 09:25 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Hm, jeden by si myslel, že už se vývojáři poučili z historických chyb a aspoň základní parametry základních příkazů budou fungovat všude stejně… :-(
2.3.2006 10:02 michal00 | skóre: 14 | blog: OpenStreetMap
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Odpovědět | Sbalit | Link | Blokovat | Admin
mozno tu je to spravne miesto zvidtelnit moju staru otazku: ako vynutit masku na adresar ?
2.3.2006 11:59 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Odpovědět | Sbalit | Link | Blokovat | Admin
Kam se ty ACLka ukládají ve filesystému? Zachovávají se při 'mv' apod? Zachovává je 'tar' nebo 'cpio'? Pokud se musí utility patchovat, rozbalím pak takový archiv normální nepatchovanou utilitou (samozřejmě se ztrátou ACL informace)?

A co když oddíl s ACLky namountuju pod systémem, který ACLka nepoužívá, a provádím nějaké 'mv' nebo 'cp -a'.. zachová se to, ztratí se to, nebo mi to komplet rozboří filesystém?
Táto, ty de byl? V práci, já debil.
2.3.2006 14:11 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
To jsou spíše implementační záležitosti (i když důležité).

Co se týče archívů, GNU tar je nezachovává, star ano.

ACL jsou buď uloženy přímo ve struktuře filesystému který s nimi počítá, nebo v "extended attributes" (to je případ většiny filesystémů na linuxu 2.6). Přesun v rámci filesystému není problém (to je koneckonců jen volání jádra). Kopírování problém je, pokud patřičný kopírovací program neumí s ACL pracovat (pro cp existuje patch, už to v diskusi padlo).

Pokud se filesystém namountuje pod systémem který je nepodporuje (pokud to tedy vůbec jde, tedy vesměs o ext2/ext3/reiser), tak se při manipulaci se soubory (mv, cp) mohou ACL ztratit.
3.3.2006 14:02 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: Access Control Listy - Pokročilá práva
Nelíbí se mi představa že každý soubor obsahuje ještě něco dalšího, k čemu se přistupuje naprosto JINAK než k datům toho souboru. Pro samotné řízení přístupu je to OK, ACLka zpracovává jádro a pro aplikace je to transparentní, s tím nemám problém.

Ale pro správu prostě ty ACL jsou normální součástí souboru, proto by NEMĚLY být ukládány pomocí nějakého špinavého hacku jako xattr.

To že existuje patch pro 'cp' je vcelku k ničemu, protože soubory lze kopírovat asi padesáti různými způsoby (install, cat, dd, ...).

Nebylo by výrazně jednodušší (a logičtější) kdyby kernel při ověřování přístupových práv pro soubor X (s určitou speciální kombinací masky) jednoduše otevřel soubor $X.ACL, a zpracoval jeho pravidla? Nevidím jedinnou nevýhodu tohoto řešení.
Táto, ty de byl? V práci, já debil.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.