Takže po zvažení kometárov pri prvom članku som sa rozhodol že napíšem i članok o prístupovích právach zameraný na : statický príznak v suboroch, suid a sgid, implicitné práva + umask.
Tak začnem tým ako nastaviť súbor s príznakom "statický".
Týmto nastavením nedovolíme užívatelovy zmazať súbory v adresáry ktoré mu nepatria (čiže patria iním userom prípadne root-ovy).
Toto nastavenie sa prevádza príkazom :
chmod +t
tento príznak sa označije ako statický bit.
socket@blackbox:~/Desktop$ ls -ld statický_bit
drwxr-xr-x 2 socket socket 4096 2007-11-06 14:45 statický_bit
socket@blackbox:~/Desktop$ chmod +t statický_bit
socket@blackbox:~/Desktop$ ls -ld statický_bit
drwxr-xr-t 2 socket socket 4096 2007-11-06 14:45 statický_bit
Všimnite si že nastavenie príznaku je indikované znakom t na poslednom mieste v
zozname práv.
Teraz je príznak nastavený a užívatelia nebudú môcť mazať súbory ktoré im nepatria.
test@blackbox:~/Desktop$ cd statický_bit
test@blackbox:~/Desktop/statický_bit$ ls -l
celkom 1
-rw-r--r-- 1 socket socket 0 2007-11-06 14:45 subor
test@blackbox:~/Desktop/statický_bit$ rm -f subor
rm : cannot unlink 'subor' : Operation not permitted
Po nastavení príznaku statický nemôže užívatel test zmazať subor užívatela socket (ale stale by socket mohol zmazať vlastný subor).
socket@blackbox:~/Desktop/statický_bit$ ls -l
celkom 1
-rw-r--r-- 1 socket socket 0 2007-11-06 14:45 subor
socket@blackbox:~/Desktop/statický_bit$ rm -f subor
socket@blackbox:~/Desktop/statický_bit$ ls -l
celkom 0
Klasickým príkladom adresára s nasatveným statickým príznakom je adresár /tmp,ktorý
všeci užívatelia používajú k odkladaniu dočasných dát (napr. cache z netu).
Všetci užívatelia tam môžu vytvárať súbory a adresáre ale mazať môžu len tie, ktoré im patria :
socket@blackbox:/$ ls -ld /tmp
drwxrwxrwt 15 root root 4096 2007-11-06 14:45 /tmp
Teraz prejde ku suid a sgid.
Okrem príznakov čítania (r), zápisu (w), spustenia (x) a statického bitu (t) existujú ešte dalšie dva príznaky, ktoré je možné u súborov nastaviť.
Prvím z nich je príznak set-user-id, skrátene iba suid, ktorý zpôsobí, že spustený program beží s právy jeho vlastníka bez ohladu na to, kto ho spustil.
Tento príznak sa nastavuje takto :
blackbox:/home/socket/Desktop/adresár# ls -l a
-rw-r--r-- 1 socket socket 0 2007-11-06 15:16 a
blackbox:/home/socket/Desktop/adresár# chmod u+s a
blackbox:/home/socket/Desktop/adresár# ls -l a
-rwSr--r-- 1 socket socket 0 2007-11-06 15:16 a
Hodnota S na mieste spustitelného príznaku užívatela indikuje nastavenie suid príznaku.
Podobne existuje príznak set-group-id (skrátene iba sgid), ktorý spôsobí že program pobeží jako člen skupiny vlastniacej súbor bez ohladu na to, kto program spustil.
Príznak sa nastavuje podobne :
blackbox:/home/socket/Desktop/adresár# ls -l b
-rw-r--r-- 1 socket socket 0 2007-11-06 15:23 b
blackbox:/home/socket/Desktop/adresár# chmod g+s b
blackbox:/home/socket/Desktop/adresár# ls -l b
-rw-r-Sr-- 1 socket socket 0 2007-11-06 15:23 b
Takže dúfam že ste pochopili zatial vššetko teraz si niečo povieme o umask.
Ked užívatel vytvorí súbor alebo adresár, budú mu nastavené implicitné práva:
blackbox:/home/socket/Desktop/adresár# touch a.txt
blackbox:/home/socket/Desktop/adresár# mkdir priecinok_a
blackbox:/home/socket/Desktop/adresár# ls -l
celkom 4
-rw-rw-r-- 1 root root 0 2007-11-06 15:30 a.txt
drwxrwxr-x 2 root root 4096 2007-11-06 15:30 priecinok_a
Všimnite si že implicitné práva užívatela socket sú :
- 644 (rw-rw-r--) pre súbory
- 775 (rwxrwxr-x) pre adresáre
Implicitné hodnoty prístupovích práv sa nastavujú podla hodnoty umask danho užívatela.
Táto hodnota slúži k odmaskovaniu bitu z "najotvorenejšieho" nastavenia práv, ktoré je 666 pre súbory a 777 pre adresáre.
Hodnotu tejto masky zistíme príkazom umask :
blackbox:/home/socket/Desktop/adresár# umask
002
Užívatel socket má teda masku umask nastavenú na hodnotu 002.
Jednoduchá metóda ako zistiť implicitné pridelené práva pri vytvorení suboru alebo adresára, spočíva v odpočítaní hodnoty masky od plného pridelení práv :
Súbory 666 Adresáre 777
..............-002 (umask) ..................... -002 (umask)
...............664 ................................ 775
Nastavenie implicitných práv môžeme zmaniť príkazom umask. Najstriktnejšim nastavením dostaneme hodnotu
777 :
socket@blackbox:~/Desktop/adresár$ umask 777
socket@blackbox:~/Desktop/adresár$ touch c
socket@blackbox:~/Desktop/adresár$ ls -l
celkom 4
-rw-r--r-- 1 root root 0 2007-11-06 15:30 a.txt
---------- 1 socket socket 0 2007-11-06 16:04 c
drwxr-xr-x 2 root root 4096 2007-11-06 15:30 priecinok_a
Ide samozrejmé o príliš velké nastavenie, pretože ani užívatel socket nemá právo čítať subor c :
socket@blackbox:~/Desktop/adresár$ cat c
cat: c: Premission denied
Prakticky rozumné a pritom dostatočné prísne je nastaviť masku na hodnotu 077.
Pokial chcete nastaviť masku pri štarte pc stačí do nejakého štartovacieho scriptu (napr. rc-local)
napísať :
umask 077
Pokial vám vypočty v osmičkovej sústave nevyhovujú možete nastaviť masku pomocou symbolickej notácie (príkazom -S).
socket@blackbox:~$ umask -S
u=rwx,g=rwx,o=r
socket@blackbox:~$ umask u=rwx , g=r , o=
socket@blackbox:~$ umask -S
u=rwx,g=r,o=
socket@blackbox:~$ umask
037
Ako administrátor (root) môžete masku zmaniť v subore /etc/profile čím ovplivníte nastavenie všetkých užívatelov.
_____________________________________________________________________________
Tak a toto je už naozaj všetko z práv v unixovích systémoch (ešte existuje niečo také ako lsattr a chattr). Dúfam že ste stohto článku aspon niečo nové dozvedeli.
Hodnota S na mieste spustitelného príznaku užívatela indikuje nastavenie suid príznaku.
To sice ano, ale kym nema "executable" (x) bit, nespustis ho. Velke "S" znamena, ze je suid/sgid, ale nie spustitelny. Male "s" znamena, ze je suid/sgid, a aj spustitelny. Napriklad:
-rwS--x--x 1 test users 37880 Nov 6 17:08 program*
Znamena, ze spustit ho mozu vsetci okrem pouzivatela "test", a pri spusteni by mal dostat uid pouzivatela test.
Podobne velke "T" sa pouziva u adresarov, ktore maju "sticky" bit, ale "others" donho vstupovat nemozu:
drwxrwx--T 2 test users 1024 Nov 6 17:10 badtmp/
Sgid je tiez pouzitelne na adresare. Vtedy nove subory/adresare vytvorene v nom dostanu skupinu, aku ma tento nadradeny adresar. Suid takto na adresare afaik nefunguje, inak by sa dali robit zvrhlosti a obchadzat quoty.
Prosim oprav si v clanku toto:
- 644 (rw-rw-r--) pre súbory
ne toto:
- 664 (rw-rw-r--) pre súbory
a ako si to mám akože opraviť (čo tam mám optraviť)? ... aha myslíš to podla tej masky ? ...robil som to virtualne tak su tam chybičky
_______________________________________________________
Linux je ako okena,kvalitný a lacný čistič oken...