Descifrarea permisiunilor sistemului de fișiere Linux

Publicat: 2017-02-24

Permisiunile fișierelor Linux pot părea pentru unii niște hieroglife ale teoriei numerelor și este de înțeles. Modelul de permisiuni pentru sistemul de fișiere Linux provine din moștenirea UNIX. Cu toate acestea, sunt destul de ușor de înțeles, odată ce înțelegi logica din spatele lor.

Grupuri și tipuri de permisiuni

Controlul accesului la fișiere și foldere este definit în sistemul de fișiere folosind următoarele informații:

  • Trei grupuri de permisiuni: u pentru proprietar, g , grup, o sau a , toți utilizatorii.
  • Trei tipuri de permisiuni: r , read, x , execute, w , write.

Tipurile de permisiuni sunt caracterele „r”, „x” și „w”, numite steaguri și sunt afișate ca atare dacă enumerați într-un fel permisiunile fișierului sau folderului. Steaguri nesetate sunt reprezentate cu un caracter „-”. Cele de grup de permisiuni sunt folosite în comenzile care schimbă proprietatea și grupul unui fișier, pe care le vom aprofunda în curând.

Permisiuni de vizualizare

Puteți vizualiza permisiunile unui fișier sau folder fie utilizând un manager de fișiere GUI, fie inspectând rezultatul comenzii ls în terminalul consolei.

Deschideți terminalul și tastați următoarea comandă:

$ test de atingere

$ ls -la test

-rw-r–r– 1 personal de yorgos 0 23 feb 17:07 test

Șirul „-rw-r–r–” conține informațiile privind permisiunea sistemului de fișiere care ne interesează. Restul câmpurilor de la stânga la dreapta afișează următoarele informații:

  • câte link-uri există către acest fișier (1)
  • ID-ul utilizatorului proprietarului (yorgos)
  • ID-ul grupului (personalul)
  • Lungimea fișierului în octeți (0)
  • Data creării (23 februarie)
  • Ora creată (17:07)
  • Nume fișier (test)

Biți de permisiune

Veți observa că există 9 combinații diferite de grupuri și tipuri de permisiuni, dar 10 poziții de steag. Primul arată steag-ul tipului de fișier, în timp ce cel din urmă indică permisiunile în sine. Tipurile de fișiere pot fi: „-” pentru fișiere, „l” pentru legături simbolice (acestea sunt legături de sistem de fișiere care indică doar un alt fișier) și „d” pentru directoare. Deoarece primul caracter/steagul din exemplul nostru este „-”, vorbim despre un fișier simplu. Continuând, să defalcăm câmpul de permisiuni:

: Tip de fișier (acesta poate conține l, - sau d)

rw- : permisiuni de citire și scriere (fără execuție). Aceste permisiuni sunt pentru proprietar.

r– : permisiunea de citire, fără permisiunea de scriere și execuție. Aceste permisiuni se referă la utilizatorii care aparțin unui grup.

r– : permisiunea de citire, fără scriere și execuție. În cele din urmă, aceste permisiuni se referă la toți ceilalți.

Deci, de fapt, aceasta înseamnă doar „acest fișier poate fi citit și scris de către proprietar și este doar citit de toți ceilalți”. Grupul are aceleași permisiuni.

Modificarea permisiunilor

Pentru a modifica permisiunile unui fișier sau folder, din nou, fie utilizați o comandă GUI (aceasta este în afara domeniului de aplicare al acestui articol, deci nu vom merge acolo), fie folosiți anumite comenzi Linux în terminalul dumneavoastră. Comanda pe care o vom folosi se numește chmod (modul de schimbare a fișierului). Comanda chmod acceptă o varietate de parametri care își schimbă comportamentul în multe moduri diferite, dar utilizarea sa generală este următoarea:

$ chmod <mod> <fișier>

<modul> este specificat de următoarele simboluri:

r steagul citit

w steag de scriere

x steagul de execuție

u indicatorul de permisiune utilizator/proprietar

g marcatorul de permisiuni de grup

o steag de permisiunea celorlalți utilizatori

Mai sunt câteva, dar le vom discuta în secțiunea finală a articolului nostru.

Deci, să presupunem că doriți să acordați permisiuni de execuție utilizatorilor care aparțin grupului (dar asigurați-vă că sunteți mai întâi proprietarul fișierului!):

$ chown g+x test
$ ls -l test
-rwxrwxrwx 1 personal de yorgos 0 23 februarie 17:07 test

Sau poate trebuie să îi blocați complet pe toți ceilalți. Ei nu ar putea nici să citească, să scrie sau să execute fișierul:

$ chown o-rwx test
$ ls -l test
-rwxrwx— 1 personal de yorgos 0 Feb 23 17:07 test

Aici vedem ultimele steaguri nesetate la „-”.
Dacă doriți să vedeți mai multe exemple, consultați pagina de manual pentru chmod lansând următoarea comandă:

$ man chmod

Proprietari și grupuri

De asemenea, puteți schimba dreptul de proprietate asupra fișierului și grupului utilizând comanda chown .

Comanda chown acceptă diverși parametri care îi modifică comportamentul într-un fel, dar cea mai obișnuită utilizare este următoarea:

# chown <proprietar> <fișier>

Sau

# chown <proprietar:grup> <fișier>

Primul exemplu este folosit pentru a schimba proprietarul unui fișier cu altul. Rețineți, totuși, că trebuie să aveți acces root pentru a schimba dreptul de proprietate asupra unui fișier. Deci, executând următoarele:

# Chown test nimeni

# ls -l test

-rwxrwxrwt 1 personalul nimeni 0 23 februarie 17:07 test

se dezvăluie acum că fișierul este deținut de userid-ul „nimeni” și nu de „yorgos”.

În mod similar, comanda:

# chown nimeni: testul roții

# ls -l test

-rwxrwxrwt 1 roată nimeni 0 23 februarie 17:07 test


Schimbă proprietatea fișierului în nimeni și grupul în roată .

Dacă doriți să aflați mai multe despre comandă și diferiții ei parametri, consultați pagina de manual chown lansând comanda:

$ man chown

Permisiuni speciale

Pe lângă tipurile și grupurile de permisiuni pe care le-am menționat deja în articol, există alte câteva, numite „permisiuni speciale”.

Acestea sunt următoarele:

s       Flag-ul Set User ID și Set Group ID.

t       Steagul lipicios.

Primul este setat prin utilizarea steagului „s” din comanda chmod în mod obișnuit, ca atare:

$ chmod u+s test
$ ls -l test
-rwsrwx—   1 yorgos   personal   0 Feb 23 17:07 test

Acest flag se mai numește și steag SUID (Set User ID) sau SGID (Set Group ID). Dacă acest bit este setat, atunci fișierul moștenește drepturile de acces ale proprietarului său. Aceasta înseamnă că oricine execută fișierul o face ca proprietar. SGID-ul este similar, dar fișierul moștenește dreptul de acces al grupului său. Acest lucru, desigur, poate duce la probleme de securitate, așa că trebuie avut grijă.

Bitul lipicios sau „t” este deosebit de util. Când sunt stabilite într-un director, care este de obicei partajat ca /tmp, fișierele create acolo pot fi redenumite sau șterse doar de proprietarii lor respectivi. Dacă sticky bit nu este setat, proprietarul directorului nu are control asupra lor.

Puteți face un director „lipicios” lansând următoarea comandă:

$ chmod +t /director

Reprezentare octală

Pe lângă utilizarea steaguri pentru a defini permisiuni precum „r” și „w”, puteți utiliza și valori numerice. Comanda chmod atribuie următoarele valori permisiunilor:

„r” = 4

„w” = 2

„x” = 1

Deci, pentru a seta un fișier să aibă citire/scriere/executare pentru proprietar și citire/executare pentru toți ceilalți, adică „-rwxr-xr-x”, calculăm valoarea numerică ca atare:

rwx = 4+2+1 = 7

rx = 4+1 = 5

În cele din urmă lansăm comanda:

$ chmod 755 test
$ ls – test
-rwxr-xr-x   1 yorgos   personal   21 Feb 24 02:08 test

Exersați pe cont propriu folosind diferite permisiuni și valori numerice pentru a înțelege!