Sunteți pe pagina 1din 7

LABORATOR 6 Sistemul de permisiuni

Concepte generale
Sistemul de fisiere in Linux imparte in mod standard utilizatorii in 3 categorii: a) owner (proprietarul fisierului). By default (implicit) un fisier nou creat primeste ca owner creatorul sau. Owner-ul are drepturi totale asupra fisierului, poate sa-l stearga, sa-l modifice sau sa-i schimbe proprietatile.

Exemplu
Daca userul numit dan creaza un fisier nou numit raport.pdf, ownerul fisierului va fi userul dan. b) group (grupul proprietar al fisierului). Folosind grupul care detine fisierul se pot seta drepturi pentru un numar mai mare de utilizatori. Implicit, un fisier nou creat primeste ca grup owner, grupul principal al userului care-l creaza.

Exemplu
Daca userul dan are grupul principal numit contabili, fisierele create de acesta vor avea ca owner pe dan, iar ca grup owner contabili. c) others (ceilalti). Toti utilizatorii care nu fac parte din cele 2 categorii.

Nota
Conceptele referitoare la owner si group owner mai sus mentionat sunt adevarate atat pentru fisierele nou create cat si pentru directoarele nou create. Fiecare dintre cele 3 categorii detine independent urmatoarele drepturi asupra unui fisier sau director: a) b) c) r (read) - dreptul de citire w (write) - dreptul de scriere x (execute) - dreptul de executie

Aceste drepturi au efecte diferite in functie de tipul fisierului (fisier normal sau de tip director). Permisiun e
read

Fisier
dreptul de citire al continutului fisierului dreptul de modificare al continutului fisierului dreptul de a executa fisierul

Director
dreptul de a afisa continutul directorului dreptul de a modifica continutul directorului (stergere, creare, redenumire fisiere/directoare continute in director) impreuna cu x continute. dreptul de a acces la fisierele ne muta in director.

write

execute

Nota
Daca un director contine dreptul de scriere (w) pentru o anumita categorie de user (owner, group sau other), acea categorie are dreptul de a sterge/modifica continutul directorului (doar fisiere NU si directoare) chiar daca pentru acele fisiere nu exista drepturi. Pentru a sterge/modifica continutul directorului trebuie sa avem atat w cat si x.

Exemplu
Daca un director are pentru owner permisiunile de read(r) si write(w) dar nu si execute(x), owner-ul nu va putea crea noi fisiere in director, nu va putea sterge continutul directorului si nu se va putea muta in director. Motivul este lipsa permisiunii execute pentru director.

Permisiuni speciale
In afara permisiunilor standard (read, write si execute) exista urmatoarele permisiuni speciale: 1) SUID executabile. (setuid) - reprezinta o permisiune speciala pentru fisierele

Nota
In Linux un fisier executabil are aceleasi drepturi ca si userul care il executa. Setand bit-ul SUID, la executare fisierul are drepturile owner-ului si nu al celui care il executa. Fisierele cu SUID setat si cu owner root reprezinta o grava problema de securitate. Oricine le poate executa, iar in urma executiei procesul creat va avea drepturi de root.

Exemplu
a. Comanda rm este reprezentata fizic prin fisierul executabil /bin/rm care are drept owner pe root. In momentul in care root executa comanda rm efectul este ca aceasta comanda are drepturile lui root si poate sterge orice fisier din sistem. Daca un alt user executa comanda rm, efectul este ca aceasta comanda va avea drepturile userului care a executat-o si deci nu va putea sterge niciun fisier important. In schimb daca se seteaza permisiunea SUID pentru fisierul /bin/rm, orice user non-root care executa comanda rm va putea sterge ORICE fisier din sistem. Acest lucru se intampla fiindca comanda rm are drepturile ownerului adica root si nu drepturile celui care o executa, asa cum este implicit. b. User neprivilegiat care poate vizualiza fisierul /etc/shahow deoarece comanda less are SUID setat.

Comanda ls -l afiseaza pentru fisierele cu SUID setat "s" (s mic) pe pozitia dreptului de executie pentru owner daca fisierul are dreptul de executie pentru owner sau "S" (s mare) daca fisierul nu are dreptul de executie pentru owner. 2) SGID (setgid) - reprezinta o permisiune speciala care are efecte diferite daca se aplica unui fisier sau unui director. Cand se aplica unui fisier, daca fisierul este executabil, procesul creat in urma executiei fisierului va rula cu drepturile grupului care detine fisierul si nu cu grupul primar al userului care executa fisierul. Aceasta permisiune ( SGID) este folosita mai ales pentru directoare si anume pentru a crea directoare "shared". Fisierele noi create in interiorul directorului vor avea ca grup care le detine grupul directorului si nu al userului care le creaza cea ce se intampla default. Comanda ls -l afiseaza pentru fisiere cu SGID setat "s" (s mic) pe pozitia dreptului de executie pentru grup daca fisierul sau directorul are dreptul de executie pt. grup sau "S" (s mare) daca fisierul sau directorul nu are dreptul de executie pentru grup. 3) Sticky bit - se foloseste pentru directoarele "world writeable" si are rolul de a preveni posibilitatea stergerii continutului acestora de catre useri altii decat ownerul

directorului cu sticky bit setat sau ownerul fisierului din acel director, chiar daca drepturile directorului ar permite acest lucru (rwx).

Exemplu
Directorul /tmp

Nota
Root face exceptie, iar grupul fisierului se supune regulii (nu poate modifica).

Aplicatie
Sticky Bit se foloseste in momentul in care se doreste crearea unui director world writeable (toate permisiunile pentru toti userii), dar cu protejarea continutului. Fara sticky bit orice user poate crea fisiere in director, dar poate si sterge fisierele create de alti useri. Daca directorul are sticky bit, fiecare user are dreptul sa stearga doar propriile fisiere. Comanda ls -l afiseaza pentru directoarele cu sticky bit setat "t" (t mic) pe pozitia dreptului de executie pentru other daca fisierul are dreptul de executie pentru other sau "T" (t mare) in rest.

Modificarea permisiunilor
Pentru a modifica drepturile de acces ale unui fisier se foloseste comanda chmod (change mode) cu urmatoarea sintaxa: chmod [OPTION]... MODE... FILES Exista doua posibilitati de setare a drepturilor de acces: 1) Modul simbolic (relativ) - trebuie avute in vedere urmatoarele: a) ale cui drepturi se modifica (u pentru owner, g pentru group, o pentru other, a pentru all) b) ce presupune modificarea (+ (plus) pentru adaugare, - (minus) pentru eliminare, = (egal) pentru setare indiferent de permisiunile deja existente) c) ce permisiuni se modifica (r pentru read, w pentru write, x pentru execute, s pentru setuid/setgid si t pentru sticky bit)

Exemplu
a. Pentru fisierul /home/stud/orar.doc se modifica drepturile de acces astfel: pentru owner se aduga r,w si x, pentru grup se adauga r si w, iar pentru o se adauga r. Totul

este relativ la drepturile avute deja. chmod u+rwx,g+rw,o+r /home/stud/orar.doc b. Pentru fisierul /home/stud/test_conexiune_internet.sh se modifica drepturile de acces astfel: pentru owner si group se adauga dreptul de executie iar pentru other se elimina toate drepturile. chmod ug+x,o-rwx /home/stud/test_conexiune.sh c. Se seteaza sticky bit pentru directorul /home/stud/tmp chmod +t /home/stud/tmp Totul este relativ la permisiunile deja existente.

2. Modul octal (absolut) - se folosesc 4 cifre in baza 8 (intre 0 si 7) in mod pozitional astfel: pentru fiecare grupa de permisiuni (u, g si o) in functie de existenta sau lipsa unei permisiuni specific se aduna o cifra conform cu puterea lui 2 corespunzatoare acelei pozitii. Lipsa unei permisiuni se marcheaza cu semnul "-" (minus).

Exemplu
r 4 w 2 0 r 4 0 x 1 r 4 0 0

Permisiune fisier = 654 Prima cifra din cele 4 reprezinta biti speciali care se pot seta ( SUID, GUID si Sticky bit). Daca este zero reprezinta lipsa lor. Daca se omite se considera zero (permisiunea 654 este de fapt 0654). Pentru prima cifra se poate folosi: 1 pentru sticky bit 2 pentru SGID 4 pentru SUID Echivalenta dintre modul relativ si absolut: rwx rwx = 0777 ----= 0400 rw- r-x = 4665 r-s rwx = 2657

rwx r-rwS rw-

Exemplu
chmod chmod chmod chmod 0777 0400 4665 2657 /home/stud/a.txt /home/stud/b.txt /home/stud/c.txt /home/stud/d.txt

Note
1. Nu se pot schimba permisiunile pentru symlink-uri, acestea neavand nici o utilitate. Apelul comenzii chmod pentru un symlink va modifica permisiunile fisierului referit si nu pe cele ale symlinkului. 2. Restrictiile cu privire la accesul la fisiere sunt respectate in functie de permisiunile pe directoarele parinte. De asemenea, foarte importante sunt permisiunile pentru directoarele care contin directoarele parinte, in sensul ca restrictiile pentru acestea din urma se mostenesc.

Umask
Conceptul de umask (user mask) se foloseste pentru a stabili permisiunile implicite cu care este creat un director sau fisier. Permisiuni implicite: fisiere - 0666 (rw- rw- rw-)

directoare - 0777 (rwx rwx rwx) Pentru a modifica permisiunile implicite se foloseste umask astfel: din valoarea default se scade masca (pozitional), rezultand modul in care vor fi create fisierele in ceea ce priveste permisiunile.

Exemplu
- daca umask este 0002 noile fisiere create vor avea permisiunile 0664 iar directoarele 0775 - daca umask este 0022 noile fisiere create vor avea permisiunile 0644 iar directoarele 0755 Fiecare user are propria valoare pentru umask (umask se seteaza per user). Masca utilizatorului se vizualizeaza folosind comanda umask. Pentru a modifica umask se foloseste comanda: umask NOUA_MASCA

Exemplu
umask 0222 NOUA_MASCA poate fi reprezentata octal sau simbolic.

Note
a. Umask nu trebuie schimbata decat in situatii deosebite. Modificarea umask poate duce la instabilitatea intregului sistem. b. Odata modificat umask, noua valoare nu se pastreaza decat pana la urmatorul restart. Pentru ca modificarea umask sa fie permanenta se scrie comanda de modificare a umask intr-un fisier de initializare al environment-ului utilizatorului precum ~/.bashrc.

Atribute speciale
Sistemele de fisiere extinse precum ext3 folosesc pe langa permisiunile clasice si cateva atribute speciale pentru fisiere si directoare. Pentru setarea acestora se foloseste comanda chattr. chattr ATRIBUT FISIER -i = immutable (nu poate fi sters sau modificat) -A = nu actualizeaza atime -R = modifica atributele speciale recursiv pentru directoare -a = just append

Exemplu
chattr +i a.txt chattr -a a.txt Pentru vizualizarea atributelor se foloseste comanda lsattr. -R = listeaza recursiv continutul directorului -d = listeaza atributele directorului in loc de continutul acestuia -a = listeaza atributele fisierelor ascunse

Exemplu
lsattr a.txt

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