Wie führe ich einen Shell-Befehl aus einem PHP-Skript aus?

8

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:

%Vor%

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?

    
Kenneth Vogt 13.07.2011, 21:25
quelle

2 Antworten

4

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.

    
phihag 13.07.2011, 21:42
quelle
3

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

    
Brad 13.07.2011 21:27
quelle

Tags und Links