Přesně tak. S tímhle jsem "bojoval" a nakonec jsem použil watcher.py (http://www.ictspecialista.cz/archives/824), který mi práva změní u každého souboru, který se v určitém adresáři objeví. U mě se jednalo konkrétně o adresář PUBLIC, který je sdílený se všemi uživateli ve skupině. Tzn. kopíruje se do něj, přesouvá a vytváří.
Lze poresit tak, ze vytvoris temp pro kazdy virtual a na nem uz budes mit aplikovana ACL pro dany virtual. V konfiguraci virtualu nastavis php_admin_value upload_tmp_dir /temp/addr, aby ti uploadovane dokumenty ukladal pres tento adresar. Neni to ale vsemocne, protoze joomla v minulosti obsahovala dva filemanagery ci co a jeden z nich dokazal vzit prava k souboru sam sobe (zcela ignoroval default prava nebo si zmenil masku). Vetsina redakcnich systemu s ACL nepocita, takze uzivatele (spravci webu) jsou zmateni.
Pro rucne vytvarene soubory lze pouzit prikaz "umask". Pozor na jeho trochu zvlastni syntaxi - parametry rikaji, ktera prava u novych souboru NEMAJI byt nastavena, pricemz vychozi hodnoty (tj. bez umask) jsou 666 u souboru a 777 u adresaru.
Viz treba
http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
http://floppix.ccai.com/umask.html
ACL používám na serverech, kde mi běží Samba. Díky tomu se ohledně práv chová na stanicích s Windows, jak je zvykem.
Horší je ale využitelnost ACL na desktopech s Linuxem. Existuje k tomu vůbec nějaké GUI? A že by to podporoval nějaký správce souborů si asi můžu nechat jenom zdát.
Se spravou ACL pres GUI prakticke zkusenosti nemam. Vim jen, ze Dolphin a Konqueror podporu ACL maji. Treba v Dolphinu: Properties -> Permissions -> Advanced Permissions. Myslim, ze v openSUSE je podpora ACL v defaultni instalaci. Z clanku jsem pochopil, ze v nekterych jinych distribucich se musi neco doinstalovavat.
Pouzivam a jsem spokojen, ale klade to vyssi naroky na uzivatele. Jak jsem psal vyse, redakcni systemy s tim nepocitaji a maji s tim obcas problem. V kazdem manualu mate chmod 0777 apod. coz ACL prebije. Takova joomla v podstate prepisuje sama sebe. Moodle ma pro zapis adresar bokem (mimo koren webu). Drupal potrebuje pro zapis snad jenom jeden adresar.
Trochu mi trvalo, kým som pochopil príklad na sticky bit nastavený na adresári. V texte je uvedený príklad na /tmp, ale predsa ukážka je názornejšia a nenutí rozmýšľať.
Príklad by som trošku rozšíril:
$ mkdir adresar $ sudo chown root:root adresar $ sudo chmod 1777 adresar $ cd adresar $ sudo touch soubor $ touch soubor2 $ ls -l celkem 0 total 0 -rw-r--r-- 1 root root 0 2013-03-12 15:13 soubor -rw-r--r-- 1 user user 0 2013-03-12 15:21 soubor2 $ rm soubor rm: smazat proti zápisu chráněný běžný prázdný soubor „soubor“? y rm: nelze odstranit „soubor“: Operace není povolena $ rm soubor2 $ ls -l total 0 -rw-r--r-- 1 root root 0 2013-03-12 15:13 soubor
Inak super, článok.
este by bolo dobre dat nejake priklady
ako sa menia zakladne prava pri pouziti ACL:
$ ll
total 0
-rw------- 1 user user 0 Mar 26 16:07 testfile
$
$ setfacl -m u:user:rwx testfile
$
$ ll
total 0
-rw-rwx---+ 1 user user 0 Mar 26 16:07 testfile
$
$ getfacl testfile
# file: testfile
# owner: user
# group: user
user::rw-
user:user:rwx
group::---
mask::rwx
other::---
$
ako sa meni effective mask pri zmene prav cez chmod (pripadne aj preco je to tak).
$ ll
total 0
-rw-rwx---+ 1 user user 0 Mar 26 16:15 testfile
$
$ chmod 600 testfile
$
$ getfacl testfile
# file: testfile
# owner: user
# group: user
user::rw-
user:user:rwx #effective:---
group::---
mask::---
other::---
$
zmena default prav cez setfacl (podobne pre groupu):
$ setfacl -m u::--- testfile
$ getfacl testfile
# file: testfile
# owner: user
# group: user
user::---
user:user:rwx
group::---
mask::rwx
other::---
$ ll
total 0
----rwx---+ 1 user user 0 Mar 26 16:07 testfile
$