Ich möchte ein PHP-Skript erstellen, um einen Shell-Befehl auszuführen und seine Ausgabe zurückzugeben. Der Server benötigt einen privaten Schlüssel. Als ich mich entschieden habe, das auszuprobieren, habe ich Folgendes erstellt:
%Vor% Das hat gut funktioniert. Aber als ich $command
auf den Befehl änderte, den ich wirklich ausführen wollte:
es gab mir diese Ausgabe:
%Vor% Ich schätze, ich muss sudo
verwenden. Natürlich muss dazu die pem-Datei irgendwo auf dem Server abgelegt werden. Wenn ich das tue, was genau sollte $command
sein? Sollte ich shell_exec()
, exec()
, system()
oder etwas anderes verwenden?
Es spielt keine Rolle, welche PHP-Funktion Sie zum Starten des Skripts verwenden. Was fehlt, ist die Autorisierung Ihres Benutzerkontos.
Entweder sudo verwenden (den Webserver-Benutzer vorkonfigurieren, um den genauen Befehl ohne Passwort über visudo
auszuführen, und den Befehl mit sudo
voranstellen) oder ein setuid-Skript einrichten, das den Befehl auf sich selbst ausführt.
Was Sie wirklich tun müssen, ist, Ihren Webserver so einzustellen, dass er als ein bestimmter Benutzer (außer zum Beispiel "niemand") ausgeführt wird, oder diesem Benutzer Berechtigungen für das gibt, was Sie ausführen wollen.
Siehe auch: PHP shell_exec () und sudo: muss sei setuid root
Tags und Links php shell-exec