Capitolul 6 Sistemul de permisiuni
6.1 Concepte generale
6.2 Permisiuni speciale
6.3 Modificare permisiuni
6.4 Umask
6.5 Atribute speciale
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 nr. mai mare de utilizatori. By default 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 sau restul lumii). 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) r (read) - dreptul de citire
b) w (write) - dreptul de scriere
c) x (execute) - dreptul de executie
Aceste drepturi au efecte diferite in functie de tipul fisierului (fisier normal sau de tip director).
Permisiune
|
Fisier
|
Director
|
read
|
dreptul de citire al continutului fisierului
|
dreptul de a afisa continutul directorului
|
write
|
dreptul de modificare al continutului fisierului
|
dreptul de a modifica continutul directorului(stergere, creare, redenumire fisiere/directoare continute in director) impreuna cu x
|
execute
|
dreptul de a executa fisierul
|
acces la fisierele continute. dreptul de a ne muta in director.
|
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 daca exista si dreptul de executie pentru director.
|
Exemplu
|
1. 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 (setuid).
Reprezinta o permisiune speciala pentru fisierele executabile.
Important
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
|
1. 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 comandarm 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 cum este default.
2. User neprivilegiat care poate vizualiza fisierul /etc/shahow fiindca 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 pt. 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: /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.
Dostları ilə paylaş: |