webhosting by: WebSupport.sk                                             UnlimitedHosting | CustomHosting | FreeWeb.sk

Prístupové práva - {CHMOD} -2

socket's picture

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.

Average rating
(5 votes)

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
chess's picture

Re: Prístupové práva - {CHMOD} -2

Prosim oprav si v clanku toto:
- 644 (rw-rw-r--) pre súbory

ne toto:
- 664 (rw-rw-r--) pre súbory

socket's picture

Re: Prístupové práva - {CHMOD} -2

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

matej's picture

Re: Prístupové práva - {CHMOD} -2

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.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
webhosting by: WebSupport.sk UnlimitedHosting | CustomHosting | FreeWeb.sk