Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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.
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
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
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.