Permisiuni de fișiere în Linux / Unix: Cum să citești, să scrii și să modifici

⚡ Rezumat inteligent

Permisiunile fișierelor în Linux și Unix controlează cine poate citi, scrie și executa fiecare fișier, protejând un sistem multi-utilizator prin două straturi: proprietatea, care atribuie un utilizator, un grup și alte persoane, și biții de permisiune de citire, scriere și execuție.

  • 👥 Proprietate: Fiecare fișier și director aparține unui utilizator (proprietar), unui grup și altora, numiți uneori lumea.
  • 🔑 Permisiuni: Trei permisiuni se aplică fiecărei clase de proprietar: citire (r), scriere (w) și executare (x).
  • 📃 listarea: Comanda ls -l afișează un șir de permisiuni precum -rw-rw-r– pentru proprietar, grup și lume.
  • 🔢 Mod absolut: chmod cu un număr octal din trei cifre setează permisiuni pentru toate cele trei clase simultan, de exemplu 764.
  • Mod simbolic: chmod cu u, g, o, a și +, -, = schimbă o clasă de proprietar fără a le atinge pe celelalte.
  • 🧭 Comenzi de proprietate: Comanda chown schimbă proprietarul și grupul, în timp ce chgrp schimbă doar grupul.
  • 🤖 Ajutor AI: Asistenții inteligenței artificiale și GitHub Copilot pot genera și explica comenzile chmod și chown.

Permisiuni de fișiere în Linux și Unix: cum se citesc, se scriu și se modifică

Permisiuni de fișier în Linux și Unix decid cine poate citi, modifica sau rula fiecare fișier, ceea ce menține un sistem partajat, cu mai mulți utilizatori, în siguranță. Această pagină prezintă proprietatea fișierelor, permisiunile de citire, scriere și executare, precum și comenzile care le modifică.

Linux este o clonă a Unix, sistemul de operare multi-utilizator care poate fi accesat de mai mulți utilizatori simultan. Linux poate fi utilizat și pe mainframe-uri și servere fără nicio modificare. Însă acest lucru ridică probleme de securitate, deoarece un utilizator nesolicitat sau rău intenționat poate corupe, modifica sau elimina date cruciale. Pentru o securitate eficientă, Linux împarte autorizarea în două niveluri:

  • Proprietate
  • permisiune

Conceptul de permisiune și proprietate asupra fișierelor este crucial în Linux. Aici, vom explica permisiunile și proprietatea în Linux și le vom discuta pe amândouă. Să începem cu proprietatea.

Proprietatea fișierelor Linux

Fiecărui fișier și director din sistemul Unix/Linux îi sunt atribuite trei tipuri de proprietar, prezentate mai jos. Diagrama de mai jos arată cum se corelează proprietatea cu utilizatorul, grupul și alte persoane.

Diagrama proprietății fișierelor Linux care arată utilizatori, grupuri și alte clase de permisiuni

Utilizator

Un utilizator este proprietarul fișierului. În mod implicit, persoana care a creat un fișier devine proprietarul acestuia. Prin urmare, un utilizator este uneori numit și proprietar.

grup

A grup de utilizatori poate conține mai mulți utilizatori. Toți utilizatorii care aparțin unui grup au aceleași permisiuni de grup Linux asupra fișierului. Să presupunem că aveți un proiect în care mai multe persoane necesită acces la un fișier. În loc să atribuiți manual permisiuni fiecărui utilizator, puteți adăuga toți utilizatorii într-un grup și puteți atribui permisiuni de grup asupra fișierului, astfel încât numai acești membri ai grupului și nimeni altcineva să poată citi sau modifica fișierele.

Altele

Orice alt utilizator care are acces la un fișier. Această persoană nu a creat fișierul și nici nu aparține unui grup de utilizatori care ar putea deține fișierul. Practic, înseamnă toți ceilalți. Prin urmare, atunci când setați permisiunea pentru alții, aceasta este denumită și setarea permisiunilor pentru întreaga lume.

Acum apare marea întrebare: cum distinge Linux între aceste trei tipuri de utilizatori, astfel încât un utilizator „A” să nu poată modifica un fișier care conține informații sau date vitale ale altor utilizatori „B”? Este ca și cum nu ai vrea un coleg care să lucreze la fișierul tău. Calculator Linux pentru a vizualiza imaginile dvs. Aici intervin permisiunile și definesc comportamentul utilizatorului.

Să înțelegem sistemul de permisiuni pe Linux.

Permisiuni de fișiere Linux

Fiecare fișier și director din sistemul dumneavoastră Unix/Linux are următoarele trei permisiuni definite pentru toți cei trei proprietari discutați mai sus.

  • Citi: Această permisiune vă oferă autoritatea de a deschide și citi un fișier. Permisiunea de citire asupra unui director vă oferă posibilitatea de a lista conținutul acestuia.
  • Scrie: Permisiunea de scriere vă oferă autoritatea de a modifica conținutul unui fișier. Permisiunea de scriere asupra unui director vă oferă autoritatea de a adăuga, elimina și redenumi fișierele stocate în director. Luați în considerare un scenariu în care aveți permisiune de scriere asupra unui fișier, dar nu aveți permisiune de scriere asupra directorului în care este stocat fișierul. Veți putea modifica conținutul fișierului, dar nu veți putea redenumi, muta sau elimina fișierul din director.
  • A executa: In Windows, un program executabil are de obicei o extensie „.exe”, pe care o puteți rula cu ușurință. În Unix/Linux, nu puteți rula un program decât dacă este setată permisiunea de execuție. Dacă permisiunea de execuție nu este setată, este posibil să puteți vedea sau modifica codul programului (cu condiția ca permisiunile de citire și scriere să fie setate), dar să nu îl rulați.

Să vedem permisiunile fișierelor în Linux cu exemple. Rularea comenzii ls -l în terminal dă:

ls -l

Captura de ecran de mai jos prezintă șirul de permisiuni într-o listă lungă.

Ieșirea terminalului ls -l afișează șirul de permisiuni rw-rw-r-- pentru un fișier

Aici, am evidențiat „-rw-rw-r–”, iar acest cod cu aspect ciudat este cel care ne spune despre permisiunile Unix acordate proprietarului, grupului de utilizatori și întregii lumi.

Aici, primul „-” implică faptul că am selectat un fișier. Pictograma de mai jos marchează un fișier obișnuit.

Pictogramă mică care indică faptul că elementul listat este un fișier obișnuit

Altfel, dacă ar fi fost un director, ar fi fost afișat un „d”, ca în lista de mai jos.

Listarea terminalului care afișează un director marcat cu un d la început în șirul de permisiuni

Caracterele sunt destul de ușor de reținut.

  • r = permisiune de citire
  • w = permisiune de scriere
  • x = permisiune de executare
  • – = fără permisiune

Să privim lucrurile astfel. Prima parte a codului este „rw-”. Aceasta sugerează că proprietarul „Home” poate:

  • Citiți fișierul
  • Scrieți sau editați fișierul

Proprietarul nu poate executa fișierul, deoarece bitul de execuție este setat la „-”. Pictograma de mai jos arată bitul de execuție șters la o cratimă.

Pictogramă mică care arată bitul de permisiune de execuție șters la o liniuță

Prin design, multe distribuții Linux precum Fedora, CentOS și Ubuntu adăugați un utilizator la un grup cu același nume ca și utilizatorul. Astfel, un utilizator „tom” este adăugat la un grup numit „tom”.

A doua parte este „rw-”. Este pentru grupul de utilizatori „Acasă”, iar membrii grupului pot:

  • Citiți fișierul
  • Scrieți sau editați fișierul

A treia parte este pentru lume, adică orice utilizator. Scrie „r–”. Aceasta înseamnă că utilizatorul poate doar:

  • Citiți fișierul

Defalcarea de mai jos mapează fiecare parte a șirului de permisiuni cu proprietarul, grupul și lumea.

Defalcarea șirului de permisiuni rw-rw-r-- în secțiuni proprietar, grup și lume

Modificarea permisiunilor pentru fișiere/directoare în Linux folosind comanda „chmod”

Să presupunem că nu vrei ca un coleg să-ți vadă imaginile personale. Acest lucru se poate realiza prin modificarea permisiunilor fișierelor.

Putem folosi „chmod” comandă, care înseamnă „mod de schimbare”. Folosind comanda, putem seta permisiuni (citire, scriere, execuție) asupra unui fișier sau director pentru proprietar, grup și pentru întreaga lume.

Sintaxă:

chmod permissions filename

Există două moduri de a utiliza comanda:

  • Modul absolut
  • Modul simbolic

Modul absolut (numeric) în Linux

În acest mod, permisiunile fișierelor nu sunt reprezentate prin caractere, ci printr-un număr octal din trei cifre. Tabelul de mai jos prezintă numerele pentru toate tipurile de permisiuni.

Număr Tip de permisiune Simbol
0 Fara permisiune -
1 Executa -X
2 Scrie -W-
3 Executare + Scriere -wx
4 Citiți r–
5 Citiți + Executați rx
6 Citiți + Scrieți rw-
7 Citire + Scriere + Executare rwx

Să vedem comanda chmod în acțiune, așa cum se arată în fereastra terminalului de mai jos.

Terminal care rulează chmod 764 pe fișierul exemplu pentru a-i modifica permisiunile

În fereastra terminalului de mai sus, am modificat permisiunile fișierului „sample” la „764”. Codul absolut „764” spune următoarele:

  • Proprietarul poate citi, scrie și executa.
  • Grupul de utilizatori poate citi și scrie.
  • Lumea poate doar citi.

Aceasta este afișată ca „-rwxrw-r–”, ca în rezultatul de mai jos.

Listarea terminalului care afișează fișierul exemplu cu șirul de permisiuni -rwxrw-r-- după chmod 764

Iată cum puteți modifica permisiunile utilizatorilor în Linux asupra unui fișier prin atribuirea unui număr absolut.

Modul simbolic în Linux

În modul absolut, modificați permisiunile pentru toți cei trei proprietari. În modul simbolic, puteți modifica permisiunile unui anumit proprietar. Se utilizează simboluri matematice pentru a modifica permisiunile fișierelor Unix.

OperaTdR Descriere
+ Adaugă o permisiune la un fișier sau director
- Îndepărtează permisiunea
= Setează permisiunea și suprascrie permisiunile setate anterior

Diferiții proprietari sunt reprezentați după cum urmează.

Utilizator Denotații
u proprietar / utilizator
g grup
o alte
a toate

Nu vom folosi permisiuni în numere precum 755, ci în caractere precum rwx. Să ne uităm la exemplul de mai jos.

Terminal care folosește chmod simbolic cu u, g, o și +, -, = pentru a schimba permisiuni specifice

Schimbarea proprietății și a grupului în Linux

Pentru a schimba proprietarul unui fișier sau director, puteți utiliza următoarea comandă:

chown user filename

În cazul în care doriți să schimbați utilizatorul, precum și grupul pentru un fișier sau director, utilizați comanda:

chown user:group filename

Să vedem acest lucru în acțiune, așa cum se arată mai jos.

Terminal care rulează comanda chown pentru a schimba proprietarul și grupul unui fișier

În cazul în care doriți să schimbați doar proprietarul grupului, utilizați comanda:

chgrp group_name filename

„chgrp” înseamnă „change group” (grup de schimbare). Captura de ecran de mai jos arată comanda chgrp în uz.

Terminal care rulează comanda chgrp pentru a schimba doar proprietarul grupului unui fișier

Vârf

  • Fișierul /etc/group conține toate grupurile definite în sistem.
  • Puteți folosi comanda „groups” pentru a găsi toate grupurile din care faceți parte, așa cum se arată mai jos.

Terminal care rulează comanda groups pentru a lista grupurile cărora le aparține utilizatorul

  • Puteți utiliza comanda newgrp pentru a lucra ca membru al unui grup diferit de grupul implicit, așa cum se arată mai jos.

Terminal care rulează comanda newgrp pentru a comuta la un alt grup

  • Nu puteți avea două grupuri care să dețină același fișier.
  • Nu aveți grupuri imbricate în Linux. Un grup nu poate fi un subgrup al altuia.
  • x — executarea unui director înseamnă a avea permisiunea de a „intra” într-un director și de a obține acces posibil la subdirectoare.
  • Există și alte permisiuni pe care le puteți seta pentru fișiere și directoare, care vor fi abordate într-un tutorial avansat ulterior.

Întrebări frecvente

Adăugați permisiunea de execuție cu chmod. Forma simbolică chmod +x script.sh acordă permisiunea de execuție tuturor, în timp ce chmod u+x script.sh o acordă doar proprietarului. După aceea, puteți rula scriptul direct cu ./script.sh din directorul său.

umask setează permisiunile implicite eliminate din fișierele și directoarele nou create. Fișierele încep de la 666, iar directoarele de la 777, apoi valoarea umask este subtracted. O comandă umask comună de 022 dă fișierele 644 și directoarele 755. Rulați umask pentru a vedea valoarea curentă.

Aceștia sunt biți de permisiuni speciale. setuid rulează un program cu drepturile proprietarului său, setgid îl rulează cu drepturile grupului sau face ca fișierele noi să moștenească grupul unui director, iar bitul „sticky” permite doar proprietarului unui fișier să îl șteargă dintr-un director partajat, cum ar fi /tmp.

Da. Doar utilizatorul root sau un utilizator care rulează sudo poate schimba proprietarul unui fișier cu chown. Un proprietar obișnuit poate transfera fișierul său unui grup din care face parte, dar reatribuirea acestuia unui alt utilizator necesită privilegii de root din motive de securitate.

Această eroare înseamnă că nu aveți drepturile de a modifica fișierul. Pentru a rula chmod trebuie să dețineți fișierul sau să fiți root; pentru a rula chown, în general, aveți nevoie de root. Prefixați comanda cu sudo sau comutați la proprietarul fișierului și încercați din nou.

Folosește opțiunea recursivă -R. chmod -R 755 myfolder aplică permisiunile folderului și fiecărui fișier și subfolder din acesta, iar chown -R user:group myfolder face același lucru pentru proprietate. Folosește -R cu atenție, deoarece afectează fiecare element din folder.

Asistenții inteligenți artificiali pot traduce o solicitare precum „fă acest script executabil doar pentru mine” în comanda chmod corectă, pot explica ce înseamnă un mod precum 755 și pot avertiza despre setări riscante precum 777. Instrumentele de securitate bazate pe învățarea automată semnalează, de asemenea, fișierele ale căror permisiuni par periculos de deschise.

Da. Copilotul GitHub poate sugera comenzi chmod, chown și chgrp dintr-un scurt comentariu care descrie permisiunile sau proprietarul dorit și le poate completa pe măsură ce tastați. RevVizualizați fiecare sugestie înainte de a o rula, deoarece modificările permisiunilor și ale proprietarului afectează securitatea.

Rezumați această postare cu: