Sunteți pe pagina 1din 6

LUCRAREA NR.

Permisiunile de acces asupra fi]ierelor ]i directoarelor

Sistemul de operare UNIX este un sistem multiuser, iar permisiunile de acces asupra fi]ierelor ]i
directoarelor reprezint[ una dintre facilit[\ile de securitate ale acestui sistem.
#n fapt, este vorba de o modalitate prin care sistemul protejeaz[ fi]ierele ]i directoarele @mpotriva
oric[rui acces neautorizat, inten\ionat sau accidental.
Toate fi]ierele ]i directoarele UNIX au permisiuni de acces ]i proprietari.
La momentul cre[rii unui fi]ier sau director, utilizatorul ce le-a creat devine @n mod automat
proprietarul acestora (owner). Aceasta @nseamn[ c[ el are privilegiul de a schimba permisiunile
(specific[ cine ]i ce permisiuni are) sau poate schimba proprietarul fi]ierului (directorului)1 .
Schimbarea permisiunilor de acces sau a proprietarului are drept scop furnizarea unui acces mai
complet asupra fi]ierelor ]i directoarelor.
Schimbarea proprietarului unui fi]ier sau director se face cu comanda:
chown proprietar_nou nume_fisier
Utilizatorii (dar ]i fi]ierele ]i directoarele) apar\in grupurilor. Grupurile reprezint[ o modalitate
convenabil[ de a furniza autoriz[ri de acces mai multor utilizatori, dar nu oric[rui utilizator din sistem. La
momentul cre[rii unui utilizator, grupul implicit al acestuia este cel ce @i poart[ numele ]i care este creat
odat[ cu utilizatorul.
Comanda prin care se poate schimba grupul c[ruia @i apar\ine un fi]ier (director) este:
chgrp grup_nou nume_fisier
Proprietarul fi]ierului trebuie s[ fie membru al noului grup (grup_nou).

Observa\ie:
Grupul users este cel ce con\ine to\i utilizatorii neprivilegia\i ai sistemului.

Permisiunile de acces asupra fi]ierelor (directoarelor) acceptate de UNIX sunt:


 permisiunea de citire (r) - permite vizualizarea (citirea) con\inutului unui fi]ier. #n cazul
unui director permite afi]area con\inutul acestuia (utiliz`nd, de exemplu, comanda ls).
 permisiunea de scriere (w) - permite modificarea, ]tergerea ]i redenumirea unui fi]ier. #n
cazul unui director existen\a acestei permisuni permite actualizarea, ]tergerea ]i redenumirea
directorului.
 permisiunea de execu\ie (x) - permite executarea fi]ierului prin tastarea numelui acestuia.
Pentru directoare permite accesul (comutarea) @n directorul respectiv, ]i efectuarea de
opera\ii asupra fi]ierelor din cadrul s[u.

Observa\ii:
1. Dac[ un utilizator are permisiunea de scriere asupra unui director ce con \ine fi]iere,
permisiunile asupra fi]ierelor respectiv sunt rescrise de permisiunile pe acel direc tor.
2. Orice utilizator care are permisiunea de a citi un fi]ier poate s[ copieze acel fi]ier. C`nd un
fi]ier este copiat, copia se afl[ @n proprietatea utilizatorului care a efectuat copierea. Acesta poate s[
schimbe proprietarul ]i permisiunile, s[ editeze fi]ierul ].a.m.d.
3. }tegerea permisiunii de scriere asupra unui fi]ier nu permite ca acesta s[ fie ]ters.

Pentru a vizualiza permisiunile existente asupra unui fi]ier (director) se folose]te comanda:
ls –l nume_fisier
De exemplu, se tasteaz[:
ls –l test.txt
Se va afi]a:
-rw-rw-r--1 student student 150 Dec 19 08:08 test.txt
Interpretarea informa\iei afi]ate se face astfel:

1
Utilizatorul root are permisiunea de a citi, scrie, ]i executa orice fi]ier din sistem, indiferent cine este
proprietarul acestora.
1
Primul caracter din ]irul afi]at indic[ tipul fi]ierului. Astfel, dac[ acest caracter este - atunci este
vorba de un fi]ier normal. Dac[ caracterul este d, atunci este vorba de un director, iar dac[ caracterul este
l este vorba de o leg[tur[ simbolic[ c[tre un alt program sau fi]ier din sistem 2 .
Urm[toarele nou[ caractere din ]irul afi]at specific[, @n seturi de c`te trei, permisiunile de acces
pentru urm[toarele trei categorii diferite de entit[\i:
 proprietarul (owner) fi]ierului (directorului);
 grupul (group) (utilizatorii ce apar\in aceluia]i grup ca ]i proprietarul fi]ierului
/directorului)3 ;
 al\ii (others) (utilizatorii ]i grupurile altele dec`t proprietarul ]i cei din grupul c[ruia @i
apar\ine proprietarul).
Dac[ unul din caracterele ce specific[ permisiunile (r, w, x) va ap[rea ca fiind @nlocuit prin
caracterul -, atunci permisiunea respectiv[, pentru entitatea @n cauz[, nu va fi acordat[.
Alte informa\ii afi]ate de c[tre comanda ls –l includ: numele fi]ierului, data ]i timpul cre[rii
sale, m[rimea acestuia.

Schimbarea permisiunilor de acces asupra fi]ierelor


Pentru a schimba permisiunile de acces asupra fi]ierelor se utilizeaz[ comanda:
chmod indicator nume_fisier.
unde indicator se va @nlocui cu identitatea entit[\ii pentru care se face schimbarea de permisiune:
u utilizatorul care este proprietar al fi]ierului (owner)
g grupul c[ruia @i apar\ine utilizatorul
o al\ii (al\ii dec`t utilizatorul ]i grupul acestuia) (others)
a oricine (u, g ]i o) (everyone)
urmat[ de tipul ac\iunii ce se dore]te:
+ adaug[ o permisiune
- elimin[ o permisiune
= marcheaz[ permisiunea ca fiind singura acceptat[
]i litera (literele) aferente permisiunilor (r, w, x).

Observa\ii:
1. #n cadrul sintaxei comenzii chmod, indicator se poate @nlocui ]i cu un num[r format din
trei cifre, a c[rui codificare este explicat[ @n continuare.
2. At`t timp c`t suntem proprietar al unui fi]ier (director), sau suntem conecta\i ca utilizator
privilegiat (root), putem s[ modific[m permisiunile fi]ierului (directorului) @n orice combina\ie pentru
proprietar, grup ]i al\ii.

Exist[ dou[ modalit[\i de modificare a permisiunilor.


O prim[ modalitate este cea @n care se folosesc literele. Pentru a specifica entit[\ile pentru care se
schimb[ permisiunile, se vor tasta literele u, g, o sau a @n sintaxa comenzii chmod. Litera (literele) vor fi
urmate de unul dintre semnele +, -, sau =, pentru a ad[uga, ]terge sau marca permisiunea ca fiind singura
acceptat[ Semnul este urmat de litera permisiunii respective (r, w, x).
Exemple:
Presupunem c[ permisiunile ini\iale ale fi]ierului test.txt sunt:
-rw-rw-r--1 student student 150 Dec 19 08:08 test.txt
Conform permisiunilor afi]ate proprietarul (student) ]i grupul (student) pot citi ]i scrie @n
fi]ier. Oricine alt utilizator ce nu apar\ine grupului student poate numai s[ citeasc[ fi]ierul.
Dac[ tast[m comanda:
chmod o+rw test.txt
numai al\ii (ce nu sunt nici proprietari ]i nici nu apar\in grupului student) vor putea s[ citeasc[ ]i s[
scrie fi]ierul.
Deoarece utilizatorul student este proprietar al acestui fi]ier, el va putea @ntotdeauna s[ schimbe
permisiunile pentru a rec[p[ta accesul @n citire ]i scriere.

2
Sunt posibile ]i alte caractere. Semnifica\ia acestora este explicat[ @n lucrarea nr. 4.
3
Grupul din care face parte proprietarul.
2
Comanda ce se va tasta va fi:
chmod u+rw test.txt
cat test.txt
acesta este un test
S-a verificat ]i permisiunea @n citire cu ajutorul comenzii cat.
Pentru ]tergerea tuturor permisiunilor asupra fi]ierului test.txt pentru oricine, se va tasta
comanda:
chmod a-rw test.txt
S[ vedem dac[ fi]ierul poate fi citit:
cat test.txt
cat: test.txt: Permission denied
Mesajul de eroare returnat de sistem, Permission denied, semnific[ faptul c[ execu\ia
comenzii anterioare (cat), nu este posibil[ datorit[ lipsei permisiunii de citire necesare.
Alte exemple de set[ri ce pot fi folosite @n cadrul comenzii chmod sunt:
g+w adaug[ permisiunea de scriere pentru grup
o-rwx ]terge toate permisiunile pentru al\ii
u+x permite proprietarului fi]ierului s[ execute fi]ierul
a+rw pemite oricui s[ citeasc[ ]i s[ scrie @n fi]ier
ug+r permite proprietarului ]i grupului s[ citeasc[ fi]ierul
g=rx permite grupului numai s[ citeasc[ ]i s[ execute fi]ierul, f[r[ scriere

O a doua metod[ de modificare a permisiunilor asupra fi]ierelor este cea bazat[ pe un sistem de
codificare numeric[. Acesta permite specificarea permisiunilor asupra fi]ierelor sub forma unui num[r
din 3 cifre octale.
Este important de a @n\elege cum lucreaz[ acest sistemul de codificare, deoarece numerele @n
cauz[ sunt folosite, at`t pentru a schimba permisiunile asupra fi]ierelor, c`t ]i de c[tre mesajele de eroare
ce implic[ permisiunile.
#n cadrul unui astfel de num[r prima cifr[ codific[ permisiunile pentru proprietar, a doua pe cele
pentru grup ]i a treia pe cele pentru al\ii.
Conform sistemului de codificare respectiv, seturile de c`te trei permisiuni (rwx) pot fi
interpretate ca un num[r binar pe 3 bi\i. Astfel, o permisiune acordat[ corespunde unei cifre de 1, iar o
permisiune neacordat[ corespunde unei cifre de 0. Prin urmare pentru setul (r–x) combina\ia binar[
corespondent[ va fi 101 care @n zecimal este egal[ cu: 4+0+1=5.
Cifrele individuale sunt codificate prin @nsumarea tuturor permisiunilor, "permise" pentru acel
utilizator particular4 dup[ cum urmeaz[:
Permisiune citire 4
Permisiune scriere 2
Permisiune execu\ie 1
Sunt posibile urm[toarele combina\ii:
0 - nici o permisiune
4 - numai citire
2 - numai scriere
1 - execu\ie
6 - citire ]i scriere
5 - citire ]i execu\ie
3 - scriere ]i execu\ie
7 - toate
Prin urmare o permisiune asupra unui fi]ier, codificat[ prin num[rul 751, @nseamn[ c[
proprietarul are permisiunile r,w,x (4+2+1=7), grupul are permisiunile r ]i x (4+0+1=5) ]i al\ii au
numai permisiunea x (0+0+1=1).
Felul @n care metoda expus[ permite schimbarea permisiunilor asupra fi]ierelor se observ[ ]i din
exemplele urm[toare:
ls -l test.txt
-rw-r--r--1 student student 114 Dec 7 14:31 test.txt

4
Deci dintr-un set de trei.
3
chmod 345 test.txt
ls -l test.txt
--wxr--r-x 1 student student 114 Dec 7 14:31 test.txt
ls -l test.txt
-rw-r--r--1 student student 114 Dec 7 14:31 test.txt
chmod 664 test.txt
ls -l test.txt
-rw-rw-r-—1 student student 114 Dec 7 14:31 test.txt
Dac[ @n cadrul acestui exemplu se dore]te ca utilizatorii din grupul student s[ nu aib[
permisiunea de scriere dar s[ o aib[ pe cea de citire, asupra fi]ierului test.txt, va trebui eliminat[
permisiunea respectiv[ prin sc[derea lui 2 din cel de-al doilea set de permisiuni. Num[rul va deveni 644.
Se va tasta comanda:
chmod 644 test.txt
Pentru verificarea modific[rii se tasteaz[ comanda:
ls –l test.txt
-rw-r—r—1 student student 114 Dec 7 14:31 test.txt
Pentru a reda permisiunea de scriere grupului student asupra fi]ierului @n cauz[, se va ad[uga
valoarea 2 la cel de-al doilea set de permisiuni.
chmod 664 test.txt

Observa\ie:
Setarea permisiunilor 666 sau 777 va permite ca orice utilizator s[ poat[ citi ]i scrie @ntr-un
fi]ier sau director. Asemenea set[ri pot determina fraudarea fi]ierelor, ]i ca urmare nu sunt recomandate.

#n continuare sunt prezentate c`teva dintre cele mai obi]nuite set[ri, valori numerice, precum ]i
semnifica\ia lor:
-rw------- (600) - numai proprietarul are permisiunile r ]i w
-rw-r--r-- (644) - numai proprietarul are permisiunile r ]i w; grupul ]i al\ii pot numai s[
citeasc[
-rwx------ (700) - numai proprietarul are permisiunile r w x
-rwxr-xr-x (755) - proprietarul are permisiunile r w ]i x; grupul ]i al\ii pot numai s[
citeasc[ ]i s[ execute
-rwx--x--x (711) - proprietarul are permisiunile r w x; grupul ]i al\ii pot numai s[ execute

-rw-rw-rw- (666) - oricine poate s[ citeasc[ ]i s[ scrie @n fi]ier


-rwxrwxrwx (777) - oricine poate s[ citeasc[, s[ scrie, s[ execute.

Schimbarea permisiunilor asupra directoarelor


Se poate realiza exact @n acela]i fel ca ]i @n cazul fi]ierelor, deci tot cu ajutorul comenzii chmod.
Orice utilizator care are permisiunea de scriere @ntr-un director poate ]terge fi]iere din acel director, chiar
dac[ utilizatorul are sau nu permisiunea de scriere asupra fi]ierului.
Deoarece nu putem "executa" un director, c`nd se seteaz[ sau ]terge permisiunea de execu \ie
asupra acestuia, @n fapt se seteaz[ sau se ]terge permisiunea de a c[uta @n acel director.
De exemplu s[ tast[m:
chmod a-x aplicatii
pentru a ]terge permisiunea de execu\ie pentru to\i utilizatorii.
Iat[ ce se @nt`mpl[ c`nd se @ncearc[ folosirea comenzii cd @n directorul aplicatii:
cd aplicatii
bash:aplicatii: Permission denied
S[ restaur[m permisiunea de execu\ie pentru proprietar ]i pentru grupul acestuia:
chmod ug+x aplicatii
Acum, dac[ vom verifica cu ajutorul comenzii ls –dl se va vedea c[ numai others au
interzis accesul la directorul aplicatii.
Pentru a permite oricui de a avea acces @n citire ]i scriere asupra directorului aplicatii se va
tasta:
chmod –R a+rw aplicatii

4
Prin ad[ugarea indicatorului –R, se pot schimba permisiunile pentru @ntreaga structur[ director.
C`teva set[ri obi]nuite pentru directoare, sunt:
drwx------ (700) - numai proprietarul are permisiunile r, w, x @n acest director
drwxr-xr-x (755) - oricine poate citi directorul dar con\inutul s[u poate fi modificat numai
de c[tre proprietar

Observa\ii:
1. Modalitatea de a ob\ine acces la un fi]ier atunci c`nd nu avem permisiunile necesare, ]i f[r[ a
ne deconecta de la sistem, este de a utiliza comanda su. Acesta permite conectarea cu numele altui
utilizator ce are permisiunile necesare. Evident va trebui s[ cunoa]tem parola utilizatorului respectiv.
2. Unele versiuni de UNIX furnizeaz[ un bit suplimentar numit sticky bit ca parte a
permisiunii asupra unui director. Scopul acestui bit este de a permite numai proprietarului directorului,
proprietarului fi]ierului sau utilizatorului root s[ ]tearg[ ]i s[ redenumeasc[ fi]iere.

Permisiuni implicite
Atunci c`nd un utilizator se conecteaz[ la un sistem UNIX, @i sunt furnizate anumite permisiuni
implicite. Toate fi]ierele ]i directoarele pe care acesta le creeaz[ vor avea permisiunile definite @n umask.
Pentru a afla care sunt permisiunile definite implicit pentru un utilizator, acesta va tasta comanda:
umask
Rezultatul afi]at (masca) poate fi similar cu urm[torul:
022
umask este stocat ]i afi]at ca un num[r ce va fi sc[zut din 777. 022 @nseamn[ c[ permisiunile
implicite sunt: 777-022=755
umask-ul implicit, setat de obicei pentru to\i utilizatorii de c[tre administratorul de sistem, poate
fi modificat pentru a corespunde cerin\elor particulare ale unui utilizator. Modificarea se face de c[tre
utilizator prin executarea comenzii umask cu un argument, care reprezint[ masca pe care o dore]te.
De exemplu, dac[ dore]te ca permisiunile implicite s[ fie proprietar cu r, w, x (7); grup cu r, x
(5); ]i al\ii cu x (1), umask trebuie setat la 777-751=026. Deci se va executa comanda:
umask 026
#n general, comanda umask este folosit[ de c[tre administratorul de sistem pentru a seta valoarea
implicit[ a permisiunilor ce va fi asignat[ fiec[rui fi]ier creat de c[tre un utilizator.

setuid ]i setgid

Atunci c`nd un utilizator execut[ anumite programe, este posibil s[ fie necesar ca acesta s[ @]i
asume identitatea unui utilizator sau grup diferit.
Acest lucru este posibil prin setarea bitul SET USER ID (setuid) asupra unui fi]ier
executabil, astfel @nc`t atunci c`nd fi]ierul este executat, utilizatorul ce efectueaz[ opera\ia respectiv[ s[
@]i asume identitatea utilizatorului care este proprietarul fi]ierului @n cauz[.
De exemplu, dac[ se execut[ un fi]ier numit testprg, care se afl[ @n proprietatea utilizatorului
user1, pe durata execu\iei acestuia, utilizatorul care a ini\iat aceast[ opera\ie, @]i va asuma identitatea lui
user1.
Un alt exemplu referitor la modul @n care se folose]te bitul SET USER ID, este urm[torul.
S[ presupunem c[ se dore]te efectuarea unei copii de siguran\[ a tuturor fi]ierelor din sistem de
c[tre utilizatorul student. #n mod normal aceast[ opera\ie este efectuat[ de c[tre utilizatorul root.
Pentru ca opera\ia s[ poat[ fie efectuat[ de c[tre utilizatorul student, se va creea o copie a programului
ce permite realizarea copiei de siguran\[, cu bitul SET USER ID setat. Apoi utilizatorul student va
putea executa acest program ]i pe durata opera\iei de salvare @]i va asuma identitatea utilizatorului root.
#ntr-o manier[ similar[, dac[ bitul SET GROUP ID (setgid) al unui fi]ier executabil este
setat, executarea acelui fi]ier va avea ca efect asumarea identit[\ii grupului ce este proprietarul fi]ierului,
pe durata execu\iei acestuia.

Exerci\ii

1. #n directorul de lucru curent s[ se creeze un subdirector ]i s[ se vizualizeze permisiunile de

5
acces, interpret`ndu-se.
2. Pentru un director creat anterior de c[tre utilizatorul stud1, s[ se ]tearg[ permisiunea de
scriere aferent[ proprietarului, ]i s[ se adauge permisiunea de execu \ie pentru others. Pentru
specificarea permisiunilor se vor folosi literele.
3. Pentru un director creat anterior de c[tre utilizatorul studl, s[ se ]tearg[ permisiunea de
execu\ie aferent[ proprietarului, ]i s[ se adauge permisiunea de scriere pentru others. Pentru
specificarea permisiunilor se va folosi codificarea numeric[.
4. S[ se determine care sunt permisiunile implicite pentru utilizatorul stud1.

S-ar putea să vă placă și