Linux/chmod
 

UNIX DOZVOLE I UPUTSTVO ZA CHMOD
Datum objavljivanja 24.02.2006

 
 
Razumevanje unix dozvola i chmod-a

Ova tema je odbačena i u knjigama i u online dokumentaciji. Iz nekog razloga, izgleda da je ovo jedna od najčešćih nerazumevanja sa kojim se ljudi suočavaju učeći kako da pišu i ili konfigurišu svoj prvi cgi program. Cilj ovog uputstva je da razbistri koncepte koji su ovde uključeni. Najviše o čemu se ovde piše , odnosi se na sve UNIX derivate (kao što su Linux, SVR4, BSD, i dr). Takođe je dobra ideja da kucate man chmod da proverite specifične detalje za vaš sistem.

Korisnici

UNIX sistem koristi mnogim ljudima. Korisnici su razdvojeni da bi označili suštinu za dodeljivanje vlasništva i operacionih privilegija nad sistemom. Korisnici mogu odgovarati ljudima iz realnog sveta, ali takođe i modelu sistemskih operacija. Tako u mom sistemu imam korisnika "nick" koji meni  lično odgovara, ali imam takođe i korisnika "www" koji ima neophodne privilegije da radi sa lokalnim web serverom.
UNIX-a nije briga šta meni lično korisnik znači. On jednostavno zna da pripada bilo kom zadatom korisniku, i šta je bilo kom korisniku dozvoljeno da radi sa bilo kojom zadatom stvari (fajl, program, uređaj itd) na sistemu. UNIX identifikuje bilo kog korisnika kao ID korisnika (UID) njegovo korisničko ime (login username) kao što su "nick" i  "www" koji su samo nadimci za UID koji olakšavaju ljudima rad.

GRUPE

Korisnici mogu biti organizovani po grupama. Korisnik može pripadati jednoj ili više grupa korisnika. Ideja grupe služi u svrhu dodele paketa ovlašćenja za zadat izvor i deli ih između više korisnika koji su njima potrebni (možda zato što su oni svi članovi jednog radnog tima na nekom projektu i svi trebaju da imaju pristup zajedničkim projektnim fajlovima). Stoga na mom sistemu korisnik "nick" i korisnik "www" oba spadaju u grupu "perlfect". Na ovaj način mogu da imaju neke deljive privilegije nad fajlovima na lokalnom webserveru.
Korisnik "nick" je potreban da bi ušli na sajt , a korisnik "www" je neophodan da upravlja webserverom koji će upravljati sajtom.

Vlasništva

Svaki fajl na UNIX-u ima vlasničkog korisnika i vlasničku grupu. Znači za svaki fajl u sistemu, korisnik "nick" može imati jedan od sledećih vlasničkih odnosa:
"nick" poseduje fajl - vlasnik fajla je "nick"
"nick" je član grupe koja poseduje fajl - vlasnička grupa nad fajlom je "perlfect"
"nick" nije ni vlasnik niti pripada grupi koja poseduje fajl

Dozvole

Svaki fajl na sistemu je povezan sa paketom dozvola. Dozvole kažu UNIX-u šta može da se učini sa tim fajlom i od strane koga. Postoje tri stvari koje možete ili ne možete sa datim fajlom:

čitanje
pisanje (menjanje)
pokretanje

UNIX dozvole određuju koje će od ovih navedenih operacije biti izvršene za bilo koji vlasnički odnos u odnosu na fajl. Uproščćeno, šta može vlasnik da uradi, šta vlasnička grupa može da uradi, i šta bilo ko   drugi može da uradi sa ovim fajlom. Za bilo koje zadato vlasničko pravo trebaju nam tri pozicije da bi naveli pristupne dozvole: prva je da označimo pristup čitanju (r) , druga je da označimo pristup pisanju (w) , i treća da označimo pristup izvršenju (x) . Imamo tri vlasnička odnosa "vlasnik" "grupa" "ostali" , takoda nam treba tri puta za svaki. Svaka tačka može biti dodeljena ili oduzeta. Označavamo svaku tačku svojim odgovarajućim  operativnim slovom (r,w,x) i brišemo stavke crtom (-) i sve ih stavljamo u red. Kao primer može biti rwxr-xr-x.Ovo treba da znači da vlasnik može da radi sve sa fajlom, ali vlasnička grupa i svi ostali mogu samo da čitaju i da ga izvrše. Obično u UNIX-u takođe postoji još jedna stavka koja izvršava ovih 9 šablona. Ne morate da znate za nju bar za sada. Ukoliko pokrenete komandu ls -l u komandnoj liniji dobićete nešto nalik ovome:

Code:
[nick@thekla src]$ ls -l
-rwxr-xr-x   1 nick     users          382 Jan 19 11:49 bscoped.pl
drwxr-xr-x   3 nick     users         1024 Jan 19 11:19 lib/
-rwxr-xr-x   1 nick     users         1874 Jan 19 10:23 socktest.pl

Prva kolona pokazuje šablon za dozvole za svaki fajl. Treća kolona pokazuje vlasnika, i četvrta kolona pokazuje vlasničku grupu. U međuvremenu informacija koju nam obezbeđuje ls -l trebalo bi da bude dovoljna da prokljuvite šta svaki korisnik sistema može da radi sa bilo kojim fajlom u direktorijumu.

Direktorijumi

Još jedna interesantna stvar za pribeležiti je da lib/ koji je direktorijum ima dozvole takođe. Dozvole imaju drugačije značenje za direktorijume. Evo šta znače:

Čitanje određuje da li korisnik može da vidi sadržaj direktorijuma npr. da uradi ls unutar njega.
Pisanje određuje da li korisnik može da napravi novi fajl ili briše fajl u direktorijumu. (Obratite pažnju da ovo u suštini znači da korisnik sa pristupom pisanju u direktorijumu može brisati fajlove u ovom direktorijumu čak ukoliko on ili ona nemaju dozvolu za pisanje za fajl. Zato sa ovime budite oprezni.)
Izvršavanje određuje da li korisnik može izvršiti promenu direktorijuma u tekućem direktorijumu.

chmod

Da podesite ili izmenite dozvole za fajlove morate koristiti chmod program. Naravno samo vlasnik fajla može koristiti chmod da izmeni dozvole za fajlove. chmod ima sledeću sintaksu:

Code:
chmod [options] mode file(s)

Recimo na primer delovi sa tim modom određuju nove dozvole za fajl ili fajlove koji slede kao argumenti. Mod određuje koje korisničke dozvole trebaju biti promenjene, i nakon toga koji tipovi pristupa trebaju biti promenjeni. Recimo na primer:

Code:
chmod a-x socktest.pl

Ovo znači da izvršni deo treba biti obrisan (-) za sve korisnike (vlasnik , grupa, ostali). Dozvole počinju sa slovom koje određuje koji korisnici trebaju da budu obuhvaćeni izmenama a to može biti bilo koji od sledećih:

u - vlasnik
g - vlasnička grupa
o - ostali (koji ne spadaju ni pod "u" ni pod "g")
a - svi korisnici

Ovo je praćeno promenom instrukcija koje se sastoje od  + (postavi stavku) ili -(obrisi stavku) i slova koje treba odgovarati stavki koja treba biti promenjena. Pogledajmo neke primere:

Code:
$ ls -l socktest.pl
-rwxr-xr-x   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod a-x socktest.pl
$ ls -l socktest.pl
-rw-r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod g+w socktest.pl
$ ls -l socktest.pl
-rw-rw-r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod ug+x socktest.pl
$ ls -l socktest.pl
-rwxrwxr--   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod ug-wx socktest.pl
$ ls -l socktest.pl
-r--r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl
   

Čudni brojevi....


Možete imati sukob stvari kao chmod 755 neki_fajl i naravno začudićete se šta je ovo. U stvari možete promeniti ceo šablon dozvola nad fajlom odjednom , koristeći jedan broj kao jedan u ovom primeru. Svaki mod ima odgovarajući kodni broj i kao što ćemo videti postoji veoma prost način da broj odgovara bilo kom modu.

Svaki od tri broja u modu odgovara jednoj od tri trostruke dozvole. (u,g,o) Svaka tačka dozvole u jednom troslovu odgovara jednoj od vrednosti: 4 za r, 2 za w, 1 za x. Ukoliko je vrednost koju dodate na svom mestu. Ako je prazno (-), onda nećete dodati ništa (0). (Neki od vas mogu primetiti da u stvari broj za troslov ima oktalnu vrednost odgovarajuću troslovnom šablonu-ako neznate šta znači oktalna vrednost uopšte nije ni bitno samo pratite uputstvo). Tako da ako fajl ima rwxr-xr-x dozvole radimo sledeći proračun:

Troslov za u: rwx => 4 + 2 + 1 = 7
Troslov za g: r-x => 4 + 0 + 1 = 5
Troslov za o: r-x => 4 + 0 + 1 = 5
Što iznosi: 755



Znači, 755 je uvijen način da izgovorite "Nemam ništa protiv da drugi ljudi čitaju ili pokrenu ovaj fajl" i 777 znači "Svi imaju pun pristup ovom fajlu"

prevedeno sa http://www.perlfect.com/articles/chmod.shtml
 
atomic 2005