INFINIUS

Mala linux škola – dozvole datoteka i direktorija

Take no pictures
[Creative Commons Licensephoto credit: wstryder]

Dozvole koje direktoriji i datoteke unutar linux datotečnog sustava imaju mogu izgledati dosta kriptično, no ustvari se radi o vrlo jednostavnom sustavu kojeg je lako razumjeti ali i upotrebljavati. Budući da je unutar linux-a općenito gledano sve predstavljeno u obliku datoteke se na isti način i pristupa i upravlja datotekama i uređajima te je jedna od važnijih stvari dobro razumijevanje sustava dozvola.

Datoteke – čitanje, pisanje i izvršavanje

Čitanje, pisanje i izvršavanje su osnovne tri radnje koje možete napraviti s datotekom i notacija slovima ih predstavlja kao “r” (čitanje – [read]), “w” (pisanje – [write]) i “x” (izvršavanje – [execute]). Dodatna pojašnjenja ovdje vjerovatno nisu potrebna – koncept čitanja iz datoteke, zapisivanja u nju te izvršavanja datoteke (programa) je dosta jednostavan.

Direktoriji – pregled, mijenjanje sadržaja, ulazak u direktorij

Stvari postaju malo kompliciranije ako gledamo dozvole za direktorije – iako se još uvijek koristi notacija slovima r/w/x,  dozvole imaju samo djelomične sličnosti s datotekama:

r – dozvola za pregled direktorija tj. listing

w – dozvola za brisanje i kreiranje datoteka i poddirektorija

x – dozvola za ulaz u direktorij

Dozvola za ulaz u direktorij možda najčudnije izgleda no moguće je pojasniti je s jednostavnim primjerom – ako korisnik treba pročitati neku datoteku i ima prava za to (barem što se tiče datoteke), moći će je pročitati samo ako može ući unutar direktorija u kojem se nalazi (x dozvola). S druge strane, on mora znati njeno ime ukoliko ujedno nema  i dozvolu r na tom direktoriju jer je inače neće moći naći (sadržaj direktorija će biti nevidljiv).

Korisnici

Gore navedene dozvole izgledaju u redu za jednog korisnika, no linux je sam po sebi postavljen kao višekorisnički sustav. Stoga se uvodi koncept vlasnika, pripadajuće grupe i svih ostalih – slovima “o” (vlasnik – [owner]), “g” (grupa – [group]) i “a” (svi – [all]).

Svaka datoteka i direktorij imaju definiranog svojeg vlasika i vlasničku grupu (može ali i ne mora biti povezano), zato se i dozvole primjenjuju odvojeno za vlasnika datoteke ili direktorija, vlasničku grupu ili pak na sve ostale.

Oktalna notacija

Iako se sve gore navedeno odnosilo na upotrebu slova za dozvole i vlasničke odnose nad elementima, često je jednostavnije i brže pregledati i postaviti dozvole u oktalnoj notaciji – jednoznamenkasti broj predstavlja određenu dozvolu dok pozicija znamenke označava na kojeg korisnika se što odnosi:

r => 4

w => 2

x => 1

Zbroj ovih vrijednosti odvojenih dozvola označava ukupnu dozvolu (npr. “rw” pravo je 4+2=6, “rx” je 4+1=5).

Ukupna oznaka za dozvole se sastoji od četiri znamenke – s desne strane na lijevo: svi, vlasnička grupa, vlasnik, specijalna upotreba (nešto kasnije o tome, može se i izostaviti). Ukoliko želimo samo vlasniku i vlasničkoj grupi dati isključivo dozvolu čitanja nad nekom datotekom oznaka će izgledati ovako: 0440. Kako bi samo vlasniku omogućili pisanje i čitanje a grupi i ostalima samo čitanje oznaku ćemo zapisati kao 0644.

Dodatne dozvole

Četvrta znamenka gledana s desne strane ima specijalnu namjenu i kod datoteka se upotrebljava samo za izvršne. Upotrebom vrijednosti 4 se za potrebe programa koji se izvršava preko datoteke daju prava vlasnika te datoteke (setuid), dok je s 2 ista stvar za vlasničku grupu (setgid). Jedan od lakših primjera za ovo razumjeti je naredba ping. Osnovni korisnik nema prava pregleda nad mrežnim paketima što je potrebno za ping komandu da bi mogla pravilno raditi. Stoga se izvršnoj ping datoteci (čiji je vlasnik root) dodaje setuid zastavica (npr. iz početne dozvole 0755 u 4755) kako bi ping komanda imala pregled nad mežnim paketima (tj. root prava) iako sam osnovni korisnik koji ju je pokrenuo to ne može.

Vrijednost 1 se zove i sticky bit (povijesni razlozi, nigdje se ne lijepi ;)) i ima utjecaja samo na direktorije – ukoliko je postavljena dozvole nad preimenovanjem  i brisanjem datoteka unutar direktorija imaju samo vlasnik direktorija i root (npr. 1777). Primjena – iako će preko dozvola direktorija 1777 svaki korisnik moći postaviti datoteku unutar direktorija samo će je vlasnik direktorija, vlasnik datoteke ili root moći obrisati – česti slučaj u /tmp direktoriju gdje svi mogu pisati ali nije preporučljivo svaki korisnik može drugome brisati ili preimenovati datoteke.

Postavljanje dozvola

Dozvole nad datotekama i direktorijima se postavljaju komandom chmod, a opis njene primjene možete pročitati u chmod članku na wiki.open.hr.




Tagovi: , ,