WordPress Permissions – How To Set Up Proper Filesystems And Ownerships
Despre autor
Benjamin este fondatorul și dezvoltatorul principal al Gambit. El este creatorul Page Builder Sandwich și Stackable – Ultimate Gutenberg Blocks. Puteți găsi …Mai multe despreBenjamin↬
- 12 min read
- WordPress,Servere,Securitate,Tehnici (WP)
- Salvat pentru citire offline
- Share on Twitter, LinkedIn
Când oamenii vorbesc despre securitatea WordPress, permisiunile și proprietatea fișierelor sunt, de obicei, ultimul lucru la care se gândesc. Instalarea pluginurilor de securitate este o bună practică și o necesitate pentru fiecare site WordPress. Cu toate acestea, dacă permisiunile sistemului de fișiere nu sunt configurate corect, majoritatea măsurilor de securitate ar putea fi ușor de ocolit de către intruși.
Permisiunile și proprietatea sunt destul de importante în instalațiile WordPress. Configurarea corectă a acestora pe serverul dvs. web ar trebui să fie primul lucru pe care îl faceți după instalarea WordPress. Având un set greșit de permisiuni ar putea cauza erori fatale care să vă oprească site-ul web. De asemenea, permisiunile greșite vă pot compromite site-ul web și îl pot face predispus la atacuri.
Lecturi suplimentare pe SmashingMag:
- Ce trebuie să faceți atunci când site-ul dvs. se oprește
- Cum să vă păstrați organizat fluxul de lucru de codare
- Cum să aflați de ce site-ul dvs. a încetat să mai funcționeze
- 9 pași pentru o relație fericită cu furnizorul dvs. de găzduire
În afară de problemele de securitate, o serie de alte probleme pot proveni din faptul că aveți un set greșit de permisiuni și proprietate. V-ați confruntat vreodată cu un ecran alb și gol atunci când încercați să vă încărcați site-ul web pentru prima dată? Sau ați primit vreodată mesaje de eroare atunci când ați încercat să încărcați imagini în media uploader? Corectarea permisiunilor și a proprietății fișierelor și folderelor dvs. va rezolva adesea aceste tipuri de probleme.
În acest articol, vă vom învăța totul despre permisiunile și proprietatea sistemului de fișiere WordPress: ce sunt, de ce sunt importante și cum să le configurați. Veți învăța câteva principii de bază pe care eu le urmez pentru a-mi păstra sistemul de fișiere intact. Vom acoperi, de asemenea, cele mai comune două configurații de server WordPress. Vom explica modul în care acestea diferă și, mai important, cum să setați permisiunile și proprietatea corespunzătoare pentru fiecare.
Terminal Vs. FTP Client
În cursul acestui articol, vom folosi terminalul pentru a schimba permisiunile și proprietatea. De ce să nu folosim în schimb un client FTP? Motivul este că FTP este un pic limitat pentru nevoile noastre. FTP poate fi folosit pentru a transfera fișiere și pentru a schimba permisiunile fișierelor și ale dosarelor, dar nu poate fi folosit pentru a schimba setările de proprietate.
Pentru a efectua comenzile enumerate în acest articol, va trebui să fiți conectat la serverul dumneavoastră folosind comanda SSH
. Dacă nu sunteți familiarizat cu terminalul și cu SSH
, puteți învăța despre ele în articolul „Introducere în comenzile Linux.”
Utilizatori și grupuri
Înainte de orice altceva, trebuie să vorbim rapid despre ce sunt utilizatorii și grupurile, deoarece acestea merg mână în mână atunci când se definesc permisiunile.
Pentru a simplifica, un utilizator este un cont care are acces la calculator, iar un grup este doar un identificator pentru un anumit set de utilizatori. Acest lucru înseamnă că, de fiecare dată când transferați fișiere folosind FTP, utilizați un cont de utilizator pe server. Și, în funcție de modul în care gazda dvs. v-a configurat contul, este posibil ca dvs. (utilizatorul) să aparțineți unuia sau mai multor grupuri. Utilizatorii și grupurile sunt ca utilizatorii și rolurile din WordPress. Din punct de vedere conceptual, ambele sunt la fel, cu excepția faptului că primele sunt folosite pe serverul dumneavoastră.
Utilizatorii și grupurile sunt importante deoarece ajută la identificarea privilegiilor pentru toate fișierele și folderele noastre. Proprietarii unui fișier, în mod normal, ar avea privilegii complete asupra acestuia; alți utilizatori care aparțin aceluiași grup ar avea mai puține privilegii asupra acestuia; în timp ce toți ceilalți ar putea să nu aibă privilegii asupra acestuia. Aceste privilegii sunt ceea ce numim permisiuni.
Ce sunt permisiunile fișierelor?
Permisiunile dictează ce pot face utilizatorii cu un fișier. O permisiune este reprezentată de un set de numere, cum ar fi 644
sau 777
, denumit mod de permisiune. Dacă ați mai folosit plugin-uri în WordPress, atunci cel mai probabil vi s-a cerut de către unele dintre ele să modificați permisiunile unui fișier sau director, deoarece plugin-ul nu poate scrie în el. Prin modificarea permisiunilor fișierului, permiteți serverului web să obțină acces la acel fișier sau dosar.
Gândiți-vă la un mod de permisiune ca la un set de declarații „cine poate face ce”, în care fiecare cifră corespunde părții „cine” a declarației:
- Prima cifră. Ceea ce poate face utilizatorul din contul care deține fișierul
- A doua cifră. Ce pot face ceilalți utilizatori ai conturilor din grupul proprietarului
- A treia cifră. Ce pot face conturile de utilizator ale tuturor celorlalți (inclusiv ale vizitatorilor site-ului web)
În continuare, cifra corespunde părții „ce” din enunț și este o sumă a unei combinații a oricăreia dintre aceste cifre:
-
4
Citirea unui fișier sau citirea numelor fișierelor dintr-un dosar -
2
Scrierea sau modificarea unui fișier, sau modificarea conținutului unui dosar -
1
Executarea sau rularea unui fișier, sau accesarea fișierelor dintr-un dosar
Aceste cifre reprezintă privilegiile care sunt atribuite lui „cine” în modul de permisiune. Rețineți în lista de mai sus că privilegiile înseamnă ceva diferit pentru fișiere și dosare.
Utilizarea modului de permisiune corect este destul de importantă. Pentru a ilustra mai bine acest lucru, gândiți-vă din nou la utilizatorii și rolurile din WordPress. Pe un site WordPress, contribuitorii și administratorii au seturi diferite de capacități. Contributorii pot crea noi articole de blog, dar nu pot adăuga plugin-uri. Administratorii, pe de altă parte, pot adăuga plugin-uri și, de asemenea, pot crea articole de blog. Administratorii pot chiar să schimbe aspectul site-ului web, dacă doresc. O linie clară separă ceea ce pot face utilizatorii cu roluri diferite. Același lucru se întâmplă și cu modurile de permisiune, cu excepția faptului că, în loc să avem de-a face cu postările de pe blog și opțiunile temei, avem de-a face cu fișiere și foldere de pe server.
Schimbarea modurilor de permisiune
Clienții FTP oferă, de obicei, o interfață prin care puteți schimba în mod convenabil modul de permisiune al fișierelor și folderelor dumneavoastră. Iată o captură de ecran a interfeței din clientul meu FTP:
Exemplu de interfață a modului de permisiune.
Dacă aveți acces la terminalul serverului, puteți folosi, de asemenea, comanda chmod
pentru a schimba modul de permisiune al unui fișier sau dosar:
sudo chmod 644 <file>
Pentru a schimba modul de permisiune al tuturor fișierelor sau dosarelor, folosiți chmod
în tandem cu comanda find
. De exemplu, puteți folosi această comandă pentru a schimba toate fișierele în 644
:
sudo find . -type f -exec chmod 644 {} +
Sau folosiți această comandă pentru a schimba toate folderele în 755
:
sudo find . -type d -exec chmod 755 {} +
Referiți-vă la „Changing File Permissions in the WordPress Codex” pentru un ghid privind schimbarea modurilor de permisiune.
Diferența dintre 644 și 777
Să analizăm câteva moduri de permisiune și modul în care acestea afectează site-ul nostru web.
Ce ar însemna un script PHP cu un mod de permisiune de 644
? Urmărind explicația de mai sus despre cum funcționează modurile de permisiune, putem descifra ce le permite utilizatorilor acest mod să facă cu scriptul nostru:
- Privilegiile proprietarului sunt „citire” (4) + „scriere” (2) =
6
- Privilegiile grupului proprietarului sunt „citire” (4) =
4
- Privilegiile tuturor celorlalți sunt „citire” (4) =
4
În limbaj simplu, aceasta înseamnă că:
- dacă deținem scriptul, putem să îl citim și să îl modificăm;
- toți ceilalți pot doar să îl citească.
Cum putem vedea, 644
este un mod de permisiune bun pentru scriptul nostru PHP. Îl putem modifica, iar serverul nostru Web îl poate citi.
Acum să ne uităm la foldere. Ce s-ar întâmpla dacă am deține un dosar care are un mod de permisiune 777
? Acest mod de permisiune poate fi împărțit după cum urmează:
- Privilegiile proprietarului sunt „read” (4) + „write” (2) + „execute” (1) =
7
- Privilegiile grupului proprietarului sunt „read” (4) + „write” (2) + „execute” (1) =
7
. - Privilegiile tuturor celorlalți sunt „read” (4) + „write” (2) + „execute” (1) =
7
Acest lucru înseamnă că
- orice persoană poate obține o listă cu numele fișierelor din dosarul nostru;
- orice persoană poate crea, modifica și șterge orice fișier din dosarul nostru;
- orice persoană poate accesa fișierele din dosarul nostru.
Este evident că 777
este un mod de permisiune prost pentru orice pe site-ul nostru WordPress, deoarece orice vizitator ar putea adăuga fișiere în directorul nostru sau chiar șterge scripturi. Mai rău, oricine ar fi capabil să introducă coduri malițioase și să compromită site-ul nostru web.
Configurări server WordPress
Acum știm despre permisiuni și cum să le citim. Dar, înainte de a trece la modificarea tuturor permisiunilor, trebuie să înțelegem cum este configurat serverul nostru. Deoarece permisiunile se ocupă de conturile și grupurile de utilizatori, trebuie să știm cum funcționează site-ul nostru WordPress.
Există o mulțime de configurații de server diferite. Configurațiile diferite au nevoie de seturi diferite de moduri de permisiune pentru ca WordPress să funcționeze corect și în siguranță. Vom vorbi doar despre cele mai comune două configurații și despre permisiunile adecvate pentru acestea:
- Configurația standard a serverului:
- Aveți un cont de utilizator.
- Serverele dvs. web rulează ca un alt cont de utilizator.
- Configurație de server partajat sau configurație
suEXEC
:- Aveți un cont de utilizator.
- Alte persoane care utilizează serverul au conturi de utilizator și ar putea împărți același grup cu contul dvs. de utilizator.
- Serverele dvs. web rulează ca proprietar al fișierelor WordPress.
Principala diferență între acestea două constă în modul în care se execută serverul Web.
Permisiuni pentru o configurație standard a serverului WordPress
Configurările WordPress standard necesită ceva mai multă muncă decât cele cu server partajat, deoarece serverul Web nu are nicio relație cu contul nostru de utilizator.
File and Folder Ownership for WordPress
În primul rând, trebuie să ajustăm proprietatea fișierelor și a dosarelor fișierelor WordPress. Va trebui să ne asigurăm de următoarele:
- că contul dvs. de utilizator este proprietarul tuturor fișierelor și folderelor WordPress,
- că contul dvs. de utilizator și contul de utilizator al serverului Web aparțin aceluiași grup.
Pentru a afla grupurile din care face parte contul dumneavoastră de utilizator, puteți utiliza această comandă în terminalul serverului dumneavoastră:
groups
Apoi, pentru a afla grupurile din care face parte serverul dumneavoastră Web, puteți insera temporar acest fragment PHP într-unul dintre scripturile dumneavoastră WordPress:
echo exec( 'groups' );
Dacă utilizatorul dvs. și serverul Web nu aparțin aceluiași grup, puteți utiliza următoarea comandă în terminal pentru a adăuga utilizatorul dvs. la unul dintre grupurile serverului Web:
sudo usermod -a -G <a-common-group-name> myuser
În cele din urmă, pentru a vă asigura că tot ceea ce se află în dosarul nostru WordPress aparține contului nostru de utilizator și are grupul partajat pe care tocmai l-am adăugat, executați această comandă în dosarul WordPress:
sudo find . -exec chown myuser:a-common-group-name {} +
Permissions for WordPress
Toate fișierele și dosarele noastre ar trebui să aibă acum proprietatea corectă. Acum este timpul să ajustăm modurile de permisiune. Pentru a simplifica lucrurile, va trebui să rețineți doar următoarele:
- Toate fișierele ar trebui să fie
664
. - Toate folderele ar trebui să fie
775
. -
wp-config.php
ar trebui să fie660
.
Iată ce încercăm să obținem cu acest set de moduri de permisiune:
- Contul nostru de utilizator poate citi și modifica fișierele noastre.
- WordPress (prin intermediul serverului nostru Web) poate citi și modifica scripturile noastre.
- WordPress poate crea, modifica sau șterge fișiere și foldere.
- Alte persoane nu pot vedea acreditările bazei noastre de date în
wp-config.php
.
S-ar putea să vă gândiți că a permite lui WordPress privilegii complete cu folderele noastre nu este sigur. Nu vă faceți griji – facem acest lucru deoarece WordPress are nevoie de anumite caracteristici pentru a crea și modifica fișiere. WordPress ne permite să încărcăm și să eliminăm teme și plugin-uri și chiar să modificăm scripturi și stiluri din back-end-ul administrativ. Fără acest tip de permisiune, ar trebui să încărcăm manual teme și plugin-uri de fiecare dată folosind FTP.
Puteți folosi clientul FTP pentru a schimba modurile de permisiune sau puteți folosi următoarele comenzi în directorul WordPress pentru a ajusta rapid permisiunile tuturor fișierelor și folderelor:
sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php
Rețineți că unele servere Web sunt mai stricte decât altele. Dacă al dvs. este strict, atunci setarea wp-config.php
la 660
ar putea împiedica funcționarea site-ului dvs. web. În acest caz, lăsați-o ca 664
.
Permisiuni pentru o configurație de server partajat sau o configurație SuEXEC
Permisiunile pentru configurațiile de server partajat sunt mai ușor de implementat. Nu vom insista asupra proprietății, deoarece serverul Web rulează ca proprietar al fișierelor și folderelor noastre. Deoarece contul nostru de utilizator și serverul Web împart aceleași permisiuni (ambii sunt proprietari), ne putem arunca direct în modificarea modurilor de permisiune:
- Toate fișierele ar trebui să fie
644
. - Toate dosarele ar trebui să fie
755
. -
wp-config.php
ar trebui să fie600
.
Similare setului anterior de moduri de permisiune, acestea se împart după cum urmează:
- Contul nostru de utilizator poate citi și modifica fișierele noastre.
- WordPress (prin intermediul serverului nostru Web și în calitate de proprietar al contului) poate citi și modifica scripturile noastre.
- WordPress poate crea, modifica sau șterge fișiere sau foldere.
- Alte persoane nu pot vedea acreditările noastre pentru baza de date din
wp-config.php
.
Din nou, puteți utiliza un client FTP pentru a schimba modurile de permisiune sau puteți utiliza următoarele comenzi în directorul WordPress pentru a ajusta rapid permisiunile tuturor fișierelor și folderelor:
sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php
Similar cu configurația standard a serverului WordPress, serverul dvs. ar putea fi mai strict decât altele și ar putea să nu permită ca wp-config.php
să fie 600
. În acest caz, îl puteți ajusta la un 640
mai îngăduitor; dacă asta tot nu funcționează, atunci folosiți 644
.
Să urmați întotdeauna aceste indicații, iar fișierele WordPress ar trebui să fie în siguranță față de intruși.
Capcanele comune
O greșeală comună pe care o fac oamenii este să seteze folderul uploads
la 777
. Unii fac acest lucru deoarece primesc o eroare atunci când încearcă să încarce o imagine pe site-ul lor, iar 777
rezolvă rapid această problemă. Dar nu oferiți niciodată acces nelimitat tuturor, altfel veți face serverul Web vulnerabil la atacuri. Dacă respectați liniile directoare abordate în acest articol, atunci nu ar trebui să aveți probleme cu încărcarea fișierelor pe site-ul dvs. web.
Atunci, însă, un plugin vă va solicita să setați un fișier la 777
. În aceste ocazii, îl puteți seta temporar la 777
, dar asigurați-vă că îl setați înapoi la modul original de permisiune atunci când ați terminat.
Concluzie
Am învățat acum despre permisiunile adecvate și proprietatea fișierelor pe un site web WordPress. Am învățat, de asemenea, să evităm un mod de permisiune de 777
din cauza modului în care pune în pericol serverul Web.
.