Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pristupova-prava-pomoci-acl [2008/06/27 10:29] zeman Ještě úvodní odstavec. |
pristupova-prava-pomoci-acl [2017/09/30 20:20] (current) rosa [Give all permissions to all ufal/ufal_ext users] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Přístupová práva k souborům pomocí ACL ====== | ====== Přístupová práva k souborům pomocí ACL ====== | ||
- | Míra Janíček píše: | + | ACL (access control list) je způsob, jak rozšířit přístupová práva. Pro každý soubor/adresář můžeme mít kromě těch klasických tří "skupin" (u, g, o) i seznam dalších uživatelů/skupin s jejich přístupovými právy. Důležité příkazy jsou ''setfacl'' a ''getfacl''. Pěkný tutoriál je tady: |
- | <code>ACL (access control list) je zpusob, jak rozsirit pristupova prava -- pro | + | https://wiki.archlinux.org/index.php/Access_Control_Lists |
- | kazdy soubor/adresar muzes mit krome tech klasickych tri "skupin" (u, g, | + | |
- | o) i seznam dalsich uzivatelu/skupin s jejich pristupovymi pravy. Dulezite | + | |
- | prikazy jsou setfacl a getfacl. | + | |
- | Pekny tutorial (z neho jsem se to naucil) je tady:</code> | + | V kostce: |
- | http://www.vanemery.com/Linux/ACL/linux-acl.html | + | Modelová situace: mám soubor "nejaky-soubor" s právy 600, tj. vlastník (já) může rw, ostatní nic: |
- | <code>ale shrnu to v kostce, nic na tom neni. ;) | + | <code bash>$ ls -l nejaky-soubor |
+ | -rw------- 1 janicek ufal_ext 0 2008-06-26 22:14 nejaky-soubor</code> | ||
- | Modelova situace: mam soubor "nejaky-soubor" s pravy 600 (vlastnik=ja | + | Teď chci povolit jednomu dalšímu uživateli (ale ne celé skupině ''ufal_ext'') čtení toho souboru, to udělám pomocí ''setfacl'': |
- | muze rw, ostatni nic): | + | |
- | $ ls -l nejaky-soubor | + | <code bash>$ setfacl -m u:zeman:r nejaky-soubor</code> |
- | -rw------- 1 janicek ufal_ext 0 2008-06-26 22:14 nejaky-soubor | + | |
- | Ted chci povolit treba tobe cteni toho souboru, to udelam pomoci | + | Přepínač "-m" znamená "modify", v tomhle případě přidání další položky, je to uživatel (to je to "u:") zeman a jeho práva. Když pak pustím na ten soubor ls -l, tak těsně za těmi devíti políčky, před počtem linků, sedí "+". Tím dává ls na vědomí, že ten soubor má nějaký ACL a že to je tedy s právy komplikovanější. |
- | setfacl: | + | |
- | $ setfacl -m u:zeman:r nejaky-soubor | + | <code bash>$ ls -l nejaky-soubor |
+ | -rw-r-----+ 1 janicek ufal_ext 0 2008-06-26 22:14 nejaky-soubor</code> | ||
- | Prepinac "-m" znamena "modify", v tomhle pripade pridani dalsi polozky, | + | Pro lepší výpis práv musíme použít ''getfacl'': |
- | je to uzivatel (to je to "u:") zeman, a jeho prava. | + | |
- | Vsimni si, ze kdyz pak pustis na ten soubor ls -l, tak tesne za temi | + | <code bash>$ getfacl nejaky-soubor |
- | deviti policky, pred poctem linku, sedi "+" -- tim ti dava ls na vedomi, | + | |
- | ze ten soubor ma nejaky ACL a ze to je tedy s pravy komplikovanejsi. | + | |
- | + | ||
- | $ ls -l nejaky-soubor | + | |
- | -rw-r-----+ 1 janicek ufal_ext 0 2008-06-26 22:14 nejaky-soubor | + | |
- | + | ||
- | Pro lepsi vypis musime pouzit getfacl: | + | |
- | + | ||
- | $ getfacl nejaky-soubor | + | |
# file: nejaky-soubor | # file: nejaky-soubor | ||
# owner: janicek | # owner: janicek | ||
Line 45: | Line 31: | ||
group::--- | group::--- | ||
mask::r-- | mask::r-- | ||
- | other::--- | + | other::---</code> |
- | Ctvrty radek ("mask") rika, jaka nejlepsi prava muze kdokoliv v ACL (cili | + | Čtvrtý řádek ("mask") říká, jaká nejlepší práva může kdokoliv v ACL (čili vyjma tradičních u, g, o) dostat, a ls -l pak ve výpisu uvádí právě tenhle údaj místo práv pro skupinu. |
- | vyjma tradicnich u, g, o) dostat, a ls -l pak ve vypisu uvadi prave tenhle | + | |
- | udaj misto prav pro skupinu souboru. | + | |
- | Cili kdybych chtel povolit skupine ufal_ext pristup r-x k adresari "en" | + | Čili kdybych chtěl povolit skupině ufal_ext přístup r-x k adresáři "en" v /net/data/conll/2007, tak by mělo stačit dát |
- | v /export/data/conll/2007, tak by melo stacit dat | + | |
- | $ setfacl -m g:ufal_ext:rx /export/data/conll/2007/en | + | <code bash>$ setfacl -m g:ufal_ext:rx /net/data/conll/2007/en</code> |
- | a pripadne totez vevnitr, jestli je to tam podobne. | + | a případně totéž vevnitř, jestli je to tam podobné. |
- | </code> | + | |
===== Jak přidat rekurzivně právo "x" adresářům, ale ne souborům? ===== | ===== Jak přidat rekurzivně právo "x" adresářům, ale ne souborům? ===== | ||
<code bash>find -type d -exec chmod o+rx {} \;</code> | <code bash>find -type d -exec chmod o+rx {} \;</code> | ||
+ | |||
+ | Pokud bych chtěl přidat právo "x" na adresáře a právo "r" na adresáře i soubory skupině ufal_ext pomocí ACL: | ||
+ | |||
+ | <code bash>find -type d -exec setfacl -m g:ufal_ext:rx {} \; | ||
+ | setfacl -R g:ufal_ext:r *</code> | ||
+ | |||
+ | ===== Jak odebrat rekurzivně právo zápisu pro kohokoli? ===== | ||
+ | |||
+ | Revoking write access from all groups and all named users (using the effective rights mask): | ||
+ | |||
+ | <code bash>setfacl -R -m m::rx .</code> | ||
+ | |||
+ | ===== Give all permissions to all ufal/ufal_ext users ===== | ||
+ | |||
+ | This is the preferred way of giving all rights to "everyone". It is more secure than simple "chmod a+rwx", which also includes e.g. the "www-data" group (i.e. access from the web). | ||
+ | |||
+ | <code bash>setfacl -m g:ufal:rwx,g:ufal_ext:rwx FILE</code> | ||