Cum pot face fișierul .htaccess editabil din wp-admin?
Furnizorul meu de găzduire a schimbat hostingul pentru blogul meu WordPress și totul a încetat să mai funcționeze. A existat o problemă de DNS care a fost rezolvată, dar apoi toate paginile, cu excepția paginii principale, returnau o eroare 404.
Când am verificat pagina de permalinks (/wp-admin/options-permalinks.php
) în wp-admin am văzut următoarele:
Dacă fișierul .htaccess ar fi editabil, am putea face acest lucru automat, dar nu este, așa că acestea sunt regulile mod_rewrite pe care ar trebui să le aveți în fișierul .htaccess. Faceți click în câmp și apăsați CTRL + a pentru a selecta tot.
Adăugarea a ceea ce era listat (prin intermediul managerului de fișiere al furnizorului de găzduire) a rezolvat problema, dar m-a făcut să mă întreb.
Ceea ce mi-aș dori este ca fișierul .htaccess
să fie editabil din wp-admin.
Știu că fișierul nu ar trebui să fie editabil pentru toată lumea și aș păstra permisiunile cât mai restrictive posibil pentru a menține securitatea, sunt doar interesat să-mi fac viața mai ușoară.
Cu toate acestea, observ că permisiunile pe fișier sunt:
rw-r--r--
Deci ce permisiuni trebuie să setez pentru a face fișierul editabil din wp-admin, dar nu de către oricine? Sau sunt alte permisiuni pe server care trebuie setate?
Pot face manual modificări prin interfața managerului de fișiere al furnizorului de găzduire, deci nu este ca și cum nu aș putea actualiza deloc fișierul. Este doar că ar putea deveni o problemă dacă trebuie să fac asta în mod constant.

Pe sistemele de fișiere ale computerelor, diferite fișiere și directoare au permisiuni care specifică cine și ce poate citi, scrie, modifica și accesa acestea. Acest lucru este important deoarece WordPress poate avea nevoie să scrie în fișiere din directorul wp-content pentru a activa anumite funcționalități.
Cu toate acestea, este mai bine să păstrați fișierul .htaccess nepermis la scriere pentru toți. Fișierul .htaccess este un fișier de configurare distribuit și este modul în care Apache gestionează modificările de configurare pe bază de director.
http://codex.wordpress.org/htaccess
Păstrarea fișierului .htaccess cu permisiuni de scriere pentru toți poate avea consecințe grave, în special din punct de vedere al securității. Cel mai rău lucru care se poate întâmpla ca urmare a utilizării permisiunilor 777 pe un director sau chiar pe un fișier este că, dacă un atacator rău-intenționat sau o entitate reușește să încarce un fișier rău-intenționat sau să modifice un fișier existent pentru a executa cod, acesta va avea control complet asupra blogului dvs., inclusiv asupra informațiilor și parolei bazei de date.
http://codex.wordpress.org/Changing_File_Permissions
Permisiuni implicite (umask 022)
644 -rw-r--r-- /home/user/wp-config.php
644 -rw-r--r-- /home/user/cgi-bin/.htaccess
Permisiuni securizate
600 -rw------- /home/user/wp-config.php
604 -rw----r-- /home/user/cgi-bin/.htaccess
Permisiuni .htaccess
644 > 604 - Bitul care permitea grupului proprietar al fișierului .htaccess permisiunea de citire a fost eliminat. 644 este de obicei necesar și recomandat pentru fișierele .htaccess.

Dacă un atacator poate încărca un fișier PHP sau poate citi informațiile de conectare la baza de date din wp-config.php
, practic ești compromis. Să ai un fișier .htaccess
doar pentru citire nu te va ajuta prea mult în acest caz.

@SimonEast corect, mulțumesc, dar nu sunt sigur unde în răspunsul meu am menționat să păstrezi wp-config.php cu drepturi de scriere. De asemenea, WordPress are nevoie de drepturi de scriere în anumite directoare, cum ar fi folderul de încărcări. Îi încurajez pe utilizatori să parcurgă pagina despre permisiunile fișierelor WordPress, pe care am menționat-o și eu în răspuns. :)

Versiune scurtă: Nu poți.
Versiune lungă: Din punct de vedere tehnic există metode prin care acest lucru poate fi realizat, dar ele sunt ① probabil indisponibile pentru tine ca utilizator pe un server partajat unde nu ai permisiuni de root și ② chiar dacă ar fi disponibile, acestea vin cu capcane pe care chiar nu ai nevoie să le confrunți.
În primul rând, dacă nu ești administratorul de sistem cu permisiuni root, este puțin probabil să ai vreo șansă să setezi permisiunile necesare.
Biții de permisiune UNIX controlează dacă tu, persoanele din grupul tău sau oricine altcineva poate citi, scrie și executa fișiere. Având în vedere acest set de opțiuni și faptul că tu și serverul web probabil nu sunteți în același grup, nu există nicio modalitate prin care să folosești acele permisiuni pentru a seta o valoare care să permită atât ție cât și utilizatorului serverului web să scrie în fișier, dar altor persoane să nu le fie permis. Prin definiție, ar trebui să modifici permisiunile "globale" și... poți face calculul.
Dacă, printr-o coincidență, contul tău de utilizator și serverul web rulează de fapt în același grup de utilizatori, ar trebui să începi să te îndoiești serios de securitatea furnizorului tău de servicii web.
O tehnică puțin mai puțin nesănătoasă pe care o folosesc unele gazde este să îți ofere o interfață specială pentru a converti anumite fișiere și foldere să fie deținute de serverul web. Aceasta este o alegere bazată pe confort în detrimentul securității pe care o fac pentru a ușura lucrurile oamenilor, dar vine cu condiții. În orice caz, nu ai putea edita manual fișierul fără a schimba proprietatea înapoi la tine.
Chiar dacă ți se oferă una sau mai multe modalități de a permite software-ului serverului web să editeze fișierul .htaccess, ești mult mai bine să nu le folosești. Într-un mediu de hosting partajat, trebuie să realizezi că alți oameni, pe lângă tine, execută și ei cod ca utilizatorul serverului web. Dacă instalarea ta de WordPress poate schimba fișierul tău .htaccess, ce împiedică WordPress-ul următorului utilizator să îl modifice cu intenții malitioase? Teoretic, setările open_base_dir din PHP îl vor restricționa să citească și să scrie doar în interiorul DOCUMENT_ROOT-ului tău, dar deși modulul PHP este destul de bun în aplicarea acestui lucru, este destul de comun ca furnizorii de servicii de internet și gazdele mici să aibă alte sisteme CGI care nu sunt corect restricționate sau chiar setări de server configurate greșit care permit altor utilizatori de pe același server să se amestece în orice au convertit alți utilizatori să fie deținut de serverul web.
Singura modalitate tehnică de a face acest lucru cu adevărat posibil este cu o configurare de gazdă virtuală care rulează de fapt ca tine atunci când deservește site-ul tău (ceea ce introduce de fapt alte riscuri) sau cu ACL-uri ale sistemului de fișiere — și deși este posibil, este puțin probabil ca furnizorul tău de servicii de internet să fie echipat să le configureze corect.
În concluzie, din punct de vedere al securității, ești mai bine dacă wp-admin nu poate scrie în .htaccess. Acesta ar trebui să fie oricum un problemă rară, de obicei la schimbările de versiune fie ale WordPress, fie ale software-ului de server (de exemplu, trecerea de la Apache 2.2 la 2.4 a însemnat că multe fișiere .htaccess de pe internet au trebuit actualizate, dar acest lucru a fost în desfășurare ani de zile). Acesta nu este ceva care ar trebui să se schimbe de fiecare dată când îți actualizezi site-ul, doar dacă ai făcut o schimbare arhitecturală și ai avut nevoie să facilitezi migrarea URL-urilor vechi către cele noi, etc.
