Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Permisiuni ale folderelor și fișierelor în Linux

26 noiembrie 2015 By Bobses 14 comentarii

Am constatat că foarte mulți autointitulați "specialiști în computere" habar n-au ce sunt permisiunile și cu ce se mănâncă ele. Dacă pentru windozauri este de înțeles asta (ei nu fac decât click -> click -> next), pentru utilizatorii Linux este de neconceput să nu știe câteva noțiuni de bază. Cele de mai jos sunt scrise pentru începătorii în Linux și cei din Windows care vor să știe mai multe sau intenționează să încerce acest minunat sistem de operare.

Pentru început, trebuie reținut că într-un sistem UNIX (se aplică și sistemelor Linux) orice este un fișier; dacă nu este un fișier, atunci este un proces.

Linuxul nu face nicio diferență între un director și un fișier, pentru că directorul nu este altceva decât un fișier care conține numele altor fișiere.

Aproape tot ceea ce întâlnim într-un sistem Linux este un fișier; dacă nu este fișier, atunci este un proces.

Tipuri de fișiere în Linux

  • directoare: fișiere care conțin o listă a altor fișiere;
  • fișiere speciale: mecanismele folosite pentru introducerea comenzilor și returnarea răspunsurilor (cele mai multe fișiere speciale se găsesc în /dev);
  • legături: este modalitatea prin care un fișier sau un director este făcut vizibil în mai multe părți ale sistemului de fișiere;
  • socket-uri (de domenii): un fel special de fișiere, asemănătoare cu socket-urile TCP/IP, care asigură desfășurarea proceselor în rețea, protejate prin controlul asupra accesului la sistemul de fișiere.
  • conexiuni (pipe): se comportă mai mult sau mai puțin ca socket-urile și formează o cale pentru comunicarea între procese.

Pentru a afișa conținutul unui director, precum și tipul fiecărui fișier, se folosește comanda ls cu opțiunea -l:

[email protected]:~/Desktop$ ls -l
total 52
drwxrwxr-x 4 bobses bobses 4096 nov 26 08:31 diverse
-rwxrwxrwx 1 bobses bobses 93 nov 25 19:42 HO_script
-rw-r----- 1 bobses bobses 37126 nov 25 10:21 ubuntu.jpg

Comanda de mai sus executată în folderul Desktop al utilizatorului bobses arată că folderul respectiv conține directorul diverse, dar și 2 fișiere: HO_script și ubuntu.jpg. Primul caracter ne arată tipul fișierului, astfel:

SimbolSemnificație
-fișier obișnuit (poate fi un fișier text, un executabil, un fișier grafic, o arhivă, etc.)
ddirector (în linux, directoarele sunt fișiere ca oricare altele, dar care conțin alte nume de fișiere și țintesc către inode-uri)
llegătură simbolică (fișierul legătură conține numele unuialt fișier sau director; când Linux accesează o legătură simbolică, încearcă să citească fișierul țintă)
ccharacter device - fișier special (un fișier care corespunde unui dispozitiv hardware de la care și către care datele sunt transferate în unități de câte 1 B (1 byte = 8 biți); exemple: port paralel, RS-232 serial, dispozitive audio)
ssocket - un socket este similar unei conexiuni, dar permite, în plus, legăruri bidirecționale și de rețea
pconexiuni (pipe) - o conexiune activează două programe care rulează în linux și care comunică unul cu celălaltul; unul deschide conexiunea pentru citire, iar celălalt o deschide pentru scriere, fiind posibil, astfel, transferul de date între programe
bdispozitiv (block device) - este un tip de fișier care corespunde unui dispozitiv hardware de la care și către care datele sunt transferate în blocuri mai mari de 1 B (1 byte = 8 biți); exemple: hard disk-uri, memorii USB, CD-ROM ș.a.m.d.

Utilizatori și grupuri de utilizatori

Totul într-un sistem Linux se petrece într-un mod foarte strict. Nimic nu este întâmplător. Priviți tabelele de mai jos:

CodSemnificație
upermisiuni acordate utilizatorilor (user)
gpermisiuni acordate grupurilor (group)
opermisiuni acordate celorlalți (other)

În tabelul următor sunt prezentate codurile pentru acordarea drepturilor de acces asupra unui fișier:

Cod (ce se permite)Semnificație
0 sau -fără niciun drept de acces asupra fișierului respectiv
4 sau rsunt acordate drepturi de citire (read) asupra fișierului
2 sau wsunt acordate drepturi de scriere (write) asupra fișierului
1 sau xsunt acordate drepturi de execuție (exec) asupra fișierului

Fiecare utilizator al unui sistem Linux are un nume (de exemplu bobses); acest utilizator se află asociat anumitor grupuri; pentru a vedea grupurile în care se află un anumit utilizator se rulează comanda groups nume_utilizator:

[email protected]:~/Desktop$ groups bobses
bobses : bobses adm cdrom sudo dip plugdev lpadmin sambashare

Ca să n-o mai lungim, fiecare utilizator al unui sistem are sau nu are anumite drepturi asupra unui fișier. Să presupunem că este vorba de un document: poate să nu vadă deloc fișierul respectiv, îl poate doar citi sau îl poate și modifica, având drepturi de scriere asupra sa.

Permisiunile sunt acordate proprietarului (owner), unui grup (group) sau celorlalți (other):

proprietar (owner)grup (group)ceilalți (other)
octal666
binar1 1 01 1 01 1 0
ce se permiter w xr w xr w x
  • Proprietar (owner) - cel care a creat fișierul respectiv
  • Grup (group) - utilizatorii care fac parte din grupurile unde proprietarul este membru
  • Ceilalți (other) - toți ceilalți utilizatori

Calculul permisiunilor

În sistemul binar 1 înseamnă că opțiunea respectivă este activată, 0 că este dezactivată. Nu facem matematică, dar ne amintim că sistemul octal (cifre doar de la 0 la 7) poate fi reprezentat în binar cu 3 caractere: primul din dreapta are valoarea 0, al doilea din dreapta are valoarea 2, al treilea din dreapta are valoarea 4 (2 la puterea a doua). Astfel, în exemplul de mai sus, 110 înseamnă 4+2+0=6. Alt exemplu: 111 = 4+2+1 = 7.

Tot din ultimul tabel, observăm că:

  • proprietarul are drept de scriere și citire asupra fișierului respectiv (fără drept de execuție)
  • grupul are drept de scriere și citire asupra fișierului respectiv (fără drept de execuție)
  • ceilalți au drept de scriere și citire asupra fișierului respectiv (fără drept de execuție)

Este foarte simplu să vedem toate drepturile pe care le are un fișier în Linux. Revenim la cele prezentate un pic mai sus:

[email protected]:~/Desktop$ ls -l
total 52
drwxrwxr-x 4 bobses bobses 4096 nov 26 08:31 diverse
-rwxrwxrwx 1 bobses bobses 93 nov 25 19:42 HO_script
-rw-r----- 1 bobses bobses 37126 nov 25 10:21 ubuntu.jpg

Să analizăm primul rând de la stânga la dreapta:

  • d - ne arată că este vorba de un director
  • următoarele 3 caractere (rwx) definesc drepturile pe care le are proprietarul (owner): rwx = 4+2+1 = 7, adică drepturi totale (citire, scriere, execuție)
  • următoarele 3 caractere (rwx) definesc drepturile pe care le au utilizatorii din grupurile din care face parte proprietarul bobses: rwx = 4+2+1 = 7, adică drepturi totale (citire, scriere, execuție)
  • ultimele 3 caractere (r-x) definesc drepturile pe care le au ceilalți utilizatori: r-x = 4+0+1 = 5, adică doar drept de citire și execuție (deschidere a directorului)

Altfel spus, permisiunile pentru directorul diverse pot fi scrise ca 775.

În mod similar determină și permisiunile pentru celelalte fișiere din output-ul dat ca exemplu:

  • HO_script este un fișier obișnuit (nu apare caracterul d, ci numai -) cu permisiunile 777 - toți utilizatorii sistemului au drepturi totale supra lui (citire, scriere, execuție)
  • ubuntu.jpg este un fișier obișnuit cu permisiunile 640 - proprietarul are drept de citire și scriere, grupurile din care face parte proprietarul  îl pot doar citi (vizualiza imaginea respectivă), iar ceilalți nu au nici nu drept asupa acestui fișier.

Cele descrise mai sus sunt prezentate schemati în imaginea următoare:

Un calculator online pentru permisiuni poate fi găsit aici.

Schimbarea permisiunilor unui fișier

Pentru a schimba atributele (permisiunile) unui fișier sau folder, se folosește comanda chmod:

chmod permisiuni_noi nume_fișier

Exemplu (vedem cum s-au schimbat atributele fișierului ubuntu.jpg din 640 în 777):

chmod 777 ubuntu.jpg

ls -l

-rwxrwxrwx 1 bobses bobses 37126 nov 25 10:21 ubuntu.jpg

Protejarea fișierelor cu chmod

ComandaSemnificație
chmod 400 nume_fișierprotejează fișierul pentru o suprascriere accidentală
chmod 500 nume_directorprotejează directorul pentru ștergere, redenumire sau mutare accidentală a fișierelor din interior
chmod 600 nume_fișierfișier privat, care poate fi schimbat doar de utilizatorul care a introdus această comandă (proprietar)
chmod 644 nume_fișierfișier public, care poate fi accesat de toți, dar poate fi schimbat doar de proprietar
chmod 660 nume_fișierfișier care poate fi accesat și schimbat de utilizatorii care aparțin grupurilor din care face parte prorpietarul, ceilalți neavând niciun drept asupra lui
chmod 700 nume_fișiernumai propriatarul (cel care l-a creat) are drepturi depline asupra lui, grupurile și ceilalți neavând niciun drept asupra lui
chmod 755 nume_directorpentru fișierele care trebuie să fie citite sau rulate și de alți utilizatori, dar pot fi schimbate (scrise) doar de proprietar (cel care l-a creat și a introdus comanda)
chmod 775 nume_fișiermodul standard de acordare a permisiunilor unui grup
chmod 777 nume_fișieroricine poate face orice cu acest fișier

Schimbarea proprietarului unui fișier

Și acest lucru se poate vface extrem de simplu din termina folosind comanda chown:

chown utilizator_nou:grup_default_utilizator_nou nume_fișier

sau (de reținut caracterul punct . după numele utilizatorului nou - adaugă automat grupul default al acelui utilizator și mai economisim câteva tastări :))

chown utilizator_nou. nume_fișier

Acum cred că nu veți mai avea probleme în înțelegerea permisiunilor unui fișier sau director, ce reprezintă utilizatorul proprietar, grupul și ceilalți. Eventualele nelămuriri le aștept în comentarii.

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Permisiuni Etichete: directoare, fisiere, foldere, linux, permisiuni, RHCSA

Comentarii

  1. Bogdan a zis

    1 noiembrie 2016 la ora 11:26

    drwxrwxr-x 4 bobses bobses 4096 nov 26 08:31 diverse

    bobses bobses -primul bobses reprezinta owner-ul directorului si cel de-al doilea reprezinta grupul din care face parte?

    Răspunde
    • Bobses a zis

      1 noiembrie 2016 la ora 15:11

      Da, pe serverul respectiv al doilea bobses e grupul principal al userului bobses. 🙂

      Răspunde
  2. Donald Carol a zis

    5 septembrie 2016 la ora 18:04

    salut. am avut deseori problema urmatoare: nu puteam accesa un director anume. Solutia era sa-i dau din terminal sudo chmod 777 numedirector ?

    Răspunde
    • Bobses a zis

      5 septembrie 2016 la ora 18:23

      Salut
      Asta e una din soluții - și cea mai puțin recomandată. Dacă dai 777 pe un fișier sau un folder, e indicat ca, după ce-ți termini treaba, să-i refaci permisiunile anterioare. În sistemele linux nu e indicat să ai fișiere cu 777 (înseamnă că dai acces tuturor la ele, de aici putând să-ți fie spart sistemul).
      În cele mai multe cazuri, problema se rezolvă schimbând proprietarul cu chown - descris în articol.

      Din cauza sistemnului de permisiuni foarte strict este Linux așa de sigur.

      Răspunde
      • Donald Carol a zis

        6 septembrie 2016 la ora 11:26

        Thanks. You're the best.

        Răspunde
        • Bobses a zis

          6 septembrie 2016 la ora 13:03

          You're welcome. 🙂

          Răspunde
  3. Şerban Stănescu a zis

    28 iulie 2016 la ora 11:25

    Foarte fain articolul!
    Chiar am avut probleme la acest capitol, zilele trecute, când am făcut "revoluţie" pe HDD.
    Am trecut partiţia de date de pe NTFS, pe ext3fs...
    O să trimit lumea care întreabă aici. E totuşi pe româneşte. Parcă e mai uşor de priceput!
    Acum a ajuns să-mi fie indiferent, dar parcă sună altfel în Română...

    Răspunde
    • Bobses a zis

      28 iulie 2016 la ora 14:45

      Mulțumesc! 🙂

      Răspunde
  4. icealinutza a zis

    27 noiembrie 2015 la ora 15:03

    Foarte bun articolul!

    Răspunde
    • Bobses a zis

      27 noiembrie 2015 la ora 15:47

      Mersi!

      Răspunde

Trackbacks

  1. Permisiuni în Linux - permisiuni speciale | Despre Linux spune:
    21 iunie 2021 la 16:56

    […] afara permisiunilor obișnuite din Linux pe care le-am descris într-un articol anterior, există și posibilitatea ca, prin intermediul unui singur bit, să stabilim niște […]

    Răspunde
  2. Gestionarea legăturilor în Linux. Comanda ln | Despre Linux spune:
    21 iunie 2021 la 16:52

    […] (symbolic links) sunt legături către numele fișierului, reprezentând, de fapt, un tip special de fișier, legătura fiind reținută într-un nou inode. Linux știe că vrem să accesăm fișierul țintă […]

    Răspunde
  3. Gestionarea legăturilor în Linux. Comanda ln spune:
    13 septembrie 2016 la 20:43

    […] simbolice (symbolic links) sunt legături către numele fișierului, reprezentând, de fapt, un tip special de fișier, legătura fiind reținută într-un nou inode. Linux știe că vrem să accesăm fișierul țintă […]

    Răspunde
  4. Permisiuni în Linux – permisiuni speciale spune:
    5 septembrie 2016 la 19:36

    […] afara permisiunilor obișnuite din Linux pe care le-am descris într-un articol anterior, există și posibilitatea ca, prin intermediul unui singur bit, să stabilim niște permisiuni […]

    Răspunde

Lasă un răspuns Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2023 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}