Feuerfux
Anmeldungsdatum: 26. Februar 2009
Beiträge: Zähle...
|
Hallo Zusammen Ich probiere seit nun schon bald einer Ewigkeit, aus einem PHP script ein Shellscript auszuführen.
Das Problem kann weder beim Shellscript liegen (lokal ausgeführt mit dem benutzer unter welchem auch der apache läuft geht es), noch an den Benutzerrechten liegen. (eben, geht ja lokal) Hier ist mein Abschnitt aus dem PHP-Script: $scripttoex = "sudo /var/www/script.sh $1 $2 $3 $4";
echo $scripttoex;
$shellex = shell_exec($script);
echo $shellex; Das "echo $script;" zeigt mir an, was übertragen wird (–> sieht eigentlich richtig aus... wenn ich genau dass dann ich meine shell kopiere, geht es auch)
aber es wird einfach NIE die Shell direkt aus dem PHP-Script aus ausgeführt. WIIESOOOOO? mit exec() gings übrigens auch nicht.
Hat jemand eine Idee oder weiss mehr als ich? Wäre sehr froh! DANKE im voraus!
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17599
Wohnort: Berlin
|
geraten: Probier mal /usr/bin/sudo statt sudo.
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
sorry "user unknown", brachte keinen Erfolg.
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
mit der Funktion system(); gings auch nicht... ☹
egal ob /usr/bin/sudo oder eifach nur mit sudo. Das Ausführen von "normalen" Kommandos wie z.b. shell_exec("ls -l /home"); geht problemlos.
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
So, mittlerweilen habe ich die Geduld verloren für dieses Ding.
Ich löse es über ein weiteres script, in welchem ich dann das eigentliche script als root aufrufe. (man kann kein shell_exec() machen mit sudo und variabeln aus PHP) Kann mit jemand sagen, wie das gehen würde? :-S ☹ 😬
|
tischbein
Anmeldungsdatum: 21. Juli 2008
Beiträge: 404
|
Feuerfux schrieb: So, mittlerweilen habe ich die Geduld verloren für dieses Ding.
Ich löse es über ein weiteres script, in welchem ich dann das eigentliche script als root aufrufe. (man kann kein shell_exec() machen mit sudo und variabeln aus PHP) Kann mit jemand sagen, wie das gehen würde? :-S ☹ 😬
Einfach gesagt: Du kannst schon aus rein technischer sicht kein "sudo" in PHP verwenden, da das skript ja jedesmal das sudo passwort eingeben müsste. aber du könntest mit PHP-SSH2 sicherlich eine art brücke bauen. Wirklich empfehlen würde ich das aber nicht...
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
doch kann ich. /etc/sudoers hilft das weiter...
ich habe mir da für diesen benutzer, der die scripts ausführt rootrechte ohne passworteingabe gegeben. das problem ist eher, dass mein bashscript jedesmal stehen bleibt, wenn da ein "sudo" drinn ist. Dies aber nur, wenn die variabeln vom PHP kommen. lokal funktioniert alles sauber. die von php kommenden variabeln kann es mir sogar mit echo aus dem shellscript ausgeben. ist da etwas bekannt? ich verstehe die (php)welt nicht mehr...☹
|
auchfrager
Anmeldungsdatum: 18. Juli 2007
Beiträge: Zähle...
Wohnort: Euskirchen
|
Was passiert denn, wenn Du die Parameter "$1 $2 $3 $4" fürs Erproben erst einmal weg läßt ? Wie führst Du das PHP Skript denn aus ? Mit command line interpreter oder Webseite ?
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
egal ob ich $shell = shell_exec("sudo /var/www/shell/mkphp.sh");
echo $shell; oder $shell = shell_exec("/var/www/shell/mkphp.sh");
echo $shell; Es passiert nichts! und eigentlich sollte er mir ja die ausgabe des Scripts ausgeben...
Aber das script wird auch nur bis zum 1. sudo ausgeführt, dann stoppt es. Hier mal das Bash-Script:
#!/bin/bash
echo $1;
echo $2;
echo $3;
echo $4;
sudo addgroup $1 --force-badname
sudo usermod -a -G $1 user1
sudo usermod -a -G $1 user2
mkdir -m 775 /share/$1
sudo useradd -d /share/$1 -g $1 -s /bin/false -p $3 $2
sudo usermod -a -G $1 $2
sudo usermod -a -G ftp $2 Das Script wird von einer website (nur interne, nicht öffentl.) ausgeführt.
habe aber auch schon probiert von der website aus ein script zu starten, welches dann dieses script startet, blib aber dann ebenfalls bei "sudo /pfad/zum/script.sh" hängen.
Ich weiss wirklich nicht mehr weiter...
|
tischbein
Anmeldungsdatum: 21. Juli 2008
Beiträge: 404
|
Wie gesagt, empfehlenswert wäre eine brücke mit PHP-SSH2, oder direkt ein PAM-modul, wo du dann weder auf sudo, noch auf SSH angewiesen wärst.
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
Ja aber da gibt es 2 Probleme:
1. Ich habe von diesen Dingen noch nie was gehört und nicht mehr alle Zeit der Welt für dieses Ding.
2. Das muss doch gehen!? ich meine es gibt den Befehl shell_exec() (und exec() usw.) und es gibt die möglichkeit shellbefehle aus PHP auszuführen (was ja auch bei mir geht). Also warum sollte es den nicht möglich sein, ein Script vom PHP her auszuführen? Ist ja im Grunde genommen auch nur ein einfacher Befehl, der danach in der bash weitere, ganz einfache befehle ausführt. Wieso stoppt dieses script, sobald ein "sudo" auftaucht? es ist ja nicht so, dasses nicht ausgeführt werden würde oderso... es ist nur dieses "sudo"! (nein, es wird würklich keine Passworteingabe verlangt: <userunterwelchemderapacheläuft> ALL=(ALL) NOPASSWD: ALL –>Diese einstellung wird dann schon wieder geändert bzw. optimiert, wenn alles läuft.
|
tischbein
Anmeldungsdatum: 21. Juli 2008
Beiträge: 404
|
Ich hab was gefunden, was dir unter umständen weiterhelfen könnte: Klick mich, ich bin ein Link!
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
In wie fern denkst du, könnte mir das weiter helfen? so wie ich das sehe, übergibt dieses script auch keine Variabeln vom PHP her...
ich kann auch von PHP aus irgendwelche commands mit sudo ausführen, das ist kein problem. Ich denke wirklich, das Problem liegt irgendwo bei der variabelübergabe. bzw. bei z.b. "sudo ls -l" (also irgend einem kommando im shellscript das mit sodu ausgeführt werden muss) im Script. Denkst du, dass Shellscript "merkt" dass es von einer PHP Webseite aufgerufen wurde, bzw., dass seine variablen von dort kommen? Danke für deine Bemühungen. (muss so zwischendurch mal erwähnt werden. 😉)
|
tischbein
Anmeldungsdatum: 21. Juli 2008
Beiträge: 404
|
Feuerfux schrieb: In wie fern denkst du, könnte mir das weiter helfen?
Ja, absolut. Lies es bitte nochmal durch.
so wie ich das sehe, übergibt dieses script auch keine Variabeln vom PHP her...
ich kann auch von PHP aus irgendwelche commands mit sudo ausführen, das ist kein problem.
Doch, tut es. wie gesagt, Lies es bitte einfach nochmal sorgfältiger durch. Ich denke wirklich, das Problem liegt irgendwo bei der variabelübergabe. bzw. bei z.b. "sudo ls -l" (also irgend einem kommando im shellscript das mit sodu ausgeführt werden muss) im Script. Denkst du, dass Shellscript "merkt" dass es von einer PHP Webseite aufgerufen wurde, bzw., dass seine variablen von dort kommen?
Nein. Danke für deine Bemühungen. (muss so zwischendurch mal erwähnt werden. 😉)
Gern geschehen 😉
|
Feuerfux
(Themenstarter)
Anmeldungsdatum: 26. Februar 2009
Beiträge: 20
|
So langsam aber sicher beginne ich zu verstehen. (zumindest die Logik, was der Code genau macht geht leider (noch) über meine Fähigkeiten) Ich rufe also aus meinem PHP-Script mit passthru oder exec und den angegebenen Parametern (Habe ich das richtig verstanden, dass in dem beispiel auf dieser seite einfach "Hello world" über das server.php file ausgegeben wird?) meine server.php Datei auf. In dieser server.php kann ich nun (ohne sudo usw.) mein shell_exec(pfad/zum/script.sh $1 $2 $3 $4); usw. ausführen...!?
|