Pristup resursima pod mrežnim operativnim sistemima (kao što je i Linux) je strogo kontrolisan. Fajl sistem je fundamentalni resurs svake radne stanice ili servera, a kontrola pristupa fajlovima i direktorijumima (dodela ovlašćenja za pristup i zaštita od neovlašćenog pristupa) ključna komponenta ozbiljnih zaštitnih polisa u svakom višekorisničkom sistemu.
Jedna od najznačajnijih komponenti svake ozbiljne zaštitne politike je kontrola pristupa na nivou fajl sistema. Kontrolom pristupa na nivou fajl sistema određuju se:
Kontrola pristupa na nivou fajl sistema zasniva se na vlasničkim odnosima, odnosno vlasništvu nad objektima (pripadnost objekta korisnicima i grupama) i pravima pristupa. Prava pristupa se dodeljuju svakom fajlu i direktorijumu. Prava pristupa za datoteke i direktorijume najlakše se mogu odrediti pomću komande ls (list) sa parametrom -l (long), kao što je prikazano u sledećem primeru:
Pravo pristupa za svaku grupu se zadaje na isti način, sa istim rasporedom karaktera rwx:
Ukoliko se na odgovarajućoj poziciji nalazi crtica -, pravo je ukinuto.
Primer:
Na primer, sistemski direktorijum /bin sadrži najčešće korišćene UNIX komande. Svim korisnicima sistema dato je pravo korišćenja direktorijuma /bin. Svi korisnici sistema mogu da se pozicioniraju na direktorijum, mogu da pročitaju sadržaj i pokrenu komande koje se u njemu nalaze. Pravo upisa dato je jedino superuser-u.
Drugo, sistemski direktorijum /root je home direktorijum superusera, koji nad njim ima sva prava, dok je svim ostalim korisnicima pristup direktorijumu zabranjen.
Značenje prava za fajlove i direktorijume bitno se razlikuje, što je prikazano u sledećoj tabeli:
pristupna prava za fajlove | pristupna prava za direktorijume | |
---|---|---|
read (r) | Korisnik može pročitati sadržaj fajla, odnosno može prikazivati fajl na ekranu, štampati ga ili kopirati; | Korisnik može pročitati sadržaj direktorijuma, što znači i da korisnik može da izvrši komandu ls. Napomena: za prikazivanje detaljnog listinga direktorijuma (ls -l) neophodno je i x pravo nad direktorijumom |
write (w) | Korisnik može modifikovati sadržaj fajla. Napomena: može obrisati fajl samo ako mu je dato pravo upisa nad roditeljskim direktorijumom; |
Korisnik može modifikovati sadržaj direktorijuma, odnosno dodavati nove fajlove i brisati postojeće, kreirati i brisati poddirektorijume. Napomena: može obrisati direktorijum samo ako mu je dato pravo upisa nad roditeljskim direktorijumom; |
execute (x) | Korisnik može izvršavati fajl, pod uslovom da se radi o shell programu ili o fajlu u binarnom izvršnom formatu; | Korisnik se može pozicionirati na direktorijum (komandom cd), može prikazivati dugački listing (ls -l) sadržaja i pretraživati direktorijum (find). |
Svim fajlovima i direktorijumima dodeljen je korisnički identifikator (UID) i grupni identifikator (GID) vlasnika. Kernel razrešava vlasničke odnose na osnovu ovih identifikatora.
Napomena: Opcija -n komande ls daje numeričke vrednosti za UID i GID.
Prava pristupa mogu promeniti isključivo vlasnici fajlova i direktorijuma, dok root kao superuser može da promeni pristupna prava svakom objektu. Komanda chmod može se pokrenuti u simboličkom (relative) ili oktalnom (absolute) režimu.
Korisnik dodeljuje ili oduzima prava u odnosu na postojeća, dok se postojeća prava koja nisu specificirana argumentom komande ne menjaju. Format komande u simboličkom modu je:
Primer:
symbolic_mode sastoji se od tri komponente:
Primeri:
kreira fajl i lista prava
dodata prava upisa kategorijama group i other
oduzeto pravo upisa vlasniku
dodeljen skup prava rw vlasniku i ukinuto pravo upisa kategorijama group i others
svima ukinuta sva prava.
Parametar -R se koristi za rekurzivnu promenu pristupnih prava direktorijuma i svih objekata (poddirektorijuma i fajlova) koji se u njemu nalaze. Ukoliko se navede parametar -R, argument objectname mora biti direktorijum.
Primer:
Komandom chmod u oktalnom režimu dodeljuju se prava pristupa svim vlasničkim kategorijama istovremeno. Prava koja korisnik navede kao argument komande eksplicitno zamenjuju postojeća prava (prethodna prava se ne prolongiraju), tako da se ovaj režim naziva apsolutnim. Komanda zatheva da se u ovom režimu kao argument navedu tri oktalne cifre od kojih svaka predstavlja prava pristupa za jednu vlasničku kategoriju.
Moguće oktalne vrednosti sa odgovarajućim pravima opisane su sledećom tabelom:
Oktalna vrednost | Suma prava po binarnoj vrednosti | Odgovarajuća prava | Definicaj |
---|---|---|---|
7 | 4 + 2 + 1 | r w x | čitanje, izmena i izvršavanje |
6 | 4 + 2 + 0 | r w - | čitanje i izmena |
5 | 4 + 0 + 1 | r - x | čitanje i izvršavanje |
4 | 4 + 0 + 0 | r - - | čitanje |
3 | 0 + 2 + 1 | - w x | izmena i izvršavanje |
2 | 0 + 2 + 0 | - w - | izmena |
1 | 0 + 0 + 1 | - - x | izvršavanje |
0 | 0 + 0 + 0 | - - - | bez prava pristupa |
Sintaksa komande chmod u oktalnom režimu je slična sintaksi komande u simboličkom režimu:
Apsolutna prava formiraju se pomoću tri oktalne cifre kojima su predstavljena prava pristupa za vlasnika, grupu i ostatak sveta. Parametar -R se, kao i u simboličkom režimu, koristi za rekurzivnu promenu pristupnih prava direktorijuma i svih objekata koji se u njemu nalaze. U tom slučaju argument objectname mora biti direktorijum.
Napomena: Kada se koristi oktalni režim moraju se navesti sve tri oktalne cifre u tačnom redosledu (vlasničko pravo, grupno pravo, pravo za ostatak sveta).
UNIX postavlja inicijalne vlasničke odnose prilikom kreiranja fajla ili direktorijuma. Korisnik koji kreira objekat postaje njegov vlasnik, a objekat se formalno pridružuje primarnoj grupi vlasnika.
Komandom chown (change owner) root kao superuser može da promeni vlasnika objekta, a ukoliko konkretan sistem to dozvoljava, to može učiniti i vlasnik. Regularni korisnici Linux sistema mogu promeniti vlasničke odnose samo ako na sistemu nije aktiviran mehanizam disk kvote (disk quota), kojim se korisnicima ograničava iskorišćenje prostora na diskovima. Kada se za fajl promeni vlasništvo, prava pristupa starog vlasnika određena su kategorijama group i others. Sledeće komande prikazuju sintaksu za promenu vlasništva:
Primer:
Pored osnovnih dozvola, postoje i tri bita informacija definisanih ya fajlove na UNIX sistemima:
Oktalna vrednost | Binarna vrednost | Značenje |
---|---|---|
0 | 000 | setuid, setgid, sticky bit nisu postavljeni |
1 | 001 | sticky bit postavljen |
2 | 010 | setgid postavljen |
3 | 011 | setgid i sticky bit postavljeni |
4 | 100 | setuid postavljen |
5 | 101 | setuid i sticky bit postavljeni |
6 | 110 | setuid i setgid postavljeni |
7 | 111 | setuid, setgid, sticky bit i postavljeni |