
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=full
Die 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-data
Benutzer
Fügen Sie Berechtigungen für www-data
die Verwendung sudo
über die Shell mit visudo
dem Befehl hinzu und hängen Sie diese Zeile an
www-data ALL=(ALL:ALL) ALL
Die Syntax lautet
user hosts=(users:groups) commands