Prava pristupa, Linux OS – Pristup resursima pod Linux operativnim sistemom je strogo kontrolisan, a ovaj tekst je namenjen korisnicima koji žele da se detaljnije upoznaju sa načinom na koji Linux OS kontroliše pristup resursima fajl sistema. Fajl sistem predstavlja srž svakog operativnog sistema, a kontrola pristupa objektima fajl sistema odnosno direktorijumima i fajlovima je od ključnog značaja.

Kontrola pristupa zapravo podrazumeva skup korisnika kojima je omogućen pristup fajlovima i direktorijumima, kao i nivo pristupa, odnosno skup predefinisanih akcija koje svaki od tih korisnika može da izvrši nad njima.

Kontrola pristupa na nivou fajl sistema zasniva se na vlasništvu nad objektima (što ćemo kasnije detaljnije objasniti), a osnovno je da se prava pristupa inicijalno dodeljuju svakom fajlu i direktorijumu prilikom kreiranja (kasnije ih je moguće izmeniti) i na osnovu tih prava se određuje nivo pristupa datim objektima.

Prava pristupa nad direktorijumima i fajlovima se izlistavaju uz pomoć naredbe ‘ls’ (list).

lsoutput

U ovom primeru korišćena je naredba ‘ls’ sa argumentom’ –l’ (long) čime se dobija nešto detaljniji prikaz. Za svaki objekat date su sledeće informacije:

  • Tip objekta (‘d’ za direktorijum,’–’ za fajl, ‘l’ za simbolički link itd.)
  • Prava pristupa za tri vlasničke kategorije (npr. rwxr-xr-x)
  • Broj hard linkova na fajl
  • Naziv vlasnika objekta i naziv grupe kojoj objekat pripada
  • Veličina objekta, datum i vreme
  • Ime objekta (‘dir1′, ‘dir2′, ‘file1′, ‘file2′)

Vlasništvo nad objektima

Prvi karakter od prvih deset izlaza naredbe ‘ls’ daje tip objekta, pa tako za objekte ‘dir1′ i ‘dir2′ može da se zaključi da su to direktorijumi, a za ‘file1′ i ‘file2′ da su fajlovi. Preostalih devet karaktera predstavlja prava pristupa za tri vlasničke kategorije, a to su: vlasnik (owner), grupa (group) i ostali (others). Po tri karaktera su predviđena za definisanje prava vlasničkih kategorija i to redom: vlasnika, grupe i svih ostalih.

Vlasnik – korisnik koji je kreirao objekat, pod uslovom da superuser (root) nije menjao vlasništvo nad objektom.

Grupa – predstavlja grupu kojoj je dodeljeno vlasništvo nad objektom i ona je najčešće primarna grupa vlasnika objekta. Svaki korisnik na Linux-u mora da pripada samo jednoj primarnoj grupi, a pored nje može da pripada i neograničenom broju drugih grupa. Objekti fajl sistema za razliku od korisnika sistema mogu da pripadaju samo jednoj grupi, kao i da poseduju samo jednog vlasnika.

Ostali – svi ostali korisnici koji nisu vlasnici objekta, a ne pripadaju ni grupi kojoj objekat pripada.

Za svaku vlasničku kategoriju postoje sledeća prava:

  • pravo čitanja (r – read)
  • pravo pisanja (w – write)
  • pravo izvršenja (x – execute)

Pozicija prava je striktno određena i uvek je na prvoj poziciji pravo čitanja, na drugoj pravo pisanja i na trećoj pravo izvršenja. Ukoliko se na bilo kojoj poziciji umesto nekog od navedenih prava nalazi crtica (-), dato pravo je ukinuto. Ono što je jako bitno je da se prava direktorijuma i fajlova bitno razlikuju.

Na osnovu gornje slike, uzimajući u obzir prvi karakter (-) može se zaključiti da je ‘file1′ fajl. Na osnovu sledeća tri karaktera određena su vlasnička prava (rw), što znači da vlasnik fajla, u ovom slučaju korisnik it-modul, ima pravo čitanja (r), modifikovanja (w), ali nema pravo izvšavanja (x) fajla. U principu izvršno pravo se koristi samo nad izvršnim fajlovima, kao što su naredbe, skripte ili servisi, a nad ostalim tipovima fajlova (npr. tekst fajlovi) ono nije potrebno.

Sledeća tri karaktera pokazuju da grupa poseduje samo pravo čitanja (r), što znači da korisnici koji pripadaju grupi kojoj je ‘file1′ dodeljen, a to je u ovom slučaju grupa it-modul, imaju samo pravo čitanja (r) fajla, ali nemaju pravo modifikacije (w), niti izvršavanja (x). Sledeća tri karaktera predstavljaju prava svih ostalih koji nisu vlasnici fajla, odnosno ne pripadaju grupi kojoj je dodeljeno vlasništvo nad fajlom.

U ovom primeru svi ostali korisnici imaju pravo čitanja (r), a nemaju prava modifikacije (w) i izvršavanja (x). Za ‘file2′ se vidi da ima ista prava pristupa kao i ‘file1′, a ono što ih razlikuje je što je vlasnik ‘file2′ korisnik mika, a grupa kojoj je dodeljeno vlasništvo nad fajlom je mika. Već smo zaljučili da su ‘dir1′ i ‘dir2′ direktorijumi pošto je prvi karakter ‘d’. Vlasnik direktorijuma ‘dir1′ je korisnik it-modul, a grupa kojoj je dodeljeno vlasništvo nad direktorijumom je it-modul. Vlasnik direktorijuma ‘dir2′ je korisnik pera, a grupa kojoj je dodeljeno vlasništvo nad direktorijumom ‘dir2′ je pera.

Prava vezana za direktorijume ‘dir1′ i ‘dir2′ su identična. Pravo upisa dato je samo vlasniku objekta, a svi ostali korisnici imaju pravo korišćenja direktorijuma, što znači pravo da se pozicioniraju na direktorijum (cd /test), pravo čitanja (izlistavanja) sadržaja i modifikovanja ili izvršavanja fajlova, u zavisnosti od postojećih prava nad tim fajlovima.

Razlike prava pristupa fajlova i direktorijuma

Za fajlove:

  • Pravo čitanja (r) konkretno znači da korisnik može da pročita, štampa ili kopira fajl.
  • Pravo pisanja (w) znači da korisnik može da modifikuje sadržaj fajla. Mnogi pogrešno poistovećuju ovo pravo sa pravom brisanja fajla. Korisnik može da obriše fajl samo ako ima pravo pisanja nad direktorijumom u kome se fajl nalazi.
  • Pravo izvršenja (x) znači da korisnik može da izvrši fajl ukoliko je on izvršnog tipa.

Za direktorijume:

  • Pravo čitanja (r) znači da korisnik može da pročita sadržaj direktorijuma (naredba ‘ls’), ali ovo pravo mu nije dovoljno za izvršenje naredbe „ls -l“ koja daje opširniji spisak. Za to je potrebno i pravo (x) nad direktorijumom.
  • Pravo pisanja (w) znači da korisnik može da modifikuje sadržaj direktorijuma, odnosno da može da dodaje nove i briše postojeće fajlove, kao i da kreira i briše poddirektorijume. Međutim, ovo pravo ne omogućava brisanje samog direktorijuma, za tako nešto bi bilo potrebno pravo pisanja nad roditeljskim direktorijumom.
  • Pravo izvršavanja (x) omogućava korisniku da se pozicionira na dati direktorijum (komanda ‘cd’), kao i prikazivanje produženog spiska (‘ls –l’) i korišćenje pretrage komandom ‘find’. Praktično govoreći da bi korisnik mogao da normalno koristi neki direktorijum mora da ima dodeljena i prava čitanja i prava izvršavanja(r-x).

Logika određivanja prava pristupa

Redosled za određivanje prava pristupa, kada korisnik želi da priđe određenom fajlu, je sledeći. Prva provera je da li je on vlasnik. Ako jeste, korisnik prilazi objektu sa vlasničkim pravom, u suprotnom proverava se da li korisnik pripada grupi kojoj je dodeljeno vlasništvo nad fajlom. Ukoliko joj pripada, korisnik prilazi objektu sa pravima definisanim za tu grupu. U suprotnom se primenjuju prava određena za sve ostale.

Specijalni atributi fajlova i direktorijuma

Specijalni atributi su setuid (SUID), setgid (SGID) i sticky bit (t). Oni omogućavaju proširenje dosad navedenih mogućnosti Linux dozvola nad objektima fajl sistema.

Često se u praksi javlja potreba da se nekom korisniku omogući pokretanje neke aplikaciju sa pravima drugog korisnika. To se postiže upotrebom setuid-a i setgid-a. Na primer, korisniku se omogućava da kreira rezervne kopije podataka bez otkrivanja superuser lozinke ili korišćenje dvd playera bez superuser privilegija. Potrebno je da se na naredbe za backup sistema, odnosno mountovanje dvd uređaja postavi setuid, setgid ili oba.

Često se na deljenim direktorijumima prava definišu tako da korisnici mogu da kreiraju nove i brišu postojeće fajlove, bez obzira na to kome ti fajlovi pripadaju. Pomoću sticky bit-a postavlja se ograničenje da, kakva god prava nad direktorijumom poseduje, korisniku nije dozvoljeno brisanje fajlova čiji on nije vlasnik.


Specijalni atributi fajlova na ext2/ext3/ext4 fajl sistemu:

A (Don’t update access time) – zabranjuje izmenu vremena poslednjeg pristupa

a (Append only) – dozvoljava dodavanje novih podataka u fajl, bez izmene postojećih

c (Compressed) – fajl se kompresovan smešta na disk

d (No dump)- fajl se ne arhivira

i (Immutable) – fajl ne može da se modifikuje ili briše

s (secure deletion) – bezbedno brisanje

S (Sync) – prilikom izmene sadržaja fajla promena se momentalno upisuje na disk, bez keširanja

t (Tail-merge) – neiskorišćeni fragmenti poslednjeg bloka fajla ne mogu da se dodele drugom fajlu

u (Undelete) – prilikom brisanja fajla čuva se njegov sadržaj, pa je moguće povratiti obrisani fajl


Linux ACL-ovi (Access control lists)

Objektima fajl sistema dodeljuju se tri seta dozvola za tri vlasničke grupe (vlasnik, grupa i ostali). Pored toga za neke specifičnije potrebe može da se koristiti setuid, setgid i sticky bit. U većini slučajeva to je sasvim dovoljno. Međutim, za kompleksne situacije, da bi se zaobišla ograničenost tradicionalnog načina definisanja prava pristupa, mogu se upotrebiti ACL-ovi (Access Control Lists).

ACL-ovi omogućavaju definisanje prava pristupa na nivou individualnih korisnika i/ili grupa. Uključuju se u samom kernelu i podržani su od ReiserFS, Ext2, Ext3, Ext4, JFS i XFS fajl sistema. Windows operativni sistem omogućava u startu korišćenje ACL-ova na nivou korisnika i grupa, pa je uobičajena uloga Linux ACL-ova kada recimo Windows mrežni server zamenjujemo Linux sistemom.

itmogul-logoTekst je preuzet sa ugašenog bloga IT modul i originalni autor ovog teksta je Vladimir Blagojević. Kompjuteraš IT blog će objavljivati tekstove sa tog bloga kako riznica znanja sa te lokacije ne bi otišla u zaborav.