tutoriale photoshop, brushes, patterns, gradient
Site afiliat proiectului Wtricks.com
   
   
  REGULAMENT | Search | Members | Calendar | Help  
 


Post Reply  Post Thread 
Drepturile fisierelor in UNIX
Author Message
Agkelos
Designer experimentat
*******


Posts: 556
Group: Registered
Joined: Apr 2007
Status: Offline
Reputation: 10
Lei: 2458.56
Post: #1
Drepturile fisierelor in UNIX

Sistemele UNIX (si UNIX-Like), fiind multi-user si multi-tasking au nevoie
de o delimitare foarte clara a permisiunilor. Pe scurt, datorita faptului
ca in UNIX orice este, de fapt, un fisier s-a implementat sistemul de permisiuni
a fisierelor (implicit si al directoarelor). Astfel, un fisier se poate comporta
in diferite moduri in functie de persoana care o acceseaza. Daca un fisier este
accesat de proprietarul fisierului se comporta intr-un anumit fel… daca este
accesat de altcineva dar face parte din grupul care este asociat fisierului se
comporta in alt fel iar daca este accesat de oricine altcineva (care nu are nici
o legatura cu fisierul) se comporta intr-un mod diferit.

Cum se face asta ? Este un sistem relativ simplu. Dupa cum ati observat fisierele
au 3 cateogrii de utilizatori si anume: proprietarul fisierului, membrii grupului
asociat fisierului, si restul utilizatorilor. Fiecarei categorii i se pot da 3
drepturi si anume: executare, citire, scriere (sau combinatii ale acestor 3 categorii).

Ca sa dau un exemplu concret, prezit urmatorul cod:

su-2.05b# ls -al
total 4
drwxr-xr-x 2 root wheel 512 Jun 25 21:00 ./
drwxrwxrwt 13 root wheel 512 Jun 25 21:00 ../
-rw-r–r– 1 root wheel 0 Jun 25 21:00 fisier.txt
su-2.05b#

Se poate observa ca fiecare linie incepe cu o secventa de 10 caractere. Primul caracter
arata daca ceea ce vedem este un fisier simplu (-) sau daca e director (d). Urmatoarele
9 caractere sunt grupe de cate 3 corespunzatoare celor 3 categorii de utilizatori
(proprietar, membru al grupului, utilizator simplu). Fiecare grup de 3 caractere prezinta
permisiunile asupra fisierului.

Adica, caracterele 2, 3, 4 ne arata ce drepturi are proprietarul fisierului, caracterele
5, 6, 7 ne arata ce drepturi au utilizatorii din grupul asociat (in cazul nostru wheel)
iar caracterele 8, 9, 10 ne arata ce drepturi au ceilalti utilizatori.
In cazul nostru, proprietarul (root) are drepturile “rw-” adica citire (r - read)
si scriere (w - write). Linia de dupa rw ne arata ca proprietarul NU are dreptul de
executie asupra fisierului. Ce inseamna asta ? fisierul respectiv poate fi citit sau
modificat de proprietar dar sistemul de operare nu il vede ca script sau program executabil.
Utilizatorii din grupul asociat fisierului si restul utilizatorilor au aceleasi drepturi
(r–), adica au doar dreptul de citire.

Modificarea drepturilor
Modificarea drepturilor asupra unui fisier se face cu ajutorul comenzii chmod. Comanda
chmod are urmatoarea sintaxa: “chmod optiuni mod fisier”.

Mai jos, un exemplu concret:

su-2.05b# ls -al
total 4
drwxr-xr-x 2 root wheel 512 Jun 25 21:00 ./
drwxrwxrwt 13 root wheel 512 Jun 25 21:00 ../
-rw-r–r– 1 root wheel 0 Jun 25 21:00 fisier.txt
su-2.05b# chmod 700 fisier.txt
su-2.05b# ls -al
total 4
drwxr-xr-x 2 root wheel 512 Jun 25 21:00 ./
drwxrwxrwt 13 root wheel 512 Jun 25 21:00 ../
-rwx—— 1 root wheel 0 Jun 25 21:00 fisier.txt*
su-2.05b#

Dupa cum observati primele 10 caractere aveau valorile initiale “-rw-r–r–” iar dupa
executarea comenzii chmod cele 10 caractere s-au schimbat in “-rwx——”. Adica, tradus
in romana, caracterul - de la inceput ramane la fel (adica e tot fisier simplu), proprietarul
are acum drepturile rwx (citire, scriere, executare) iar restul utilizatorilor (inclusiv cei
din grupul asociat fisierului) nu mai au nici un drept.

Drepturile asociate pot fi date comenzii in doua moduri: modul octal sau cel simbolic.
Mai jos incerc sa fac o scurta descriere a acestor doua moduri.

Modul octal
Modul octal e modul standard de specificare a drepturilor unui fisier. I se spune octal
dintr-un motiv simplu… drepturile sunt de fapt, in reprezentarea interna, 3 octeti.
Probabil pare ciudat, deci nu intru in mai multe detalii (tutorialul e pentru incepatori).
In modul octal drepturile sunt reprezentate printr-un grup de 3 cifre intre 0 si 7 care
reprezinta drepturile cele 3 tipuri de utilizatori. Pentru unii pare cam derutant, dar
este foarte simplu. Mai jos prezint un tabel ca sa intelegeti exact ce reprezinta fiecare cifra.

0 - Nu exista nici un drept asupra fisierului
1 - Drept de executare, dar fara drept de citire sau scriere
2 - Drept de scriere dar fara drept de citire sau executare
3 - Drept de scriere si executare a fisierului dar fara drept de citire
4 - Drept de citire a fisierului, dar fara drept de scriere sau executare
5 - Drept de citire si executare a fisierului, dar fara drept de scriere
6 - Drept de citire si scriere dar fara drept de executare
7 - Drept de citire, scriere si executare a fisierului

Ok… o gramada de cifre pe aici, dar probabil acum va dati seama de ce am dat mai devreme
“chmod 700 fisier.txt” si de ce dupa executarea comenzii proprietarul avea drept de citire,
scriere si executare a fisierului iar restul utilizatorilor nici un drept.

Acum, dupa cum e obiceiul in UNIX, totul are o logica. Aceste cifre nu au fost alese
la intamplare. Ca sa intru putin in amanunte, explic si cum sunt “formate” aceste cifre.
De fapt, tot ce trebuie sa stiti e urmatorul tabel (mai mic):

0 - Nici un drept
1 - Drept de executare
2 - Drept de scriere
4 - Drept de citire

Daca vrem sa facem ceva drepturi avansate, tot ce avem de facut e sa adunam aceste numere.
Adica, daca unui fisier ii dam drept 1, inseamna ca il putem executa. Daca e un script,
vrem sa vada si altii cum arata el in interior, adica ii dam si drept de citire. Asta
inseamna 1 (drept de executare) adunat cu 4 (drept de citire). Rezultatul este 5 (adica
drept de executare si citire). De aici puteti deduce mai departe cum se formeaza drepturile
pentru fiecare user (adica de ce 7 da drepturi depline, 3 da drept de executare si citire).

Ca sa setati permisiunile pentru toate cele 3 tipuri de utilizatori tot ce aveti de facut e
sa formati o cifra corespunzatoare fiecarui tip. Astfel, daca aveti un fisier care trebuie
sa-l poata citi toata lumea, dar sa poata fi scris doar de proprietar, ii puneti drepturile
644, adica proprietarul are dreptul 6 (citire+scriere < -> 4+2) iar restul utilizatorilor
au doar dreptul 4 (citire). Daca vrei ca fisierul sa fie citit doar de cei care sunt din
grupul corespunzator fisierului, folositi comanda chmod cu modul 640 (utilizatorii obisnuiti
au 0, adica nici un drept).

Modul simbolic

Pentru incepatori sau pentru cei care nu sunt de specialitate e greu sau incomod sa foloseasca
modul octal asa ca s-a implementat si modul simbolic care e ceva mai sugestiv. La fel ca in modul
octal, drepturile se aloca pentru fiecare din cele 3 tipuri de utilizatori in parte, cu mentiunea
modul este specificat sub forma (cine)(actiune)(mod).
(cine) va fi inlocuit de u(pentru proprietar), g(pentru grup),
o(others - restul utilizatorilor) sau o combinatie intre cele 3 (ug = proprietar si membrii grupului).
(actiune) va fi inlocuit cu actiunea necesara. Actiunile puse la dispozitie de modul
simbolic sunt +(adaugare de drept), -(eliminarea unor drepturi) sau = (adaugare explicita de drepturi).
Astfel putem adauga, de exemplu, cu + dreptul de citire, putem elimina cu - dreptul de scriere
sau putem folosi = care reseteaza toate drepturile si le seteaza dupa cum se specifica in campul (mod).
(mod) va fi inlocuit de modul sau de drepturile care le alocam. Dupa cum spuneam, e
ceva simbolic deci mai sugestiv. Modul poate fi r(read), w(write) sau x(execute).

Ca sa dau un exemplu concret, revenim la fisier.txt pe care rulam comanda chmod si specificam
drepturile in mod simbolic:

su-2.05b# ls -al
total 4
drwxr-xr-x 2 root wheel 512 Jun 25 21:00 ./
drwxrwxrwt 13 root wheel 512 Jun 25 21:00 ../
-rwx—— 1 root wheel 0 Jun 25 21:00 fisier.txt*
su-2.05b# chmod u-x,g+r,o=rx fisier.txt
su-2.05b# ls -al
total 4
drwxr-xr-x 2 root wheel 512 Jun 25 21:00 ./
drwxrwxrwt 13 root wheel 512 Jun 25 21:00 ../
-rw-r–r-x 1 root wheel 0 Jun 25 21:00 fisier.txt*
su-2.05b#

Ce am facut, de fapt ? Am executat comanda chmod cu parametrul “u-x,g+r,o=rx”. Aceasta secventa ne
spune asa: pentru u(proprietar) scoatem dreptul de executare, pentru g(persoanele din grupul aferent)
adaugam dreptul de citire iar pentru o(restul utilizatorilor) resetam toate drepturile (semnul =)
iar apoi dam dreptul de citire si scriere.
Mai sugestiv, nu ? Poate nu e neaparat mai simplu, dar sigur e mai sugestiv. De obicei incepatorii
folosesc modul simbolic de setare a drepturilor pentru ca e mai usor de tinut minte, dar odata inteles
mecanismul drepturilor toti utilizatorii tind sa foloseasca modul octal care e mai logic si mai
“curat” in cazul scripturilor.

Alte drepturi

In cazul unor sisteme UNIX-Like mai exista si alte drepturi asupra fisierelor. Aici prezint
doar unul dintre aceste drepturi care mi se pare foarte util si anume protectia la stergere.
Daca un fisier este protejat la stergere, nici un utilizator (incluzand proprietarul si
utilizatorul root) nu poate sterge acel fisier indiferent de drepturile care le are.
Acest mod se aplica fisierelor cu ajutorul comenzii chflags. Pentru a vedea daca e setat modul
de protejare se utilizeaza comanda “ls -lo”.
Comanda chflags are urmatoarea sintaxa: chflags optiuni flag fisier.
In cazul nostru, protejarea la scriere, comanda se foloseste ca in exemplul de mai jos:

su-2.05b# ls -lo
total 0
-rw-r–r-x 1 root wheel - 0 Jun 25 21:00 fisier.txt*
su-2.05b# chflags sunlink fisier.txt
su-2.05b# ls -lo
total 0
-rw-r–r-x 1 root wheel sunlnk 0 Jun 25 21:00 fisier.txt*
su-2.05b# rm fisier.txt
rm: fisier.txt: Operation not permitted
su-2.05b#

Dupa cum vedeti, am executat comanda chflags cu modul sunlink asupra fisierului fisier.txt.
La executarea comenzii “ls -lo” apare flag-ul “sunlnk” care ne arata ca fisierul este protejat
la scriere. Cand am incercat sa-l sterg (rm fisier.txt) mi-a aparut mesajul “rm: fisier.txt:
Operation not permited”. Adica nu ma lasa sa sterg fisierul chiar daca eu sunt proprietarul
(si, in acelasi timp si root).

Pentru a putea sterge fisierul se foloseste comanda chflags pentru a elimina flag-ul de protejare
la stergere. Asta ar trebui sa arate cam asa:

su-2.05b# chflags nosunlink fisier.txt
su-2.05b# rm fisier.txt
su-2.05b# ls -lo
total 0
su-2.05b#

Dupa cum vedeti, am folosit chflags cu parametru nosunlink asupra fisierului fisier.txt.
Adica, am scos flag-ul sunlnk ceea ce mi-a permis sa sterg fisierul fara nici o problema.

Sper ca am fost explicit si am ajutat… Pentru nelamuriri sau greseli postati aici si incerc
sa dau mai multe detalii sau sa corectez greselile.

Pentru alte detalii, studiati paginile de manual chmod(1), ls(1) si chflags(1).

Sper ca v-a placut tutorialul si il gasiti util.

Sursa


IPFind :: LAMP :: NoIndex
04-15-2007 06:22 AM
Visit this users website Find all posts by this user Quote this message in a reply
AnaKonD
Membru
**


Posts: 26
Group: Registered
Joined: Apr 2007
Status: Away
Reputation: 0
Lei: 167
Post: #2
Wink  RE: Drepturile fisierelor in UNIX

f util 10x manWinkSmile mai ales pt  incepatorii in linux (like meShy).la mai multeSmile

04-15-2007 06:32 PM
Find all posts by this user Quote this message in a reply
UnMihai
Activ
*


Posts: 12
Group: Registered
Joined: Aug 2008
Status: Offline
Reputation: 2
Lei: 153.66
Post: #3
RE: Drepturile fisierelor in UNIX

O singura completare vis-a-vis de drepturile asupra fisierelor, exista un bit special care se cheama sticky bit si care se setateaza prin:

Code:
chmod +t /path/filename

Bit-ul sticky, aplicat de obicei asupra directoarelor, blocheaza stergerea si redenumirea fisierelor altor utilizatori in afara de utilizatorul care a creat fisierul respectiv. Imaginati-va un director comun la 100 de utilizatori in care fiecare urca fisiere pentru download. Prin setarea bitului sticky pe directorul de upload, doar cei care le uploadeaza au dreptul de a le sterge sau redenumi (evident si toate derivatele ce implica stergere sau redenumire de genul suprascriere).

08-29-2008 05:36 PM
Find all posts by this user Quote this message in a reply
alexfisher
Membru
**


Posts: 47
Group: Registered
Joined: Aug 2008
Status: Offline
Reputation: 0
Lei: 102.8
Post: #4
RE: Drepturile fisierelor in UNIX

Good Smile) Acest tutorial este foarte util pt incepatori

08-29-2008 07:47 PM
Visit this users website Find all posts by this user Quote this message in a reply
Post Reply  Post Thread 

Possibly Related Threads...
Thread: Author Replies: Views: Last Post
  Rularea comenzilor UNIX din PHP Agkelos 4 223 09-06-2008 09:14 AM
Last Post: casperel

View a Printable Version
Send this Thread to a Friend
Subscribe to this Thread | Add Thread to Favorites

Forum Jump:

 

 Invatam Net
Esti nou pe aici? Vorbeste-ne despre tine.
Citeste articole si tutoriale unice.
Ai un site? Iti putem oferi un review.

  Parteneri

  


-->