Sudo -u und PHP

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Sudo -u und PHP

Beitrag von kleinz » 04.06.2011 01:34:39

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

Benutzeravatar
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

Beitrag von MustrumRidcully » 04.06.2011 15:13:05

das sieht nach einer misconfiguration des webservers aus. was sagt das log?
Volk ist Opium für eine Religion.

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 04.06.2011 19:39:13

Ich kenne mich mit debian noch nicht ganz so gut aus.
Wo finde ich den log? wie heisst der?

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 04.06.2011 21:11:37

Ps als www-data kann ich z.b ls -l ausführen
Also hat nix mit Safe mode oder so
??????????????????????

Benutzeravatar
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

Beitrag von MustrumRidcully » 05.06.2011 05:01:17

logs findest du auf /var/log und unterverzeichnissen.
Volk ist Opium für eine Religion.

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 05.06.2011 13:48:19

Ja aber welchen log genau soll ich kontrollieren??
Sorry hab von sowas keine ahnung.

Benutzeravatar
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

Beitrag von MustrumRidcully » 06.06.2011 04:45:23

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.
Volk ist Opium für eine Religion.

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 07.06.2011 22:17:16

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????????

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 07.06.2011 22:20:32

mache ich ein
$output = shell_exec("ls");
echo "<pre>$output</pre>";
So listet er mir den Ordner wo meine ausgeführte php ist

Benutzeravatar
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

Beitrag von MustrumRidcully » 08.06.2011 02:53:04

kleinz 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
schau mal dort: http://de.selfhtml.org/servercgi/server/htaccess.htm außerdem scheint mir das schnipsel
www-data ALL(test)
aus deiner sudoers malformed. imho müsste das so lauten:

Code: Alles auswählen

www-data    hostname = NOPASSWD: ... 
aber da mag ich mich täuschen. bei mir funktioniert sudo jedenfalls mit dieser syntax.
dein problem scheint mir wirklich ein rtfm-prob zu sein.
Volk ist Opium für eine Religion.

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 08.06.2011 17:18:52

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

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 08.06.2011 22:28:27

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??????

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 09.06.2011 22:38:16

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?

kleinz
Beiträge: 11
Registriert: 01.06.2011 21:56:50

Re: Sudo -u und PHP

Beitrag von kleinz » 13.06.2011 01:49:45

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???

Antworten