30.09.2017.

Dozvole nad datotekama u Linuksu











Dozvole i vlasništvo – Zašto?
Ukoliko ne možete da pristupite nekoj datoteci na vašem operativnom sistemu Linuks, to je verovatno zbog loše podešenih prava pristupa koje ta datoteka ima. Ako samo vi koristite računar verovatno se pitate koja je prednost dozvola (ili koje su mane) koje vam ograničavaju pristup sistemu. Međutim, pre nego što se uhvatite za kosu, imajte na umu da je Linuks napravljen da bude višekorisničko okruženje, pa je tako veoma važno imati siguran sistem koji jasno ukazuje na to koje su datoteke vaše i ko im može pristupiti. Čak i kada ste vi jedini korisnik kućnog računara dozvole čuvaju važne datoteke sigurnim i od uljeza i od vaših grešaka.
Vlasništvo nad datotekama
Svaka datoteka u operativnom sistemu Linuks u vlasništvu je određenog korisnika i određene grupe. Dakle, dozvole nad datotekama su definisane posebno za korisnika, posebno za određenu grupu korisnika, te posebno za sve ostale korisnike.
Korisnik (engl. User) → Korisničko ime osobe koja poseduje datoteku. Osoba koja je napravila neku datoteku odmah postaje i vlasnik te datoteke.
Grupa korisnika (Group) → Korisnička grupa koja je vlasnik datoteke. Svi korisnici koji pripadaju grupi koja poseduje određenu datoteku imaće ista prava pristupa toj datoteci. Ovo je korisno ukoliko, na primer, radite na projektu koji zahteva da jedna grupa korisnika ima pravo pristupa određenim datotekama a da svi ostali korisnici to pravo nemaju. U tom slučaju je potrebno korisnike dodati u istu grupu i postarati se da su potrebne datoteke u vlasništvu baš te grupe a zatim prema tome podesiti dozvole grupe za te datoteke.
Ostali korisnici (Other) → Korisnici koji nisu vlasnici datoteke i koji ne pripadaju grupi korisnika koja je vlasnik datoteke. Drugim rečima, ukoliko ste postavili dozvole za kategoriju ostalih korisnika te dozvole će podrazumevano uticati na sve ostale korisnike. Zato se često govori o globalnim dozvolama nad datotekama, iako se misli na dozvole za sve ostale korisnike.
Dozvole nad datotekama
Postoje tri tipa pristupnih dozvola na Linuksu: čitanje, pisanje i izvršavanje.
Dozvola čitanja (Read permission) → Dozvola čitanja koju poseduje određena datoteka znači da ta datoteka može da se otvori i da se njen sadržaj učita. Kod fascikli, dozvola čitanja koju poseduje određena fascikla znači da ta fascikla može da se otvori i da se njen sadržaj vidi.
Dozvola pisanja (Write permission) → Dozvola pisanja koju poseduje određena datoteka omogućava vam da izmenite sadržinu te datoteke. Kod fascikli, dozvola pisanja koju poseduje određena fascikla znači da se postojećim datotekama koje se nalaze u toj fascikli mogu promeniti imena, da se mogu obrisati a takođe je dozvoljeno i kreiranje nove datoteke unutar date fascikle. Ovo zapravo znači da datoteci koja ima dozvolu pisanja možete promeniti sadržinu ali ne i ime, niti možete da je obrišete sve dok vam dozvola pripadajuće fascikle to ne dopusti.
Dozvola izvršavanja (Execute permission) → Dozvola izvršavanja koju određena datoteka poseduje znači da tu datoteku možete da pokrenete kao program ili skriptu školjke. Dozvola izvršavanja kod fascikle omogućava vam da pristupite datotekama u toj fascikli (na primer, korišćenjem komande cd). Međutim, imajte na umu da iako vam dozvola izvršavanja dopušta da uđete u fasciklu ne dopušta i da vidite sadržaj fascikle - ukoliko nemate dozvolu za njeno čitanje.
Šta izlaz komande ls -l zapravo znači? Prva kolona govori o tipu datoteke i njenim dozvolama. Druga kolona pokazuje broj linkova (jedinice fascikle koje se odnose na datoteke), treća kolona pokazuje ko je vlasnik datoteke, a četvrta kolona govori o grupi kojoj data datoteka pripada. Peta kolona pokazuje veličinu datoteke u bajtovima, šesta kolona vreme predstavlja poslednje datum izmene datoteke i, konačno, sedma kolona pokazuje ime datoteke.
Prva grupa sadrži samo jedan karakter koji pokazuje tip datoteke. Ukoliko ovde stoji znak „-“, to znači da se radi o datoteci, slovo „d“ označava fasciklu, a ukoliko stoji slovo „l“ reč je o simboličkom linku. Druga grupa govori o dozvolama za vlasnika datoteke, treća o dozvolama za grupu kojoj datoteka pripada dok četvrta gupa ukazuje na dozvole za sve ostale korisnike. Međutim, šta znače pojedini karekteri u grupama o dozvolama datoteke?
r ... dozvola čitanja
w ... dozvola pisanja
x ... dozvola izvršavanja
- ... dozvola ne postoji
Pokazaćemo sada na dva primera kako se čitaju dozvole koje datoteka odnosno fascikla ima.
drwxr-xr-x 3 nana writers 80 2005-09-20
21:37 dir
Slovo d koji ispis počinje govori nam da je u pitanju fascikla. Vlasnik ove fascikle je korisnik nana i ova fascikla pripada grupi writters. Druga grupa karaktera, rwx, govori nam da vlasnik fascikle, u ovom slučaju nana, ima pun pristup fascikli. To znači da nana može da pristupa datotekama u toj fascikli, kao i da ih menja. Sledeća grupa karaktera, r-x, kazuje da svi korisnici koji pripadaju grupi writers imaju pravo čitanja i izvršavanja fascikli dir. Pošto nemaju pravo pisanja ne mogu izmeniti sadržaj te fascikle. I na kraju, poslednja grupa karaktera r-x, govori da svi korisnici koji nisu nana i koji ne pripadaju grupi writers imaju pravo čitanja i izvršavanja u fascikli dir.
-rw-r----- 1 nana writers 8187 2005-09-19
13:35 file
U ovom primeru znak „-“ kojim počinje ispis govori nam da je u pitanju datoteka. Ova datoteka je u vlasništvu korisnika nana i grupe korisnika writers. Druga grupa karaktera, rw-, govori nam da vlasnik datoteke nana ima dozvolu za čitanje i promenu datoteke ali ne i za njeno izvršavanje. Treća grupa karaktera, r--, ukazuje na to da korisnici koji pripadaju grupi writers mogu čitati datoteku ali je ne mogu izmeniti niti pokrenuti (izvršiti). I na kraju, četvrta grupa karaktera --- znači da ostali korisnici nemaju postavljene dozvole za ovu datoteku.
Dozvole za datoteku možete postaviti koristeći chmod komandu. I root korisnik i vlasnik datoteke imaju mogućnost da podese dozvole datoteke. Komanda chmod ima dva režima: simbolički i brojevni. Simbolički režim je veoma jednostavan za pamćenje. Prvo je potrebno da odlučite da li ćete postaviti dozvole za korisnika, (engl. user) [u], za grupu korisnika, (group) [g], za sve ostale korisnike (other) [o], ili za apsolutno sve korisnike (all) [a]. Nakon toga možete da dodate dozvolu [+], oduzmete dozvolu [-], ili obrišete sve prethodno podešene dozvole i dodate novu dozvolu [=]. Dalje, možete postaviti dozvolu za čitanje [r], dozvolu za pisanje [w] ili dozvolu za izvršavanje [x]. I na kraju, potrebno je da odredite datoteku kojoj želite da promenite dozvole.
Postavljanje dozvola ćemo pokazati na nekoliko primera. Za ove potrebe ćemo koristiti datoteku koja se zove testfile i koja ima sve dozvole za sve korisnike (-rwxrwxrwx).
Obrišite sve dozvole i dodajte samo dozvolu za čitanje svim korisnicima:
$ chmod a=r testfile
Nakon ove komande, dozvole datoteke će biti -r--r--r--.
Dodajte dozvolu izvršavanja za grupu:
$ chmod g+x testfile
Dozvole datoteke će nakon toga biti
-r--r-xr--.
Dodajte dozvolu pisanja i dozvolu izvršavanja za vlasnika datoteke. Imajte na umu da možete postaviti više
od jedne dozvole istovremeno.
$ chmod u+wx testfile
Dozvole datoteke će nakon toga biti
-rwxr-xr--.
Uklonite dozvolu izvršavanja i za vlasnika i za grupu. Ne zaboravite da možete postaviti dozvole za više od
jedne grupe korisnika istovremeno.
$ chmod ug-x testfile
Dozvole datoteka će nakon toga biti
-rw-r--r--.

Извор: ЛиБРЕ! часопис