Citirea și setarea corectă a permisiunilor fișierelor pe VPS-ul dumneavoastră
Fiecare fișier și fiecare director de pe VPS-ul dumneavoastră are un proprietar, un grup și permisiuni. Dacă sunt prea permisive, un site web sau un serviciu compromis poate scrie oriunde. Dacă sunt prea stricte, veți primi erori precum „Permission denied” sau un 403 pe site-ul dumneavoastră. Aici aflați cum să citiți permisiunile și cum să le setați corect. Dacă aveți un pachet de hosting cu DirectAdmin, consultați Interzis (403): Nu aveți permisiunea de a accesa / pe acest server.
Citirea permisiunilor cu ls -l
ls -l /var/www/example.com -rw-r--r-- 1 anna www-data 1520 index.html -rw-r----- 1 anna www-data 412 config.php drwxr-xr-x 2 anna www-data 4096 images drwxrwxr-x 2 www-data www-data 4096 uploads
Primul caracter indică tipul: - este un fișier, d un director, l o legătură simbolică. Urmează trei grupuri de câte trei caractere: ce poate face proprietarul, ce poate face grupul și ce pot face toți ceilalți. Apoi sunt afișați proprietarul (anna) și grupul (www-data).
| Literă | La un fișier | La un director |
|---|---|---|
r | Citire | Afișarea numelor din director |
w | Modificare | Crearea, redenumirea și ștergerea fișierelor |
x | Executare ca program | Intrarea în director și deschiderea fișierelor din el |
Rețineți două lucruri. Fără x pe un director nu puteți ajunge la fișierele din el, chiar dacă acestea pot fi citite. Iar cine are w pe un director poate șterge fișiere din el, chiar dacă aparțin altcuiva.
Permisiunile ca număr
Adesea permisiunile se scriu ca trei cifre: r valorează 4, w 2 și x 1, adunate pentru fiecare grup.
| Număr | Permisiuni | Utilizare |
|---|---|---|
| 644 | rw-r--r-- | Fișier obișnuit, de exemplu o pagină web sau o imagine |
| 755 | rwxr-xr-x | Director sau program pe care îl poate folosi oricine |
| 640 | rw-r----- | Configurație cu o parolă, care poate fi citită de serverul web prin grup |
| 600 | rw------- | Fișier secret, precum authorized_keys, o cheie privată sau un fișier .env |
| 700 | rwx------ | Director privat, precum ~/.ssh |
Modificarea permisiunilor și a proprietarului
chmod 640 /var/www/example.com/config.php chmod g+w /var/www/example.com/uploads sudo chown anna:www-data /var/www/example.com/config.php
chmod modifică permisiunile, cu un număr sau cu litere (u, g, o pentru proprietar, grup și ceilalți, cu + sau -). chown proprietar:grup modifică proprietarul și grupul; acest lucru îl poate face doar root, deci cu sudo.
Pentru un director întreg, chmod -R 644 este o greșeală cunoscută: toate subdirectoarele își pierd atunci x și devin inutilizabile. Setați directoarele și fișierele separat cu find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Serverul web prin grup
Pe Debian și Ubuntu, nginx și PHP-FPM rulează implicit sub utilizatorul www-data. O organizare corectă: dumneavoastră sunteți proprietarul fișierelor, iar grupul este www-data. Serverul web poate atunci citi prin grup și poate scrie doar în directorul unde este cu adevărat necesar, precum uploads (chmod g+w sau proprietarul www-data doar pe acel director). Nu acordați serverului web drept de scriere pe fișierele dumneavoastră PHP.
777. Astfel, oricine de pe server poate citi, modifica și executa fișierul sau directorul. Dacă vreodată un singur site web sau serviciu este compromis, atacatorul poate scrie oriunde este setat 777. Problema reală este aproape întotdeauna proprietarul sau grupul: rezolvați-o pe aceasta în loc să deschideți totul.Permisiuni pentru SSH
Serverul SSH verifică permisiunile cheilor dumneavoastră. Dacă alții pot scrie în directorul dumneavoastră .ssh sau în directorul dumneavoastră personal, acesta vă ignoră cheia și vi se cere din nou parola, fără un mesaj de eroare clar. Setați-le astfel:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Dacă ați creat directorul ca root pentru un alt utilizator, setați corect și proprietarul, ca în Un utilizator propriu cu sudo. Pe AlmaLinux și Rocky Linux, și SELinux poate refuza un fișier care are permisiunile corecte; pentru un director .ssh creat manual ajută restorecon -Rv ~/.ssh.
s în loc de un x, ca la /usr/bin/passwd? Acesta este bitul setuid: programul rulează atunci cu permisiunile proprietarului. Câteva programe de sistem au nevoie de el, dar nu îl setați niciodată singur pe un script. Un fișier setuid neașteptat poate indica o intruziune, consultați Ați fost atacat? Primii pași.Doriți să aflați mai multe? Urmați cursul gratuit VPS și administrarea serverelor Linux, lecția 3.1 Utilizatori, grupuri și permisiuni pentru fișiere.
