Linux-Benutzerkennwort kann nicht mit PHP-Skript geändert werden

Linux-Benutzerkennwort kann nicht mit PHP-Skript geändert werden

Ich habe das folgende PHP-Skript zum Ändern des Passworts: <?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ini_set('display_error', true);

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

Dieses Skript zeigt einen Fehler im Browser an:

pam_chauthtok() failed, error: [1] => Authentication token lock busy [2] => chpasswd

Aber der Befehl

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

funktioniert einwandfrei. Kann mir bitte jemand einen Tipp geben, warum ich im Browser den oben genannten Fehler erhalte?

Das Dateisystem ist im RW-Modus. Die Dateien /etc/{passwd,shadow} haben die richtigen Berechtigungen.

Vielen Dank im Voraus

Antwort1

ProtectSystem=fullDie Lösung bestand darin , in der Unit php-fpm.service Folgendes auszukommentieren :

# Mounts the /usr, /boot, and /etc directories read-only for processes invoked by this unit.
#ProtectSystem=full

Antwort2

Browser PHP läuft mit www-dataBenutzer

Fügen Sie Berechtigungen für www-datadie Verwendung sudoüber die Shell mit visudodem Befehl hinzu und hängen Sie diese Zeile an

www-data   ALL=(ALL:ALL) ALL

Die Syntax lautet

user    hosts=(users:groups)    commands

verwandte Informationen