Drepturi de acces la fișiere și directoare în sisteme similare unix

Pentru funcționarea corectă a scripturilor PHP și a securității datelor, trebuie să setați anumite permisiuni pentru fișiere și directoare utilizând comanda chmod sau clientul FTP sau managerul de fișiere al panoului de control al gazdei. De unde știi ce valoare a permisiunilor ar trebui aplicată pentru a obține rezultatul optim?

Proprietar și grup

În sistemele de fișiere ale sistemelor de operare UNIX (Linux, FreeBSD etc.), proprietățile fiecărui element al sistemului de fișiere (fișier sau director) conțin informații despre proprietar și grup.

Proprietarul fișierului / directorului este numele de utilizator al sistemului de operare la care fișierul sau directorul "aparține".
Group - numele grupului de utilizatori ai sistemului de operare ai cărui membri li se permite accesul la fișier sau director.

Rețineți că fiecare proprietar de fișiere și director și numele grupului pot fi diferite. De exemplu, dacă conexiunea FTP și serverul web sunt pornite pe gazdă de către utilizatori diferiți (de exemplu, ftp-user și Apache), fișierele descărcate prin FTP vor fi deținute de ftp-user. și pentru fișierele create utilizând un script PHP (de exemplu, despachetat în timpul instalării WebAsyst), proprietarul va fi Apache.

Drepturi de acces

Fiecărui fișier și director i se atribuie un număr de 3 cifre care specifică ce permisiune este permis proprietarului, membrilor grupului și tuturor celorlalți utilizatori ai sistemului de operare:

  • prima cifră denotă drepturile de acces ale proprietarului;
  • al doilea număr denotă drepturile de acces ale membrilor grupului;
  • a treia cifră înseamnă drepturile de acces ale altor utilizatori ai sistemului.

Fiecare cifră reprezintă suma valorilor accesului fix:

1 (indicată și prin litera x) - execuție. Aceasta face fișierul executabil (program), iar pentru director permite modificarea conținutului acestuia (de exemplu, crearea, ștergerea sau redenumirea fișierelor din interiorul acestuia).
2 (semnalată și prin litera w) - suprascrierea. Vă permite să suprascrieți conținutul fișierului, iar directorul vă permite să îl redenumiți.
4 (desemnată și prin litera r) - lectură. Vă permite să citiți conținutul fișierului, iar pentru director - citiți lista cu numele subdirectoarelor și fișierelor imbricate.

În acest exemplu, proprietarului i se permite să execute, să suprascrie și să citească (1, 2 și 4), membrii grupului execută și citesc doar (1 și 4), iar alți utilizatori ai sistemului de operare nu au acces.

Directoarele și fișierele WebAsyst

Funcțiile fiecărui fișier și a directorului din structura fișierului WebAsyst sunt diferite - accesul la unele este suficient în modul de citire, altele trebuie să poată suprascrie cu script-uri PHP sau prin FTP. Pentru o listă de directoare și fișiere și drepturi suficiente de acces pentru acestea, consultați Ghidul de instalare WebAsyst Script din secțiunea "Securizarea WebAsyst după instalare".

Mai multe probleme practice cu soluții

Ce drepturi am nevoie pentru a seta un fișier pentru al edita prin FTP?

Depinde de numele proprietarului și de grupul de fișiere / directoare, precum și de utilizatorul în care grup. Să luăm în considerare toate acestea cu un exemplu.

având în vedere:
Pe server există utilizatori ftp-user și Apache și grup de grupuri. care include utilizatorul ftp-utilizator.
Proprietarul fișierului este Apache. numele grupului este grup.
Este necesar să se ofere posibilitatea de a edita fișierele și scripturile PHP (utilizatorul Apache) și clientul FTP (utilizator ftp-utilizator). Cu toate acestea, orice alt acces în scopuri de securitate ar trebui interzis.

soluţie:
Drepturile de acces ale proprietarului. Deoarece proprietarul este același utilizator care execută scripturi PHP (în acest exemplu Apache), trebuie să acorde drepturi de citire (4) și suprascriere (2) - să execute codul PHP și să suprascrie fișierul (de exemplu, când actualizează scripturile). Prin urmare, prima cifră este 2 + 4 = 6.
Drepturi de acces la grup. Conexiunea FTP funcționează în numele utilizatorului ftp-utilizator. care este inclus în fișierul de grup (grup), astfel încât membrii grupului au nevoie de drepturi de citire și re-scriere, adică 2 + 4 = 6.
Drepturile de acces ale altor utilizatori. deoarece toate drepturile de acces necesare au fost deja acordate, nu este nevoie să desemnați altceva, deci lăsați 0.

Noi compunem ultimul număr din valorile individuale și obținem 660 și executăm comanda chmod:

Ce drepturi trebuie să configurez pentru un director pentru a edita fișierele FTP din interiorul acestuia?

având în vedere:
Proprietarul directorului este Apache. numele grupului este grup.

soluţie:
Drepturile de acces ale proprietarului. presupuneți că proprietarul (în acest caz script-uri PHP "în persoana" serverului web) trebuie să aibă acces deplin la fișierele din interiorul directorului pentru funcționarea normală a programului, deci valoarea 1 + 2 + 4 = 7.
Drepturi de acces la grup. Conexiunea FTP funcționează în numele utilizatorului ftp-utilizator. care este inclus în fișierul de grup (grup), astfel încât membrii grupului au nevoie de drepturi de a citi și de a executa (modifica conținutul directorului), adică 1 + 4 = 5.
Drepturile de acces ale altor utilizatori. deoarece toate drepturile de acces necesare au fost deja acordate, nu este nevoie să desemnați altceva, deci lăsați 0.

Se compune numărul final din valorile individuale și se obține 750 și se execută comanda chmod:

Notă. dacă schimbați numele proprietarului, numele grupului sau când ștergeți utilizatorii dintr-un grup sau adăugați utilizatori noi într-un grup de fișiere sau director, este posibil să fie necesar să modificați drepturile de acces în conformitate cu descrierea de mai sus. Atenție, vă rog. numele utilizatorilor, grupurile și informațiile despre membrii grupului de utilizatori din aceste exemple pot fi diferite de setările reale ale serverului dvs. Pentru mai multe informații, contactați administratorul de sistem.

Gazduire comună

Unii furnizori de hosting impun restricții asupra permisiunilor care sunt permise pentru a atribui fișiere și directoare. Încercările de a stabili drepturi de acces care depășesc aceste limite pot duce la un cod de eroare de 500 sau 403. Citiți regulile corespunzătoare ale furnizorului de servicii de găzduire înainte de a începe să delimitați drepturile de acces. Pentru a nu depinde de limitările găzduirii virtuale, utilizați un server dedicat sau propriu pentru a instala script-ele WebAsyst.

Articole similare