Permisiunile pentru fișiere și directoare Linux explicate

Linux este conceput ca un sistem de operare multi-utilizator, permițând mai multor persoane să interacționeze cu același computer în mod simultan. Această caracteristică impune ca Linux să asigure securitatea și confidențialitatea fișierelor fiecărui utilizator.

Pentru a realiza acest lucru, Linux utilizează un sistem avansat pentru gestionarea permisiunilor asociate fișierelor și directoarelor. Astfel, utilizatorii pot controla accesul altor utilizatori la propriile fișiere și pot specifica acțiunile permise pe sistem.

Ca utilizator Linux, este esențial să înțelegeți cum funcționează acest sistem de permisiuni, cum să interacționați cu diferitele tipuri de permisiuni disponibile, pentru a securiza eficient fișierele și a asigura funcționarea corectă a computerului. Pentru a înțelege mai bine mecanismul de gestionare a permisiunilor în Linux, vom analiza mai întâi categoriile de utilizatori existente.

Categorii de utilizatori în Linux

Prima categorie este reprezentată de proprietarii fișierelor sau directoarelor. În Linux, fiecare fișier și director are un proprietar, care de obicei beneficiază de permisiuni extinse asupra resurselor respective. Proprietarul este, în general, identificat prin litera „u” (user).

În Linux, mai mulți utilizatori pot fi grupați, iar grupului i se pot atribui permisiuni asupra fișierelor. Acești utilizatori sunt numiți „proprietari de grup” și sunt reprezentați prin litera „g” (group).

De exemplu, dacă dețineți un fișier care conține recomandări de cărți și doriți să acordați mai multor utilizatori permisiuni similare asupra acelui fișier, o modalitate simplă este de a-i adăuga într-un grup și de a acorda permisiuni întregului grup.

Ultima categorie este cea a „celorlalți” utilizatori, identificați prin litera „o” (others). Aceștia sunt utilizatori care nu sunt nici proprietarii fișierului, nici membri ai unui grup care are permisiuni asupra fișierului. Practic, „ceilalți” reprezintă toți utilizatorii care nu se încadrează în primele două categorii.

Toți utilizatorii unui computer, inclusiv proprietarii, membrii grupurilor și ceilalți utilizatori, pot fi referiți colectiv folosind litera „a” (all).

Crearea și adăugarea unui utilizator nou în Ubuntu Linux

Să vedem cum putem crea și adăuga un nou utilizator în sistemul Ubuntu Linux. Pentru a parcurge acest tutorial, vă rugăm să creați un nou utilizator de test.

1. Accesați „Setări”, iar în meniul din stânga, dați clic pe „Utilizator”. Apoi, faceți clic pe „Deblocare” și introduceți parola când vi se solicită. Este necesară deblocarea pentru a adăuga un utilizator nou; această funcție este blocată în mod implicit.

2. După deblocare, veți vedea opțiunea „Adăugați utilizator”; dați clic pe aceasta pentru a adăuga un nou utilizator.

3. Pentru a crea un utilizator nou, introduceți numele complet și numele de utilizator, selectați „Setați o parolă acum” și definiți parola. Asigurați-vă că tipul de cont este setat la „Administrator”, apoi dați clic pe „Adăugare” pentru a finaliza procesul.

4. Noul cont de utilizator creat va fi afișat, conform exemplului de mai jos.

Permisiunile pentru fișiere și directoare în Linux

Permisiunile definesc regulile care guvernează accesul la fișiere și directoare și acțiunile permise asupra lor, în funcție de categoria de utilizator. Linux utilizează trei tipuri principale de permisiuni:

  • Citire (r): permite utilizatorului să vizualizeze conținutul unui fișier și să listeze conținutul unui director.
  • Scriere (w): permite utilizatorului să modifice conținutul unui fișier. În cazul directoarelor, permisiunea de scriere permite modificarea conținutului directorului, cum ar fi crearea, ștergerea, redenumirea sau mutarea fișierelor și subdirectoarelor. Permisiunile de scriere în directoare funcționează numai dacă utilizatorul are și permisiunea de execuție.
  • Execuție (x): semnifică faptul că un fișier poate fi tratat ca un program executabil. În cazul directoarelor, permite utilizatorului să acceseze sau să navigheze („cd”) în interiorul directorului.

Aceste permisiuni (citire, scriere și execuție) sunt atribuite celor trei categorii de utilizatori menționate anterior.

Puteți citi, de asemenea, despre eliminarea fișierelor și directoarelor în Linux.

Listarea detaliată în Linux

Pentru a vizualiza conținutul unui director în Linux, folosim de obicei comanda „ls”. Aceasta afișează doar fișierele și directoarele, fără a furniza informații suplimentare.

Pentru a obține detalii suplimentare, trebuie să utilizați formatul de listare detaliată. Pentru a face acest lucru, executați comanda „ls” cu indicatorul „-l”. Aceasta va afișa permisiunile fișierelor, proprietarii și grupurile, conform exemplului de mai jos:

În Ubuntu, dacă nu a fost creat un grup separat, numele grupului este implicit același cu numele proprietarului fișierului.

Pentru a crea un grup nou, folosim comanda „addgroup”. De exemplu, pentru a crea un grup numit „editori”, executați următoarea comandă și introduceți parola la solicitare:

sudo addgroup editors

„sudo” ne permite să executăm comenzi ca utilizator „root”, un superutilizator cu privilegii de a face modificări care afectează toți utilizatorii sistemului.

Pentru a adăuga utilizatori la un grup, folosim următoarea sintaxă:

adduser <user> <group>

Prin urmare, pentru a adăuga utilizatorii „belmont” și „madici” la grupul „editori”, vom executa:

sudo adduser belmont editors
sudo adduser madici editors

Pentru a vedea grupurile din care face parte un utilizator, executați:

groups <username>

Rezultatul comenzilor de mai sus este prezentat mai jos:

Să analizăm acum atributele fișierelor, care indică tipurile de fișiere și permisiunile asociate.

Atributele fișierelor în Linux

În Linux, atributele fișierelor sunt reprezentate printr-un șir de zece caractere. Primul caracter indică tipul fișierului. Câteva dintre primele caractere comune care reprezintă diferite tipuri de fișiere includ:

  • „d”: indică un director.
  • „-„: indică un fișier obișnuit (ex: fișiere text).
  • „c”: indică un fișier special de tip caracter.
  • „l”: indică o legătură simbolică.
  • „b”: indică un fișier special de tip bloc.

Restul de nouă caractere sunt folosite pentru a afișa permisiunile proprietarului, ale grupului și ale celorlalți utilizatori. Aceste nouă caractere sunt grupate câte trei. Primul grup indică permisiunile proprietarului, al doilea indică permisiunile grupului, iar ultimul grup indică permisiunile celorlalți utilizatori ai sistemului.

Permisiunile pentru fiecare categorie sunt indicate în ordinea citire, scriere și execuție. Permisiunea de citire este indicată prin „r”, cea de scriere prin „w”, iar cea de execuție prin „x”.

Simbolul „-” este folosit în cazul în care un utilizator nu are o anumită permisiune. De exemplu, „rw-” pentru grupul proprietar înseamnă că membrii grupului au permisiuni de citire și scriere, dar nu au permisiunea de execuție pe acel director („d”).

Modificarea permisiunilor fișierelor folosind notația simbolică

Pentru a schimba permisiunile unui fișier sau director, folosim comanda „chmod” și specificăm cui modificăm permisiunile.

Aceasta poate fi proprietarul fișierului (reprezentat prin „u” pentru utilizator), proprietarul grupului (reprezentat prin „g”) sau ceilalți utilizatori (reprezentați prin „o”). Putem viza toate cele trei categorii folosind litera „a” (toți).

Următorul lucru pe care îl specificăm este modificarea pe care o facem. Pentru a adăuga o permisiune folosim „+”, iar pentru a elimina o permisiune folosim „-„. Ultimul element specifică permisiunile adăugate sau eliminate, folosind „r”, „w” sau „x” pentru a reprezenta permisiunile corespunzătoare.

Pentru a vedea acest lucru în acțiune, creați un director numit „cărți” folosind comanda de mai jos:

mkdir books

Accesați directorul:

cd books

Creați un fișier numit „listaDeCitit.txt”:

touch listaDeCitit.txt

Listarea detaliată a conținutului directorului „cărți”:

ls -l

Rezultatul va fi similar cu:

Fișierul creat este un fișier obișnuit (indicat de primul „-„), proprietarul și grupul au permisiuni de citire și scriere, în timp ce ceilalți utilizatori au doar permisiunea de citire. Pentru a acorda permisiunea de scriere altor utilizatori, vom executa comanda:

chmod o+w listaDeCitit.txt

Pentru a verifica dacă permisiunile s-au modificat, executați:

ls -l

Rezultat:

Observați că permisiunea altor utilizatori s-a schimbat de la „r–” la „rw-„, indicând că acum au permisiune de scriere.

Pentru a adăuga permisiunea de execuție proprietarului (utilizatorului) fișierului, executați:

chmod u+x listaDeCitit.txt

Pentru a elimina permisiunea de scriere de la proprietarii grupului, executați:

chmod g-w listaDeCitit.txt

Pentru a elimina permisiunile de citire pentru toți utilizatorii, astfel încât nimeni să nu poată vizualiza fișierul, executați:

chmod a-r listaDeCitit.txt

Pentru a adăuga permisiunea de citire înapoi pentru proprietarul fișierului, executați:

chmod u+r listaDeCitit.txt

Pentru a adăuga permisiunile de scriere și execuție pentru proprietarul grupului fișierului, executați:

chmod g+wx listaDeCitit.txt

Modificarea permisiunilor folosind notația octală

În Linux, fiecare dintre cele trei permisiuni are doar două valori posibile: permisiunea de citire poate fi „r” sau „-„, permisiunea de scriere poate fi „w” sau „-„, iar permisiunea de execuție poate fi „x” sau „-„.

Astfel, permisiunile pot fi considerate ca fiind activate sau dezactivate și, prin urmare, pot fi reprezentate folosind numere binare (care au doar două valori, 1 pentru activat și 0 pentru dezactivat). De exemplu, o permisiune ca „rw-” poate fi reprezentată prin „110” în binar.

Prin urmare, pentru orice categorie de utilizator, trei numere binare sunt suficiente pentru a reprezenta toate permisiunile. De exemplu, permisiunea „rwxrwxr–” poate fi reprezentată ca „111111100” în binar.

Pentru a evita utilizarea numerelor binare, care sunt lungi și dificil de citit, o alternativă este utilizarea numerelor octale.

Numerele octale au baza 8 și au doar 8 valori posibile. Fiecare număr octal corespunde exact cu trei cifre binare.

De exemplu, „rw-” poate fi reprezentat ca „110” în binar, iar echivalentul octal al lui „110” este „6”. Astfel, 6 poate fi utilizat pentru a reprezenta permisiunea „rw-„. Numerele octale pot fi folosite pentru a reprezenta permisiunile de citire, scriere și execuție ale proprietarului, grupului și celorlalți utilizatori, așa cum se arată mai jos:

În loc să scrieți șiruri lungi de numere binare, este mai eficient să reprezentați permisiunile folosind numere octale. Astfel, permisiunile pentru proprietar, grup și ceilalți utilizatori sunt reprezentate folosind numere octale unice, conform diagramei de mai sus.

Avantajul utilizării notației octale este că vă permite să setați permisiunile pentru toți utilizatorii simultan, spre deosebire de notația simbolică, unde puteți seta permisiunea doar pentru un singur utilizator la un moment dat.

Utilizarea notației octale necesită un pic de timp și practică pentru a reține corespondența fiecărui număr octal. Puteți utiliza diagrama de mai sus ca referință. Să vedem câteva exemple de modificare a permisiunilor folosind notația octală.

Pentru a oferi permisiuni de citire, scriere și execuție pentru fișierul „listaDeCitit.txt” tuturor utilizatorilor (proprietar, grup și ceilalți), executați:

chmod 777 listaDeCitit.txt

Pentru a verifica dacă permisiunile s-au modificat, executați:

ls -l

Rezultat:

total 0
-rwxrwxrwx 1 madici madici 0 Sep  6 05:45 listaDeCitit.txt

Observați că acum proprietarul, grupul și ceilalți utilizatori au permisiunea de a citi, scrie și executa fișierul „listaDeCitit.txt”.

Pentru a elimina permisiunile de scriere pentru grup și pentru ceilalți, executați:

chmod 755 listaDeCitit.txt

Pentru a elimina permisiunea de execuție pentru proprietar și ceilalți, executați:

chmod 654 listaDeCitit.txt

Permisiuni speciale în Linux

Linux oferă trei permisiuni speciale care pot fi aplicate fișierelor și directoarelor, pe lângă permisiunile standard de citire, scriere și execuție. Aceste permisiuni oferă funcționalități avansate pentru controlul accesului și permit utilizatorilor cu mai puține privilegii să execute fișiere și comenzi cu privilegii superioare, similare cu cele ale proprietarului fișierului sau ale proprietarului grupului.

Permisiunile speciale includ:

  • Set User ID (SUID): Permisiunea SUID permite unui utilizator să execute un fișier sau program cu privilegiile proprietarului, nu cu cele ale utilizatorului care îl execută. Acest lucru este util atunci când utilizatorii standard trebuie să efectueze sarcini care necesită privilegii ridicate.
  • Set Group ID (SGID): Permisiunea SGID permite unui utilizator să execute un fișier cu permisiunile proprietarului grupului, în loc de permisiunile grupului său real.
  • Sticky Bit: Permisiunea sticky bit este de obicei setată pentru directoare, asigurând că fișierele din director pot fi șterse doar de proprietarul real al directorului, de proprietarul fișierului sau de utilizatorul root.

Cele trei permisiuni speciale pot fi utilizate în combinație cu permisiunile standard de citire, scriere și execuție.

Concluzie

Permisiunile sunt un concept fundamental în Linux, chiar dacă sistemul dvs. nu are mai mulți utilizatori. Înțelegerea sistemului de permisiuni este importantă pentru a asigura controlul, securitatea, confidențialitatea datelor stocate și funcționarea corectă a sistemului Linux. Prin urmare, vă recomandăm să vă familiarizați cu aceste concepte, exersând ceea ce ați învățat despre permisiuni în acest articol.

De asemenea, puteți explora cum să utilizați comenzile Linux pe Windows.