Puncte:1

Nu se poate schimba parola utilizatorului Linux cu scriptul php

drapel ng
kbu

Am următorul script php pentru schimbarea parolei: <?php raportare_erori(E_ALL); ini_set('erori de afișare', TRUE); ini_set('display_startup_errors', TRUE); ini_set('eroare de afișare', adevărat);

$cmd = 'sudo -u root sh -c \'/usr/bin/echo "nume utilizator:trecere" | sudo /usr/sbin/chpasswd 2>&1\'';
exec($cmd,$output,$return_val);
print_r($ieșire);
echo $return_val;
?>

Acest script arată eroare în browser:

pam_chauthtok() a eșuat, eroare: [1] => Blocarea jetonului de autentificare ocupată [2] => chpasswd

Dar comanda

sudo -u root sh -c '/usr/bin/echo "nume utilizator:trecere" | sudo /usr/sbin/chpasswd 2>&1'

functioneaza bine. Poate cineva să-mi dea un sfat, de ce primesc în browser eroarea de mai sus?

Sistemul de fișiere este în modul rw. Fișierele /etc/{passwd,shadow} au permisiunile corecte

Multumesc anticipat

Michael Hampton avatar
drapel cz
Cum rulezi PHP?
kbu avatar
drapel ng
kbu
PHP rulează cu php-fpm
drapel vn
Probabil că nu ar trebui să faci asta.
kbu avatar
drapel ng
kbu
Inteleg ce zici. Clientul avea nevoie de o soluție. Am găsit soluția și am avertizat despre problemele viitoare cu securitatea
kbu avatar
drapel ng
kbu
Și problema era exact acolo, pentru că strace a arătat că sistemul de fișiere este în modul doar citire
Puncte:1
drapel ng
kbu

Soluția a fost să comentezi ProtectSystem=plin în unitatea php-fpm.service:

# Montează directoarele /usr, /boot și /etc numai în citire pentru procesele invocate de această unitate.
#ProtectSystem=plin
Michael Hampton avatar
drapel cz
În schimb, puteți schimba acest lucru în `true`, ceea ce va permite scrierea în `/etc`, dar totuși interzice scrierea în celelalte directoare numite.
Puncte:0
drapel us

Browserul php rulează folosind www-data utilizator

Adăugați permisiuni pentru www-data a folosi sudo prin shell folosind visudo comanda și adaugă această linie

www-data ALL=(ALL:ALL) ALL

Sintaxa sa este

user hosts=comenzi (utilizatori:grupuri).
kbu avatar
drapel ng
kbu
scuze, am uitat să menționez aici: am dat deja privilegii sudo. Pentru testare am următoarea linie: nginx ALL=(ALL) NOPASSWD: ALL. Dar asta nu a ajutat.
drapel us
Accesul `sudo` ar trebui limitat doar la comenzile necesare.
Ajay Singh avatar
drapel us
Ați încercat același lucru cu www-data în loc de nginx?
kbu avatar
drapel ng
kbu
utilizatorul www-data nu există
Ajay Singh avatar
drapel us
Bine. Ce sistem de operare folosești? Ai verificat dacă pe browser returnează nginx?
kbu avatar
drapel ng
kbu
OpenSUSE 15.2. Da, exec(...whoami...ls....ping...cat...) lucrează totul

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.