Cum să reîncărcați numele din surplusul stivei php-script în limba rusă

Există un VPS cu centos 7 cu acces root. Este necesar să executați din când în când o comandă din scriptul php:

Rezultatul exec ("whoami"):

Pe baza asta, echipa







nu va funcționa? Poate exista o soluție?

Pot să dau utilizatorului drepturi de rădăcină apache? Cum se face acest lucru? Și din punct de vedere al securității, este în siguranță?

În cazuri extreme, puteți arunca un script bash și spuneți cum să îl executați din php.

setat pe 26 martie 16 la 21:35

Marcat ca duplicat de membrii alexander barakin. zRrr. KFF. D-side. PashaPash ♦ 31 Mar '16 la 8:37 am.

O întrebare similară a fost întrebată mai devreme și un răspuns a fost deja primit. Dacă răspunsurile nu sunt exhaustive, adresați-vă o nouă întrebare.

Creați un script bash sub rădăcină, spuneți că va fi /usr/local/bin/namereload.sh:

Atenție: este mai bine să specificați calea completă la systemctl din script, deoarece cel mai probabil se află undeva în / sbin sau / usr / sbin, iar aceste căi nu pot fi în PATH la timpul de rulare al scriptului php. Scriptul în sine trebuie să fie creat de către root și în directorul accesibil pentru a scrie doar root (și pentru citirea tuturor), astfel încât conținutul său să nu poată fi modificat de către un utilizator neprivilat.







Asigurați scriptul executabil chmod a + x /usr/local/bin/namereload.sh

În / etc / sudoers, adăugați linia:

În scriptul php scriem:

În această versiune, totul este absolut sigur. Singura comandă pe care utilizatorul apache o poate executa sub rădăcină este restabilirea numelui.

Mulțumesc, probabil că o voi face. Mai mulți ar dori să întreb, ce se întâmplă dacă fișierul sa schimbat în utilizare /etc/php-fpm.d/www.conf = grup de apache = apache pe utilizator = grup de root = rădăcină, astfel încât ideea de php ca root va rula și Exec ( ) va fi posibil să executați orice comenzi? Va fi sigur din punctul de vedere al securității? (Având în vedere faptul că pe un VPS va nakikih alți utilizatori, cu excepția mine) - sashaeee 27 martie '16 la 16:19

@sashaeee da script-uri PHP root nu merită. În oricare dintre scenariile poate fi o eroare, de exemplu, care permite obținerea unui fișier arbitrar. Dacă script-ul este sub rădăcină, atunci va fi capabil să primească fișierul de parolă. În mod similar, dacă folderele în care se află scripturile nu sunt disponibile pentru utilizatorul Apache la care să scrie, atunci introducerea oricărui cod prin erori în scripturi este extrem de problematică. Și sub rădăcină puteți merge direct prin rețea în orice parte a sistemului - Mike 27 Mar '16 la 16:22

Din păcate, nu a primit-mi pentru a rula script-ul meu (am creat un fișier executabil /home/bash/namedreload.sh făcut script-ul la fișierul etc / sudoers add = ALL apache (ALL) NOPASSWD: # 47; acasă # 47; bash # 47; namedreload.sh dar exec script ( 'sudo /home/bash/namedreload.sh'); nu funcționează (dacă atunci când acesta prin chit autentificat ca root și rulați serverul în linia de comandă sudo /home/bash/namedreload.sh totul funcționează (am scris înapoi pentru a testa #! / bin / sh cd / home mkdir 123). Acesta poate fi spune ce poate fi cazul să repornească VPS - ?. sashaeee 27 martie '16 la 18:50







Trimiteți-le prietenilor: