Access Control Listy - Pokročilá práva

  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.

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...