Dozvole su druga važna stavka višekorisničkog sistema fajlova. Njima se
određuje ko može da čita, piše i izvršava fajlove.
Postoje četitri skupa dozvola. Svakom skupu odgovara određena pozicija
oktalne cifre koja može imati različite vrednosti. Prve tri pozicije su za
skupove dozvola koje se odnose na vlasnika, grupu kojoj pripada vlasnik i sve ostale.
Pozicije su dodeljene respektivno. Četvrta oktalna cifra se koristi za postavljanje
ID korisnika, ID grupe i lepljivi (sticky) bit. Oktalne vrednosti koje se odnose na
dozvole su (takođe postoje i odgovarajuća slova koja su prikazana programima
kao ls a može ih koristiti sa chmod):
Table 9-1. Oktalne vrednosti dozvola
Tip dozvole |
Oktalna vrednost |
Slovo dozvole |
“sticky” bit |
1 |
t |
postavi ID korisnika |
4 |
s |
postavi ID grupe |
2 |
s |
čitanje |
4 |
r |
pisanje |
2 |
w |
izvršavanje |
1 |
x |
Da biste dobili oktalan broj koji reprezentuje skup dozvola, sabirate pojedinačne
vrednosti dozvola u skupu (pojedinačne vrednosti dozvola vidimo iz gornje tabele).
Recimo za “čitanje” i “pisanje”, bi bilo
“6”.
bash-ove podrazumevane dozvole su:
% ls -l /bin/bash
-rwxr-xr-x 1 root bin 477692 Mar 21 19:57 /bin/bash
|
Prva crtica bi bila zamenjena sa “d” da se radi o direktorijumu. Zatim su
prikazane tri grupe dozvola (dozvole vlasnika, grupe kojoj vlasnik pripada, i svih
ostalih). Vidimo da vlasnik ima dozvolu da čita, piše i izvršava (rwx), grupi je dozvoljeno samo da čita i izvršava (r-x), kao i svim ostalima (r-x).
Kako bismo postavili dozvole drugog, proizvoljnog fajla iste kao u predhodnom primeru?
Prvo, napravimo neki fajl koji će nam poslužiti kao primer:
% touch /tmp/example
% ls -l /tmp/example
-rw-rw-r--- 1 david users 0 Apr 19 11:21 /tmp/example
|
Koristićemo chmod(1) (što je skraćenica od
“change mode”) da postavimo dozvole na naš primer. Saberite oktalne
brojeve za dozvole koje želite. Ako vlasnik treba da čita, piše i
izvršava, onda imamo vrednost 7. Čitanje i izvršavanje je 5. Ovo lepo uklopljeno sa chmod bi
izgledalo ovako:
% chmod 755 /tmp/example
% ls -l /tmp/example
-rwxr-xr-x 1 david users 0 Apr 19 11:21 /tmp/example
|
Sada se verovatno pitate: “A čime su određene dozvole koje se
postavljaju na novi fajl?” Odgovor je jednostavan. bash
ima ugrađen programčić nazvan umask, koji se
inače nalazi u većini Unix školjki. I on kontroliše koje će se
dozvole postaviti na novi fajl. Već je bilo reči o bash-ovim ugrađenim programima do nekog nivoa u Section 8.3.1. Na umask se treba malo navići. Funkcioniše slično kao
chmod, samo obrnuto. Vi postavite oktalne vrednost akcija
(dozvola) koje ne želite da budu dozvoljene u novo-kreiranim fajlovima.
Podrazumevana vrednost za umask je 0022.
% umask
0022
% umask 0077
% touch tempfile
% ls -l tempfile
-rw-------- 1 david users 0 Apr 19 11:21 tempfile
|
Za više informacija o bash-u pogledajte man
stranice.
Za postavljanje specijalnih dozvola sa chmod saberite oktalne
vrednosti dozvola koje postavljate i smestite ih u prvu kolonu. Na primer, za
postavljanje dozvola korisnika i grupe ( eng. “set user ID” i “set
group ID”) postavimo “6”. Dakle:
% chmod 6755 /tmp/example
% ls -l /tmp/example
-rwsr-sr-x 1 david users 0 Apr 19 11:21 /tmp/example
|
Ako vas ovi brojevi zbunjuju, uz chmodmožete koristiti
slova. A šta koje slovo predstavlja se vidi iz sledećeg primera:
Da bi smo prethodni primer uradili na ovaj način potrebno je nešto više
kucanja:
% chmod a+rx /tmp/example
% chmod u+w /tmp/example
% chmod ug+s /tmp/example
|
Neko preferira slova, a neko brojeve, sve u svemu rezultat je uvek isti.
Oktalni format je obično brži i češće se koristi u skriptama.
Mada su slova u nekim situacijama moćnije sredstvo. Na primer, koristeći
brojeve je teže promeniti jednu grupu dozvola a da se ostale očuvaju, što
je veoma lako sa slovima.
% ls -l /tmp/
-rwxr-xr-x 1 alan users 0 Apr 19 11:21 /tmp/example0
-rwxr-x--- 1 alan users 0 Apr 19 11:21 /tmp/example1
----r-xr-x 1 alan users 0 Apr 19 11:21 /tmp/example2
% chmod g-rwx /tmp/example?
-rwx---r-x 1 alan users 0 Apr 19 11:21 /tmp/example0
-rwx------ 1 alan users 0 Apr 19 11:21 /tmp/example1
-------r-x 1 alan users 0 Apr 19 11:21 /tmp/example2
|
Spominjali smo postavljanje dozvola vezane za korisnike i grupe na nekoliko mesta.
Možda se pitate šta je ovo. Obično, kada pokrenete program, on se
izvršava pod vašim korisničkim imenom sa dozvolama koje vi posedujete.
Isto važi i za vašu grupu. Kada ga pokrenete, izvršava se pod grupom kojoj
vi pripadate. Sa “set user ID” možete podesiti da se program uvek
pokreće sa pravima jednog istog korisnika (kao na primer “root”).
“Set group ID” je slično kao za korsnika, samo što se odnosi na
grupu.
Dobro pazite sa ovim, jer možete otvoriti velike bezbednosne rupe na vašem
sistemu. Ako često korsitite “set user ID ” i “set group ID”
koje poseduje korisnik root, dozvoljavate da svako pokreće
taj program kao root. Kako root nema
nikakvih ograničenja na sistemu, vidite da ovo može biti velik bezbednosni
problem. Ukratko, nije loše dozvoliti programu ono što može određeni
korisnik ili grupa, ali samo za neke obične stvari.