Economisiți 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul: Skills Începeți
Secțiuni
Linux Servere virtuale Sisteme de operare

Înțelegerea permisiunilor de fișiere Linux și cum să le gestionezi

Permisiunile de fișiere Linux sunt una dintre cele mai fundamentale — și cea mai neînțeleasă — aspecte ale administrării sistemului. Indiferent dacă gestionezi un server web de producție, implementezi aplicații sau scrii scripturi de automatizare, o înțelegere solidă a modelului de permisiuni Linux este indispensabilă. Dacă greșești, riscă breșe de securitate a datelor, implementări defecte sau servicii blocate. Dacă faci bine, ai un cadru de securitate puternic și granular care lucrează în favoarea ta.

Acest ghid acoperă tot ceea ce trebuie să știi: cum funcționează modelul de permisiuni, cum să citești și să modifici permisiunile, cum să gestionezi proprietatea, și cum să gestionezi biții de permisiuni avansate precum SUID, SGID și sticky bit.

Modelul de Permisiuni Fișiere Linux Explicat

Fiecare fișier și director într-un sistem Linux are atribuite un set de drepturi de acces. Aceste drepturi sunt împărțite între trei clase de utilizatori și trei tipuri de permisiuni.

Cele Trei Clase de Utilizatori

ClasăDescriere
proprietarUtilizatorul care deține fișierul
grupToți utilizatorii care aparțin grupului atribuit fișierului
alțiiToți ceilalți utilizatori din sistem

Cele Trei Tipuri de Permisiuni

PermisiuneSimbolSemnificație
citirerVizualizare conținut fișier sau listare conținut director
scrierewModificare fișier sau director
execuțiexRulare fișier ca program, sau intrare/traversare director

Împreună, acești nouă biți (trei clase × trei permisiuni) definesc profilul complet de control al accesului pentru fiecare obiect din sistemul de fișiere.

Cum să vizualizezi permisiunile fișierelor cu ls -l

Cel mai rapid mod de a inspecta permisiunile este cu comanda ls -l:

ls -l myscript.sh

Exemplu de ieșire:

-rwxr-xr-- 1 alice devs 2048 Jan 25 10:00 myscript.sh

Iată cum să citești șirul de permisiuni caracter cu caracter:

CaractereSemnificație
-Tipul fișierului (- = fișier obișnuit, d = director, l = legătură simbolică)
rwxPermisiunile proprietarului: citire, scriere, execuție
r-xPermisiunile grupului: citire, execuție (fără scriere)
r--Permisiunile celorlalți: doar citire

Deci în acest exemplu, alice (proprietarul) are acces complet, membrii grupului devs pot citi și executa fișierul, iar toți ceilalți pot doar să-l citească.

Schimbarea permisiunilor cu chmod

Comanda chmod modifică permisiunile fișierelor. Acceptă două moduri: simbolic și numeric (octal).

Modul Simbolic

Modul simbolic folosește litere și operatori pentru a adăuga (+), elimina (-) sau seta (=) permisiuni:

chmod u+x myscript.sh      # Add execute permission for the owner
chmod g-w myscript.sh      # Remove write permission from the group
chmod o=r myscript.sh      # Set read-only for others (exactly)
chmod a+x myscript.sh      # Add execute for all (owner, group, others)

Clasele țintă sunt: u (utilizator/proprietar), g (grup), o (alții), a (toți).

Modul Numeric (Octal)

Fiecare tip de permisiune are o valoare numerică: r = 4, w = 2, x = 1. Le adunați pentru a obține o singură cifră per clasă.

OctalBinarPermisiuni
7111rwx
6110rw-
5101r-x
4100r--
0000---

Exemple comune:

chmod 755 myscript.sh   # Owner: rwx | Group: r-x | Others: r-x
chmod 644 file.txt      # Owner: rw- | Group: r-- | Others: r--
chmod 700 script.sh     # Owner: rwx | Group: --- | Others: ---
chmod 600 secret.key    # Owner: rw- | Group: --- | Others: ---

> Referință rapidă: 755 este standardul pentru scripturile și directoarele publice. 644 este standardul pentru fișierele de configurare lizibile. 600 este ideal pentru chei private și credențiale sensibile.

Gestionarea Proprietății cu chown și chgrp

Permisiunile au sens doar în contextul proprietății. Comenzile chown și chgrp vă permit să atribuiți fișierele utilizatorului și grupului corect.

Schimbați Proprietarul Fișierului

chown alice file.txt

Schimbați Grupul

chgrp devs file.txt

Schimbați Atât Proprietarul cât și Grupul Simultan

chown bob:admins file.txt

Aplicați Modificările Recursiv

Steagul -R aplică modificări de proprietate unui director și tuturor conținutului acestuia — esențial la configurarea rădăcinilor documentelor serverului web:

chown -R www-data:www-data /var/www/html/

Acesta este un pas critic atunci când implementați aplicații web într-un mediu VPS Hosting, asigurând că procesul serverului web are accesul corect pentru a servi fișierele.

Biți de permisiune speciali: SUID, SGID și Sticky Bit

Dincolo de cei nouă biți de permisiune standard, Linux suportă trei moduri speciale care modifică comportamentul implicit în moduri importante.

1. SUID — Set User ID

Se aplică la: Fișiere executabile

Când bitul SUID este setat pe un executabil, acesta rulează cu privilegiile proprietarului fișierului, nu ale utilizatorului care l-a lansat.

chmod u+s /usr/bin/passwd

ls -l output:

-rwsr-xr-x 1 root root 54256 Jan 10 08:00 /usr/bin/passwd

Observați s în locul x proprietarului. Acesta este modul în care /usr/bin/passwd poate actualiza /etc/shadow (un fișier deținut de root) chiar și atunci când este executat de un utilizator obișnuit.

> Notă de securitate: Fiți foarte atenți atunci când setați SUID pe scripturi personalizate. Un binar SUID incorect configurat este un vector clasic de escaladare a privilegiilor.

2. SGID — Set Group ID

Se aplică la: Fișiere executabile și directoare

  • Pe fișiere: Fișierul rulează cu privilegiile grupului proprietarului grupului fișierului.
  • Pe directoare: Fișierele noi create în interiorul directorului moștenesc automat grupul directorului, mai degrabă decât grupul primar al utilizatorului care creează.
chmod g+s /opt/project

ls -l output:

drwxr-sr-x 2 alice devs 4096 Jan 25 10:00 /opt/project

SGID pe directoare este extrem de util pentru dosarele de dezvoltare partajate unde mai mulți membri ai echipei au nevoie de proprietate de grup consistentă pe toate fișierele noi.

3. Sticky Bit

Se aplică la: Directoare

Când bitul sticky este setat pe un director, doar proprietarul fișierului (sau root) poate șterge sau redenumi acel fișier — chiar dacă alți utilizatori au permisiune de scriere pe director.

chmod +t /shared/folder

ls -ld output pentru /tmp:

drwxrwxrwt 10 root root 4096 Jan 28 12:00 /tmp
t de la sfârșit indică faptul că bitul sticky este activ. Acesta este motivul pentru care /tmp este accesibil pentru scriere la nivel mondial, dar utilizatorii nu pot șterge fișierele temporare ale celorlalți.
Înțelegerea umask — Controlul Permisiunilor Implicite
Când un fișier sau director nou este creat, Linux nu îi acordă permisiuni maxime. În schimb, aplică o umask (mască de creare a fișierelor utilizatorului) care scade permisiuni din implicitul.
Verificați umask-ul Curent
umask
Ieșire comună: 0022

Cum Funcționează umask

ObiectMaxim ImplicitCu umask `0022`Rezultat
Fișier666 (rw-rw-rw-)666 - 022644 (rw-r–r–)
Director777 (rwxrwxrwx)777 - 022755 (rwxr-xr-x)

> Notă: Linux nu setează niciodată bitul de execuție pe fișierele nou create în mod implicit, indiferent de umask.

Setați o umask Temporară

umask 0077    # New files: 600 (rw-------), New dirs: 700 (rwx------)

Aceasta este utilă în scripturile care creează fișiere temporare sensibile. Pentru o schimbare permanentă, adăugați comanda umask la fișierul de profil al shell-ului dvs. (de exemplu, ~/.bashrc sau /etc/profile).

Reparări recursive de permisiuni

O sarcină comună în lumea reală este resetarea permisiunilor pe întregul director de proiect — de exemplu, după o implementare defectuoasă sau o încărcare FTP care a stricat permisiunile. Cheia este să setați permisiuni diferite pentru directoare și fișiere, deoarece directoarele au nevoie de bitul de execuție pentru a fi traversabile.

# Set all directories to 755
find /var/www/myapp -type d -exec chmod 755 {} ;

# Set all files to 644
find /var/www/myapp -type f -exec chmod 644 {} ;

Dacă aplicația dvs. are scripturi executabile specifice, reparați-le separat după aceea:

chmod 755 /var/www/myapp/bin/*.sh

Acest model este esențial pentru oricine gestionează medii de găzduire web. Dacă rulați aplicații PHP, Python sau Node.js pe un VPS cu cPanel, permisiunile de fișier incorecte sunt una dintre cele mai frecvente cauze ale 403 Forbidden erorilor și execuției scripturii eșuate.

Referință practică de permisiuni pentru scenarii comune

ScenariuPermisiuni recomandateComandă
Fișiere web publice (HTML, CSS, JS)644chmod 644 index.html
Directoare web755chmod 755 /var/www/html
Scripturi PHP/Python644 sau 755Depinde de metoda de execuție
Chei SSH private600chmod 600 ~/.ssh/id_rsa
Directorul .ssh700chmod 700 ~/.ssh
Directorul proiectului partajat2775 (SGID)chmod 2775 /opt/project
Directorul temporar cu acces pentru toți1777 (sticky)chmod 1777 /tmp/shared
Fișiere de configurare cu secrete600chmod 600 .env

Permisiuni de fișiere Linux și securitatea serverului

Înțelegerea permisiunilor de fișiere nu este doar un exercițiu academic — are implicații directe și practice pentru securitatea și stabilitatea serverului.

Greșeli comune de securitate de evitat:

  • Setarea 777 pe directoarele web. Aceasta oferă tuturor acces de citire, scriere și execuție — o vulnerabilitate critică dacă serverul dvs. este compromis sau dacă este posibilă injectarea de cod PHP.
  • Lăsarea fișierelor de configurare citibile de toți. Fișiere precum .env, wp-config.php sau acreditări de bază de date ar trebui să fie 600 sau 640 cel mult.
  • Ignorarea proprietății. Chiar dacă permisiunile arată corecte, dacă utilizatorul greșit deține un fișier, serverul dvs. web sau daemonul aplicației poate să nu-l poată citi.
  • chown recursiv pe directoarele de sistem. Executarea chown -R fără grijă pe /etc sau /usr poate distruge întregul sistem.

Dacă rulați un mediu de producție pe Servere Dedicate, implementarea unei politici stricte de permisiuni este una dintre primii pași de consolidare pe care ar trebui să-i luați după configurarea inițială.

Pentru echipele care gestionează mai multe site-uri sau aplicații, Panouri de control VPS pot simplifica gestionarea permisiunilor prin manageri de fișiere grafici, deși competența în linia de comandă rămâne esențială pentru configurații avansate.

Referință Rapidă de Comenzi

# View permissions
ls -l filename
ls -ld directory/

# Change permissions (symbolic)
chmod u+x file        # Add execute for owner
chmod g-w file        # Remove write for group
chmod o=r file        # Set read-only for others
chmod a+r file        # Add read for all

# Change permissions (numeric)
chmod 755 file        # rwxr-xr-x
chmod 644 file        # rw-r--r--
chmod 600 file        # rw-------
chmod 700 file        # rwx------

# Change ownership
chown user file
chgrp group file
chown user:group file
chown -R user:group directory/

# Special bits
chmod u+s file        # Set SUID
chmod g+s directory   # Set SGID
chmod +t directory    # Set sticky bit

# umask
umask                 # Show current umask
umask 0022            # Set umask for session

# Recursive fixes
find /path -type d -exec chmod 755 {} ;
find /path -type f -exec chmod 644 {} ;

Concluzie

Permisiunile de fișiere Linux formează coloana vertebrală a securității sistemului, controlului accesului multi-utilizator și implementării fiabile a aplicațiilor. Modelul este elegant în simplitatea sa — trei clase, trei tipuri de permisiuni, o mână de biți speciali — totuși suficient de puternic pentru a securiza totul de la o mașină de dezvoltare personală la un server de producție cu trafic ridicat.

Stăpânirea chmod, chown, umask și a biților de permisiuni speciale vă oferă încrederea să implementați aplicații corect, să rezolvați rapid erorile de acces și să întăriți serverele dvs. împotriva accesului neautorizat.

Indiferent dacă porniți cu Shared Web Hosting sau vă extindeți la un mediu complet gestionat de VPS Hosting, o înțelegere solidă a permisiunilor de fișiere Linux este una dintre cele mai importante abilități pe care le puteți dezvolta ca administrator de sistem sau dezvoltator. Investiți timp pentru a o înțelege profund — serverele dvs. (și utilizatorii dvs.) vă vor mulțumi.