Portál AbcLinuxu, 5. května 2025 23:21

Dotaz: Nerozumim souborovym pravum na Fedore 25

24.3.2017 14:15 Bill Gates
Nerozumim souborovym pravum na Fedore 25
Přečteno: 639×
Odpovědět | Admin
Ahoj, tak jsem v praci na Fedore 25 a zazivam [ironie] krasne chvile [/ironie].

1) Jen pro kontrolu...
$ ls -l | grep tmp
drwxrwxrwt   37 root root   760 Mar 24 13:57 tmp
2) Vytvorim adresar pomoci PHPkove funkce
mkdir("/tmp/ftpdown/data",0666, true)
. vysledkem je
php /opt/test/test.php 
PHP Warning:  mkdir(): Permission denied in /opt/test/test.php on line 23
Funkce mkdir vrati false.

WTF?

3) Kdo jsem?
$ whoami
uzivatel
4) Je tam ten adresář? A kdo ho vlastní?
$ cd /tmp
$ ls -l | grep ftpdown
drw-rw-r-- 2 uzivatel uzivatel 40 Mar 24 13:43 ftpdown
WTF?

3) Co je uvnitř?
$ cd ftpdown
bash: cd: ftpdown: Permission denied
WTF?

4) A jako root co?
$ su
Password: 
# whoami 
root
# cd ftpdown
# ls
# cd ..
# ls -l | grep ftpdown
drw-rw-r-- 2 uzivatel uzivatel 40 Mar 24 13:43 ftpdown
# exit
$ ls -l | grep ftpdown
drw-rw-r-- 2 uzivatel uzivatel 40 Mar 24 13:43 ftpdown
$ cd ftpdown
bash: cd: ftpdown: Permission denied
$ whoami
uzivatel
$ rmdir ftpdown
$ ls -l | grep ftpdown

No to rozhodne dava smysl ze uzivatel nemuze prejit do adresare ktery mu patri a ktery sam vytvoril (i kdyz ne uplne zcela podle zadani - mel vytvorit rekurzivne celou cestu), ale za to smazat ho muze bez problemu. To je co za skvelou featuru tohle chovani? Nebo co za novinku ve Fedore nechapu, ze mi to vubec nedava smysl? Muze me to nekdo prosim vysvetlit?

Řešení dotazu:


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

Odpovědi

24.3.2017 14:32 chrono
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prečo mód 0666 a nie mód 0777? (prípadne 0700, 0755...)

+x príznak je potrebný napr. práve pri tom príkaze cd

24.3.2017 14:49 DW
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tie prava tam blbo pouzivas Ty. Pravo x na adresari znamena ze sa don mozes vnorit, kedze si to nepovolil ani pre vlastnika tak ti to system nedovoli. Btw, rovnaky vysledok by si mal dostat na kazdom *nix systeme...
24.3.2017 16:21 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Trochu pro doplnění. Chápu právo x jako právo číst inode tedy máš-li v adresáři test objekty a,b,c tak
carbon% mkdir test
carbon% cd test 
carbon% touch a
carbon% touch b
carbon% mkdir c
carbon% cd ..
carbon% chmod 0666 test
carbon% ls -l test
ls: nelze přistoupit k 'test/a': Operace zamítnuta
ls: nelze přistoupit k 'test/b': Operace zamítnuta
ls: nelze přistoupit k 'test/c': Operace zamítnuta
celkem 0
-????????? ? ? ? ?             ? a
-????????? ? ? ? ?             ? b
d????????? ? ? ? ?             ? c
carbon% chmod 777 test
carbon% ls -l test    
celkem 0
-rw-r--r-- 1 a a 0 24. bře 16.14 a
-rw-r--r-- 1 a a 0 24. bře 16.15 b
drwxr-xr-x 1 a a 0 24. bře 16.15 c
 
Právo read umožní číst názvy v adresáři. právo x umožní číst a měnit inode.
24.3.2017 18:02 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Ne, právo x je právo vstoupit do adresáře. Kdyby bylo pro čtení inode nutné právo x, nepřečetl byste data z inode žádného nespustitelného souboru. A můžete si to vyzkoušet i v tom vašem příkladu – nechte si vypsat ls -l a uvidíte, že vám to o adresáři test vypíše i údaje uložené v inode (oprávnění, uživatele, datum vytvoření atd.). ls -l test selhává z toho důvodu, že abyste mohl přečíst data o test/a, musíte nejdřív vstoupit do adresáře test. A k tomu potřebujete právo x na test.
24.3.2017 21:16 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
ovšem pokud bych nemohl vsoupit do adresáře, tak jak se dostanu ke jménům souborům zapsaných v tom adresáři?
24.3.2017 22:19 chrono
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Názvy súborov/adresárov/... sú uložené priamo v inode adresára (a na ich prečítanie stačí +r). V tom inode adresára sú potom odkazy na inode súboru/adresára/... a až tam sú uložené informácie o veľkosti/dátumoch/... a na prístup k nim je (okrem +r) potrebné aj +x oprávnenie.

Čiže technicky áno, právo +x umožňuje čítať inode, ale špecificky inode súborov na ktoré odkazujú údaje v adresári.
25.3.2017 17:42 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
No takle jsem to myslel. Pravo r je přečíst názvy, a právo x dostanu se na inody objektů v tom konkrétním adresáři.
25.3.2017 22:40 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Akorát že to není pravda. Na inode může vést několik odkazů z různých adresářů, dokonce na něj může vést odkaz, který není v žádném adresáři (jen ve spuštěné aplikaci). Když se mají přečíst informace z toho inodu, nezkoumá se, v jakých všech adresářích je (ta informace obvykle ani není nikde uložená a musel by se procházet celý souborový systém), aby se mohla ověřit práva. A naopak bez práva x na adresáři neuděláte ani obyčejné cd do toho adresáře, a k tomu není potřeba dělat nic s inody objektů, které jsou v adresáři – ten adresář dokonce může být prázdný. Právo x opravdu znamená jen možnost vstoupit do adresáře, což je to, co v uživatelském prostoru dělá příkaz cd. Důvod, proč se nedostanete k těm inodům přes tento adresář je ten, že byste do něj nejprve musel vstoupit, abyste se k nim dostal. Nic vám ale nebrání se k nim dostat přes jinou cestu (pokud existuje).
test % mkdir -p level1/level2
test % cd level1/level2
level2 % touch file
level2 % ls -l
total 0
-rw-r--r-- 1 filip filip 0 Mar 25 22:35 file
level2 % chmod u-x ../
#adresáři level1 odeberu právo x
level2 % ls -l
total 0
-rw-r--r-- 1 filip filip 0 Mar 25 22:35 file

#a pro zajímavost
level2 % ls -l ../../
ls: cannot access ../../: Permission denied
level2 % cd ..
cd: permission denied: ..
level2 % cd ../..
cd: permission denied: ../..
level2 % cd
~ %
Jak je vidět, problém je opravdu v tom vstoupení do adresáře – pokud už v adresáři jsem nebo se do něj dostanu jinudy, právo x se mne nijak netýká.
24.3.2017 22:59 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Pro získání obsahu adresáře do něj nevstupujete, jenom přečtete obsah adresáře – k tomu potřebujete právo r. Představte si to tak, jak to bylo implementováno v prvních unixových souborových systémech – adresář je jenom zvláštní druh souboru, který má v „obsahu souboru“ uvedený seznam souborů, které jsou v tom adresáři. Když chcete číst obsah souboru (ať je to skutečný soubor nebo adresář), potřebujete k tomu právo r. Když se na soubor odkazujete pomocí cesty, musíte jít po jednotlivých adresářích – vždy vstoupit do adresáře (na to potřebujete právo x) a pak můžete zase o adresář níž nebo se dostanete ke konkrétnímu souboru. Pokud nemáte právo r na nějaký adresář, ale máte na něj právo x, můžete přečíst soubor v tom adresáři nebo vstoupit do podadresáře, pokud znáte jejich jména.
24.3.2017 15:17 jekub
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Odpovědět | | Sbalit | Link | Blokovat | Admin
odpovědi výše, já jen s troškou. Zkuste něco takového
ls -l tmp
a když už máte tu Fedoru
ll tmp
michich avatar 24.3.2017 15:45 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
ls -ld tmp
24.3.2017 16:17 DW
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
ll je alias k ls -l :D
24.3.2017 18:10 jekub
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
To neni moznyyy? Fakt? ;-)

Krome toho pouzivam jeste la a lla. Ja jen, ze je to kratsi.
k3dAR avatar 25.3.2017 01:08 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
kdyz neveris, nech si vypsat na svem systemu jake alias mas definovane ;)
alias
porad nemam telo, ale uz mam hlavu... nobody
Řešení 1× (Dušan Kreheľ)
25.3.2017 18:35 Bill Gates
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Odpovědět | | Sbalit | Link | Blokovat | Admin
takze .. shrnuto podtrzeno .. prava X k souboru znamenaji moznost ho spustit a prava X k adresari znamenaji moznost do neho vstoupit ...

To o tom adresari jsem netusil. Tak diky za pouceni :)
26.3.2017 19:16 jiwopene@gmail.com
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Odpovědět | | Sbalit | Link | Blokovat | Admin
PHP se může vykonávat pod jiným uživatelem. Na Debianu mám www-data nebo tak něco.
28.3.2017 17:45 DW
Rozbalit Rozbalit vše Re: Nerozumim souborovym pravum na Fedore 25
Njn, v tomto pripade je to jedno, ak si z toho PHP ten adresar vytvori tak vlastnik bude ten uzivatel pod ktorym ten script bezi...

Založit nové vláknoNahoru

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

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