Sudo -u und PHP
Sudo -u und PHP
Hi an alle.
Also ich hab mich jetzt schon dämlich gesucht und gefunden.
Nu versteh ich den Wald vor lauter Bäume nich mehr
Also ich möchte ein script das dem benutzer test gehört von meiner Webseite aus ausführen.
Nun hab ich gelsesen das es mit sudo gehen soll.
Folgendes hab ich jetzt gemacht
Als Root visudo
und www-data ALL(test) NOPASSWD: /var/www/lfs/script.sh (die Namen Test und Script.sh wurden geändert die heissen im Original anderst)
So nun habe ich das Script
#!/bin/bash
cd /var/www/lfs/SlalomServer
screen -d -m -S meinserver wine slalom.exe
Rechte sind -rwxrwxrwx
Nun zum PHP script
<?php
error_reporting();
$output = shell_exec("sudo -u test /var/www/lfs/script.sh");
echo "<pre>$output</pre>";
?>
Es tut sich nix keine anzeige oder sonst was.
Laut script soll ein Screen erstellt werden
Von der Shell mit benutzer test geht es einwandfrei???
Kann mir da jemand helfen?
Würde mich sehr freuen
Danke im voraus
Also ich hab mich jetzt schon dämlich gesucht und gefunden.
Nu versteh ich den Wald vor lauter Bäume nich mehr
Also ich möchte ein script das dem benutzer test gehört von meiner Webseite aus ausführen.
Nun hab ich gelsesen das es mit sudo gehen soll.
Folgendes hab ich jetzt gemacht
Als Root visudo
und www-data ALL(test) NOPASSWD: /var/www/lfs/script.sh (die Namen Test und Script.sh wurden geändert die heissen im Original anderst)
So nun habe ich das Script
#!/bin/bash
cd /var/www/lfs/SlalomServer
screen -d -m -S meinserver wine slalom.exe
Rechte sind -rwxrwxrwx
Nun zum PHP script
<?php
error_reporting();
$output = shell_exec("sudo -u test /var/www/lfs/script.sh");
echo "<pre>$output</pre>";
?>
Es tut sich nix keine anzeige oder sonst was.
Laut script soll ein Screen erstellt werden
Von der Shell mit benutzer test geht es einwandfrei???
Kann mir da jemand helfen?
Würde mich sehr freuen
Danke im voraus
- MustrumRidcully
- Beiträge: 124
- Registriert: 16.06.2005 04:11:24
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: berlin
Re: Sudo -u und PHP
das sieht nach einer misconfiguration des webservers aus. was sagt das log?
Volk ist Opium für eine Religion.
Re: Sudo -u und PHP
Ich kenne mich mit debian noch nicht ganz so gut aus.
Wo finde ich den log? wie heisst der?
Wo finde ich den log? wie heisst der?
Re: Sudo -u und PHP
Ps als www-data kann ich z.b ls -l ausführen
Also hat nix mit Safe mode oder so
??????????????????????
Also hat nix mit Safe mode oder so
??????????????????????
- MustrumRidcully
- Beiträge: 124
- Registriert: 16.06.2005 04:11:24
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: berlin
Re: Sudo -u und PHP
logs findest du auf /var/log und unterverzeichnissen.
Volk ist Opium für eine Religion.
Re: Sudo -u und PHP
Ja aber welchen log genau soll ich kontrollieren??
Sorry hab von sowas keine ahnung.
Sorry hab von sowas keine ahnung.
- MustrumRidcully
- Beiträge: 124
- Registriert: 16.06.2005 04:11:24
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: berlin
Re: Sudo -u und PHP
ich nehme an, dein webserver ist der apache? dann findest du die logs auf /var/log/apache2/. im access_log (oder access.log, je nach config) findest du infos über die abgerufenen dokumente und die http-returncodes des servers (200 OK, 301 redirect permanently, 403 forbidden, 404 not found, 500 internal server error, etc.). fehler werden im error_log (oder error.log) genauer dokumentiert. dort findest du dann auch fehlermeldungen des OS. du kannst die menge an output im error log selbst bestimmen, indem du (serverweit oder pro virtual host) das ErrorLevel bestimmst.
genaues findest du hier, u.a. auch docs zur konfiguration des webservers für php. (suchtipp: für perl lautet die zeile, die apache zur ausführung von skripten veranlasst: Options +ExecCGI. mit php kenne ich mich nicht aus, aber das wirst du auf httpd.apache.org alles finden.
edit: es gibt hier im forum eine eigene kategorie für serverdienste. vermutlich bist du nicht der erste mit dem prob, und die lösung steht bereits irgendwo dort.
genaues findest du hier, u.a. auch docs zur konfiguration des webservers für php. (suchtipp: für perl lautet die zeile, die apache zur ausführung von skripten veranlasst: Options +ExecCGI. mit php kenne ich mich nicht aus, aber das wirst du auf httpd.apache.org alles finden.
edit: es gibt hier im forum eine eigene kategorie für serverdienste. vermutlich bist du nicht der erste mit dem prob, und die lösung steht bereits irgendwo dort.
Volk ist Opium für eine Religion.
Re: Sudo -u und PHP
So also in der acceslog von apache2 steht das meine phptest.php mit 0200
78.35.173.104 - - [07/Jun/2011:22:11:55 +0200] "GET /phptest/phptest.php HTTP/1.1" 200 28 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
Also wenn ich als benutzer www-data ein php exec z.b ls mache dann bekomme ich das direcktory gelistet!!!
Sollte also dann doch nicht an apache und php liegen??
Ich denke doch mal an ein rechte problem seitens sudo oder ein fehler den ich dabei mache????????
78.35.173.104 - - [07/Jun/2011:22:11:55 +0200] "GET /phptest/phptest.php HTTP/1.1" 200 28 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
Also wenn ich als benutzer www-data ein php exec z.b ls mache dann bekomme ich das direcktory gelistet!!!
Sollte also dann doch nicht an apache und php liegen??
Ich denke doch mal an ein rechte problem seitens sudo oder ein fehler den ich dabei mache????????
Re: Sudo -u und PHP
mache ich ein
$output = shell_exec("ls");
echo "<pre>$output</pre>";
So listet er mir den Ordner wo meine ausgeführte php ist
$output = shell_exec("ls");
echo "<pre>$output</pre>";
So listet er mir den Ordner wo meine ausgeführte php ist
- MustrumRidcully
- Beiträge: 124
- Registriert: 16.06.2005 04:11:24
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: berlin
Re: Sudo -u und PHP
schau mal dort: http://de.selfhtml.org/servercgi/server/htaccess.htm außerdem scheint mir das schnipselkleinz hat geschrieben:mache ich ein
$output = shell_exec("ls");
echo "<pre>$output</pre>";
So listet er mir den Ordner wo meine ausgeführte php ist
aus deiner sudoers malformed. imho müsste das so lauten:www-data ALL(test)
Code: Alles auswählen
www-data hostname = NOPASSWD: ...
dein problem scheint mir wirklich ein rtfm-prob zu sein.
Volk ist Opium für eine Religion.
Re: Sudo -u und PHP
Also
www-data ALL(test) NOPASSWD: /var/www/lfs/script.sh (die Namen Test und Script.sh wurden geändert die heissen im Original anderst)
user www-data hostname(All) User (test) NOPASSWD: /... script das erlaubt werden soll
rtfm = read the f.. manual????
Thanks
www-data ALL(test) NOPASSWD: /var/www/lfs/script.sh (die Namen Test und Script.sh wurden geändert die heissen im Original anderst)
user www-data hostname(All) User (test) NOPASSWD: /... script das erlaubt werden soll
rtfm = read the f.. manual????
Thanks
Re: Sudo -u und PHP
So also hier jetzt mal mein sudoers eintrag
www-data ALL = NOPASSWD: /var/www/lfs/test.sh
Hier mein PHP script
$output = shell_exec("/usr/bin/sudo -u root /var/www/lfs/test.sh");
echo "<pre>$output</pre>";
$output= shell_exec("sudo -u root screen -ls");
echo $output;
hier mein test.sh script
#!/bin/bash
cd /var/www/lfs/SlalomServer
screen -d -m -S meinserver wine slalom.exe
Also als benutzer root geht es wunderbar
So wie hier wird ein screen gestartet und der lfs SlalomServer ist erreichbar
Aber wie mach ich das wenn ich als benutzer lfs das gleiche haben möchte??
Also benutzer www-data zu lfs werden und dann das script ausführen??????
www-data ALL = NOPASSWD: /var/www/lfs/test.sh
Hier mein PHP script
$output = shell_exec("/usr/bin/sudo -u root /var/www/lfs/test.sh");
echo "<pre>$output</pre>";
$output= shell_exec("sudo -u root screen -ls");
echo $output;
hier mein test.sh script
#!/bin/bash
cd /var/www/lfs/SlalomServer
screen -d -m -S meinserver wine slalom.exe
Also als benutzer root geht es wunderbar
So wie hier wird ein screen gestartet und der lfs SlalomServer ist erreichbar
Aber wie mach ich das wenn ich als benutzer lfs das gleiche haben möchte??
Also benutzer www-data zu lfs werden und dann das script ausführen??????
Re: Sudo -u und PHP
Hi an alle
Also das hier funktioniert
error_reporting();
$airio= shell_exec("sudo -u lfs screen -list | grep Airio | cut -f1 -d'.' | sed 's/\W//g'");
$demo= shell_exec("sudo -u lfs screen -list | grep DemoServer | cut -f1 -d'.' | sed 's/\W//g'");
$s2= shell_exec("sudo -u lfs screen -list | grep S2Server | cut -f1 -d'.' | sed 's/\W//g'");
$s2z34= shell_exec("sudo -u lfs screen -list | grep S2ServerZ34 | cut -f1 -d'.' | sed 's/\W//g'");
$wm= shell_exec("sudo -u lfs screen -list | grep WMServer | cut -f1 -d'.' | sed 's/\W//g'");
echo "<br>";
echo "PID von Airio";
echo $airio;
echo "<br>";
echo "PID von DemoServer";
echo $demo;
echo "<br>";
echo "PID von S2Server";
echo $s2;
echo "<br>";
echo "PID von S2ServerZ34";
echo $s2z34;
echo "<br>";
echo "PID von WMServer";
echo $wm;
echo "<br>";
$output= shell_exec("sudo -u lfs screen -ls");
echo "<pre>$output</pre>";
$output= shell_exec("sudo -u lfs kill prozessid");//Funktioniert
echo "<pre>$output</pre>";
Aber das starten eines LFS Servers nicht.
Von der Linux Shell geht das Startscript
$output= shell_exec("sudo -u lfs /var/www/lfs/test.sh");
echo "<pre>$output</pre>";
Von der PHP seite aus nicht.
Habe mich mal rangetastet.
Lasse ich das wine slalom.exe //siehe oben
weg dann startet der Screen einwandfrei
Und wird mir auch in screen -ls angezeigt
Als user root kann ich auch den Server komplett starten aber leider nicht als User lfs???
Hat das was mit wine zu tun???
die slalom.exe hat 777 die verzeichnisse dort hin auch???
ich weiß nicht wie ich andie fehlermeldung kommen kann?
Am besten im startscript loggen aber wie??? so ??
#!/bin/bash
cd /var/www/lfs/SlalomServer
screen -d -m -S SlalomServer wine slalom.exe >> /var/www/lfs/slalomphp.log
also das logfile wird erstellt aber es steht nix dort?
Also das hier funktioniert
error_reporting();
$airio= shell_exec("sudo -u lfs screen -list | grep Airio | cut -f1 -d'.' | sed 's/\W//g'");
$demo= shell_exec("sudo -u lfs screen -list | grep DemoServer | cut -f1 -d'.' | sed 's/\W//g'");
$s2= shell_exec("sudo -u lfs screen -list | grep S2Server | cut -f1 -d'.' | sed 's/\W//g'");
$s2z34= shell_exec("sudo -u lfs screen -list | grep S2ServerZ34 | cut -f1 -d'.' | sed 's/\W//g'");
$wm= shell_exec("sudo -u lfs screen -list | grep WMServer | cut -f1 -d'.' | sed 's/\W//g'");
echo "<br>";
echo "PID von Airio";
echo $airio;
echo "<br>";
echo "PID von DemoServer";
echo $demo;
echo "<br>";
echo "PID von S2Server";
echo $s2;
echo "<br>";
echo "PID von S2ServerZ34";
echo $s2z34;
echo "<br>";
echo "PID von WMServer";
echo $wm;
echo "<br>";
$output= shell_exec("sudo -u lfs screen -ls");
echo "<pre>$output</pre>";
$output= shell_exec("sudo -u lfs kill prozessid");//Funktioniert
echo "<pre>$output</pre>";
Aber das starten eines LFS Servers nicht.
Von der Linux Shell geht das Startscript
$output= shell_exec("sudo -u lfs /var/www/lfs/test.sh");
echo "<pre>$output</pre>";
Von der PHP seite aus nicht.
Habe mich mal rangetastet.
Lasse ich das wine slalom.exe //siehe oben
weg dann startet der Screen einwandfrei
Und wird mir auch in screen -ls angezeigt
Als user root kann ich auch den Server komplett starten aber leider nicht als User lfs???
Hat das was mit wine zu tun???
die slalom.exe hat 777 die verzeichnisse dort hin auch???
ich weiß nicht wie ich andie fehlermeldung kommen kann?
Am besten im startscript loggen aber wie??? so ??
#!/bin/bash
cd /var/www/lfs/SlalomServer
screen -d -m -S SlalomServer wine slalom.exe >> /var/www/lfs/slalomphp.log
also das logfile wird erstellt aber es steht nix dort?
Re: Sudo -u und PHP
Also falls es einen interessiert
Das klappt alles soweit
Z.b ich kann eine bash starten
cd /var/www/lfs/Airio
screen -d -m -S Airio mono airio.exe
Das klappt alles wunder bar
Auch das killen der Server mittels Pid klappt super
Auch einen befahl an einen Screen senden z.b bei Airio einfach ein r für reinit
geht so:
$output= shell_exec("sudo -u benutzername screen -S Airio -X eval 'stuff r\015' ");
echo "<pre>$output</pre>";
Nur wenn ich wine benutzen möchte geht das nicht??
Ich glaube das hat was mit der wine.cfg zu tun.
Denn wenn ich ein programm starte wird irgendwas in ein cfg verzsichniss geschrieben .Stand zumindestens beim ersten start was von da
Kennt sich denn keiner damit aus???
Das klappt alles soweit
Z.b ich kann eine bash starten
cd /var/www/lfs/Airio
screen -d -m -S Airio mono airio.exe
Das klappt alles wunder bar
Auch das killen der Server mittels Pid klappt super
Auch einen befahl an einen Screen senden z.b bei Airio einfach ein r für reinit
geht so:
$output= shell_exec("sudo -u benutzername screen -S Airio -X eval 'stuff r\015' ");
echo "<pre>$output</pre>";
Nur wenn ich wine benutzen möchte geht das nicht??
Ich glaube das hat was mit der wine.cfg zu tun.
Denn wenn ich ein programm starte wird irgendwas in ein cfg verzsichniss geschrieben .Stand zumindestens beim ersten start was von da
Kennt sich denn keiner damit aus???