Page 1 of 1
.sh Datei per PHP als root starten
Posted: 2003-09-29 22:24
by malibuu
hallo ich habe ein php script welches eine shell datei aufruft ! Die Shell datei startet wiederum einen Prozess welcher leider immer mit dem User "wwwrun" gestartet wird. Somit ist es leider nicht möglich das ich von außen auf den Gameserver zugreifen kann. Hat jemand eine Möglichkeit ???
thx
chris
Re: .sh Datei per PHP als root starten
Posted: 2003-09-29 22:57
by boozedǃ
Deine Angaben sind etwas ungenau.
Um welches Game geht es? Die Server aller mir bekannten Games laufen auch als normaler Benutzer. Keiner braucht root Rechte.
Wenn du dein Script unbedingt als root ausführen willst, was ich dir nicht empfehlen kann, kannst du doch su in deinem PHP Skript benutzen.
Am besten postest du dein Skript mal. Dann können wir dir auch besser folgen und dein Problem verstehen.
Dein Shellskript funktioniert also, wenn du es per Hand aufrufst?
Hallo
Posted: 2003-09-29 23:06
by malibuu
Hallo das Game ist dabei egal, es ist das Script zum starten|restarten|stopen script ! Aber ich kann es mal posten:
Shell Datei:
Code: Select all
#! /bin/sh
#
# Start the Counter-Strike dedicated server.
#
# AUTHORS :
#
# Julien Escario ( pandemik@azilog.net )
# &
# Cedric Rochat ( crochat@younics.org )
#
# ===========================================
#
# What you need:
#
# Linux :)
# awk
# the hlds_l & cstrike-files
#
# How to use:
#
# Edit the DIR-Var to fit your system (just contains the path to the dir that contains hlds_run)
# Edit the PARAMS-Var to fit your needs
# - standard is startup as LAN-server
#
# When this is done, copy the file to /etc/rc.d/init.d (or whereever your system stores the
# scripts for starting the services
# Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
# ln -s /etc/rc.d/init.d/hlds /etc/rc.d/rc3.d/S90hlds
# ln -s /etc/rc.d/init.d/hlds /etc/rc.d/rc3.d/K50hlds
#
# Or use it manualy like:
# /etc/rc.d/init.d/hlds start
# /etc/rc.d/init.d/hlds stop
#
# How to see the server-console:
#
# Just type in: screen -r cstrike
# More info about screen can be found by typing "man screen" or using this nice link
# http://server.counter-strike.net/help/linuxscreen.html
#
# DOC by jwm (jwm@counter-strike.de)
clear
DIR=/usr/games/cstrike/hlds_l
DAEMON=$DIR/hlds_run
# Internet-server:
PARAMS="-game cstrike +map de_dust +maxplayers 12"
NAME=cstrike
DESC="counterstrike_server_16"
case "$1" in
start)
echo "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
;;
stop)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;
restart)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
echo -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo " ... done."
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
Hier die PHP Datei:
Code: Select all
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if (ini_get('register_globals') != '1') {
/* We'll register the variables as globals: */
if (!empty($HTTP_POST_VARS))
extract($HTTP_POST_VARS);
if (!empty($HTTP_GET_VARS))
extract($HTTP_GET_VARS);
if (!empty($HTTP_SERVER_VARS))
extract($HTTP_SERVER_VARS);
}
/* First we check if there has been asked for a working directory. */
if (!empty($work_dir)) {
/* A workdir has been asked for */
if (!empty($command)) {
if (ereg('^[[:blank:]]*cd[[:blank:]]+([^;]+)$', $command, $regs)) {
/* We try and match a cd command. */
if ($regs[1][0] == '/') {
$new_dir = $regs[1]; // 'cd /something/...'
} else {
$new_dir = $work_dir . '/' . $regs[1]; // 'cd somedir/...'
}
if (file_exists($new_dir) && is_dir($new_dir)) {
$work_dir = $new_dir;
}
unset($command);
}
}
}
if (file_exists($work_dir) && is_dir($work_dir)) {
/* We change directory to that dir: */
chdir($work_dir);
}
/* We now update $work_dir to avoid things like '/foo/../bar': */
$work_dir = exec('pwd');
?>
<form name="myform" action="<?php echo $PHP_SELF ?>" method="post">
<input type="hidden" name="command" value="/home/www/web1/html/site/test/csserver.sh stop">
<input type="hidden" name="stderr" value="checked">
<input class=input name="submit_btn" type="submit" value="Server Stop"></p>
</form>
<form name="myform" action="<?php echo $PHP_SELF ?>" method="post">
<input type="hidden" name="command" value="/home/www/web1/html/site/test/csserver.sh start">
<input type="hidden" name="stderr" value="checked">
<input class=input name="submit_btn" type="submit" value="Server Start">
</p>
</form>
<textarea cols="50" rows="5" readonly>
<?php
if (!empty($command)) {
if ($stderr) {
$tmpfile = tempnam('/tmp', 'phpshell');
$command .= " 1> $tmpfile 2>&1; " .
"cat $tmpfile; rm $tmpfile";
} else if ($command == 'ls') {
/* ls looks much better with ' -F', IMHO. */
$command .= ' -F';
}
system($command);
}
?>
</textarea>
</body>
</html>
Er führt die shell datei anscheinend auch aus was ich per "top" kurzzeitig sehen kann. Aber der Server ist von außern nicht erreichbar !
Ich habe alle Dateien von HLDS auf CHMOD 777 gesetzt ! Und die .sh und php datei auch ! Wenn ich in der putty console die .sh datei aufrufe funktioniert es und der Server ist auch erreichbar !
Re: .sh Datei per PHP als root starten
Posted: 2003-09-29 23:10
by jtb
sudo?
sudo ?
Posted: 2003-09-29 23:46
by malibuu
sudo ?? was meinste du damit ?
Re: .sh Datei per PHP als root starten
Posted: 2003-09-30 02:42
by dodolin
Ich habe alle Dateien von HLDS auf CHMOD 777 gesetzt !
Du bist echt krass! Ich könnte wetten, dein Rechner ist einer der nächsten, die geknackt werden und entweder Spam verschicken oder Warez traden. Viel Spaß dann noch...
sudo?
Das will er nicht, glaub mir.
sudo ?? was meinste du damit ?
Eben drum.
Schonmal probiert?
lol
Posted: 2003-09-30 08:56
by malibuu
lol !! Ich möchte es ja nur testen !!! Also es wäre wirklich super wenn Ihr mir helfen könntet !
Re: .sh Datei per PHP als root starten
Posted: 2003-09-30 09:09
by captaincrunch
Ich möchte es ja nur testen !!!
1. Es gibt nichts, was so lange hält wie "Ã?bergangslösungen"
2. Ja, und auch die "bösen Jungs" werden daraufhin deinen Server "testen"
Also es wäre wirklich super wenn Ihr mir helfen könntet !
Dir wird hier geholfen, du willst es nur nicht wahr haben ...
hehe
Posted: 2003-09-30 09:13
by malibuu
hehe ich habe die dateien mittlerweile wieder auf CHMOD 644 gesetzt !
aber wäre echt fein wenn ihr mir sagen könntet wie ich meinen Server nun zum laufen bekomme per Webinterface:-) !
Also Root in der console läuft der Server
Per Webbrowser als wwwrun startet der Server anscheinend local, ist aber nicht erreichbar und setzt sich am Anfang auf Sleep !
Aber danke schonaml für die CHMOD 777 Aufmerksamkeit :-)
Re: .sh Datei per PHP als root starten
Posted: 2004-01-30 05:43
by blnsnoopy26
Hi
Ich habe so ein ähnliches Problem.
Ich wollte meinen Gamserver mal als einen anderen benutzer als wwwrun pder root starten, aber da kommt bei mir folgendes wenn ich folgendes eingebe:
web1@pxxxxx:~/sof2 > sudo -u web1 /home/www/web1/sof2/sof2.sh
Sorry, user web1 is not allowed to execute '/home/www/web1/sof2/sof2.sh' as web1 on pxxxxx.
Obwohl er in der sudoers stand geht das nicht.
Wenn man ihn per shell_exec startet ist es wohl immer
nur möglich ihn als wwwrun oder root zu starten. Eine andere Möglichkeit gibt es da nicht. Ich hatte auch sämtliche open_basedir für web1 aufgehoben oder documentroot verändert - all das bringte mir leider nix.
Also wenn man es via php und shell_exec auführen will die shdatei, dann geht es nur via
root oder wwwrun
Oder kennt da noch jemand eine andere lösung?
hatte auch schon eine su -l web1 /home/bla/bla/sof2-sh versucht aber auch das geht nicht.
Vielleicht kennt ja einer eine möglichkeit per shell_exec über webbrowser eine sshdatei aufzurufen die auch dann mit web1 gestartet wird.
Meine versuche waren alle vergebens.
Wäre nett, wenn einer eine Möglichkeit kennt.
Re: .sh Datei per PHP als root starten
Posted: 2004-01-30 13:02
by niklas_
Schonmal daran gedacht, dass der User web1 einfach - wie die Fehlermeldung es auch schon sagt - nicht die Rechte hat, die HLDS zu starten? chwon richtig gesetzt?
Re: .sh Datei per PHP als root starten
Posted: 2004-01-30 13:13
by blnsnoopy26
niklas_ wrote:Schonmal daran gedacht, dass der User web1 einfach - wie die Fehlermeldung es auch schon sagt - nicht die Rechte hat, die HLDS zu starten? chwon richtig gesetzt?
Bei mir ist es ja nicht der HLDS Server sondern ein anderer, aber egal, weil es das selbe handling ist.
Alle meine Dateien haben die rechte die sie benötigen,also quasi
web1:ftponly Und somit sollten normalaweise die rechte vorhanden sein, um das shellscript via shell_exec als web1 user auszuführen, aber das geht nicht - egal wie ich es drehe und wende. Ich rede davon es via phpscript im Webbrowser auszuführen - nicht via ssh konsole, weil da geht es ja.
Ich habe es sogar in die sudoers eingetragen, aber auch das half nix.
Also quasi so:
web1 ALL = NOPASSWD: /home/bla/bla/sof2.sh und damit dürfte web1 die vollen rechte haben, aber es geht dennoch nicht.
Und wie gesagt habe ich meinen ganzen sof2 ordner die rechte web1:ftponly gegeben.
Oder muss ich web1 in eine andere Gruppe einordnen, damit das geht?
Also wenn jemand da paar vorschläge hat, dann bitte postzen und ich kann es dann ausprobieren, denn ich habe bisher alles versucht was möglich ist.
Re: .sh Datei per PHP als root starten
Posted: 2004-01-31 17:55
by niklas_
Ich weiß nicht welche Rechte der Gruppe ftponly zugeschrieben sind; meine zugegeben mäßigen Englischkenntnisse vermueten, dass der User web1 nur FTP Login "machen darf"...
Evtl. mal web1 mit Confixx Shellzugriff erlaubt? (hört sich so nach COnfixx an...)
Re: .sh Datei per PHP als root starten
Posted: 2004-01-31 18:09
by blnsnoopy26
niklas_ wrote:Ich weiß nicht welche Rechte der Gruppe ftponly zugeschrieben sind; meine zugegeben mäßigen Englischkenntnisse vermueten, dass der User web1 nur FTP Login "machen darf"...
Evtl. mal web1 mit Confixx Shellzugriff erlaubt? (hört sich so nach COnfixx an...)
User web1 hat shellzugriff.
Ich kann mich mit web1 via ssh einloggen und da kann ich dann auch die shdatei normal als web1 user ausführen.
Nur wenn ich es via Webbrowser mache, dann wird es immer via wwwrun/root gestartet :(
Re: .sh Datei per PHP als root starten
Posted: 2004-01-31 19:27
by darkspirit
blnsnoopy26 wrote:Nur wenn ich es via Webbrowser mache, dann wird es immer via wwwrun/root gestartet :(
..was bei mod_php (was du wohl verwendest) immer der Fall ist. Alle PHP-Skripte werden mit den Rechten des Webservers ausgeführt. Dein Vorhaben ist mit PHP per CGI und suexec realisierbar, schau dich danach mal im Forum bzw. allgemein im Web um.
Re: .sh Datei per PHP als root starten
Posted: 2004-01-31 20:12
by blnsnoopy26
DarkSpirit wrote:blnsnoopy26 wrote:Nur wenn ich es via Webbrowser mache, dann wird es immer via wwwrun/root gestartet :(
..was bei mod_php (was du wohl verwendest) immer der Fall ist. Alle PHP-Skripte werden mit den Rechten des Webservers ausgeführt. Dein Vorhaben ist mit PHP per CGI und suexec realisierbar, schau dich danach mal im Forum bzw. allgemein im Web um.
Ja werde ich mich mal informieren.
Aber da stellt sich wieder eine andere frage und zwar die frage der Sicherheit - wenn ich jetzt php via CGI mache.
Sicherlich ist sudo auch nicht 100% perfekt, aber im Moment das einzigste was bei mir geht,, daher meine frage wie es mit der Sicherheit aussieht, ob dadurch keine grossen Sicherheitslöcher entstehen oder ist php als CGI sicherer als allgemein mod_php?
Bevor ich da jetzt rumcompile möchte ich mich da ja erst einmal informieren :)
Hoffe auf eine gute und ausführliche Auskunft :)
Re: .sh Datei per PHP als root starten
Posted: 2004-01-31 22:36
by r00ty
also viel rumcompilieren musst du gar nicht
schau dir mal das debianhowto zu suPhp an
das hab ich auf meiner Suse Kiste gemacht (etwas angepasst natürlich) und fahre damit gut....
Re: .sh Datei per PHP als root starten
Posted: 2004-01-31 23:18
by blnsnoopy26
r00ty wrote:also viel rumcompilieren musst du gar nicht
schau dir mal das debianhowto zu suPhp an
das hab ich auf meiner Suse Kiste gemacht (etwas angepasst natürlich) und fahre damit gut....
Also wenn man jetzt das PHP als mod CGI laufen hat dann kann man sich das sudo sparen und ist es dann auch sicherer als mit sudo oder bliebe es gleich?
Dann zu dem Howto habe ich hier was gefunden:
http://www.rootforum.org/faq/index.php? ... 29&lang=de
Ziehmlich weit unten schauen! Wollte es nach dem machen,aber weiss nicht ob ich es nachträglich machen kann. Habe heute auch php 4.3.4 installiert und die neuste mysql version drauf.
Oder gibs noch ein anderes howto in deutsch wo einem beschrieben wird, wie man es nachträglich machen kann, ohne grosse eingriffe?
Hab auch grad mal ins debian howto gesehn (
http://www.debianhowto.de/howtos/de/sup ... ation.html) wo ich festgestellt habe das das meiste sicher für debian zugeschnitten ist - denke ich mal und ich nutze ja suse 7.2.
Oder kann ich die Anleitung dort komplett für mein suse nutzen?
denn das hier kann ich z.b nicht ausführen:
idefix:~# apt-get install php4-cgi
idefix:~# apt-get install apache-dev
Hoffe bekomme da noch paar tips hierzu.
Re: .sh Datei per PHP als root starten
Posted: 2004-02-01 09:22
by blnsnoopy26
Hi,
Also ich habe es mal nach dem Debian Howto gemacht, was soweit mit der Installation gefunzt hat, aber wenn ich die vhosts bestimme die mit mod_supphp laufen sollen, dann bekomme ich da nur ein Internal Server Error.
Also funktioniert das ganze nicht so wie es da steht. :( :(
Die vhosts sollen mit suphp laufen:
Folgende einträge habe ich in der httpd.conf vorgenommen bzw, wurden schon eingetragen beim installieren von mod_su
Code: Select all
<VirtualHost 217.xxx.xxx.xxx:80>
SSLEngine off
ServerName confixx.pxxxxxx.pureserver.info
DocumentRoot /home/confixx/html
ScriptAlias /cgi-bin/ /home/confixx/html/cgi-bin/
CustomLog /var/log/httpd/confixx/confixx.p1xxxxx.pureserver.info_access "%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i""
ErrorLog /var/log/httpd/confixx/confixx.pxxxxx.pureserver.info_error
#User confixx
#Group confixx
suPHP_Engine off
RemoveHandler .php
php_admin_flag engine on
</VirtualHost>
<VirtualHost 217.xxx.xxx.xxx:443>
SSLEngine on
ServerName confixx.p1xxxxx.pureserver.info
DocumentRoot /home/confixx/html
ScriptAlias /cgi-bin/ /home/confixx/html/cgi-bin/
CustomLog /var/log/httpd/confixx/confixx.p1xxxx.pureserver.info_ssl_access "%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i""
ErrorLog /var/log/httpd/confixx/confixx.pxxxxxx.pureserver.info_ssl_error
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
#User confixx
#Group confixx
suPHP_Engine off
RemoveHandler .php
php_admin_flag engine on
</VirtualHost>
Code: Select all
<VirtualHost 217.xxx.xxx.xxx>
ServerName sof2.meinedomian.de
ServerAlias www.sof2.meinedomain.de
DocumentRoot /home/www/web1/sof2
php_admin_value safe_mode off
ErrorDocument 401 "<b>Fehler</b><br><br>Du hast auf das SoF 2 WebAdmin kein Zugriff *hehe
</VirtualHost>
Code: Select all
suPHP_Engine on
php_admin_flag engine off
AddType application/x-httpd-php .php
AddHandler x-httpd-php .php
Code: Select all
LoadModule suphp_module /usr/lib/apache/mod_suphp.so
Also wie gesagt alles gemacht, aber bekomme aber einen internal server error :( Was nun?
Kann es sein das weil ich das
php4-cgi nicht habe das der internal server error kommt?
Compiled habe ich es so:
Code: Select all
./configure --with-min-uid=30 --with-min-gid=30 --with-apache-user=wwwrun --with-php=/usr/lib/cgi-bin/php4 --with-logfile=/var/log/suphp.log --with-apxs=/usr/bin/apxs
Alle anderen vhosts da habe ich die suphp engine auf off und da geht es ja dann. Hoffe es weiss einer rat was da schief gelaufen ist und solange muss ich wieder mt meiner alten config weiter machen! und auf sudo umsteigen.
pp.s in der phpinfo zeigte es mir an das phpsu geladen wird.
Re: .sh Datei per PHP als root starten
Posted: 2004-02-01 23:59
by r00ty
uiii
mir den optionen hab ich keine Ahnung...
aber deine Logs sollten aufschlussreicher sein
was sagt denn die error-log vom apachen ?
Re: .sh Datei per PHP als root starten
Posted: 2004-02-02 07:13
by blnsnoopy26
r00ty wrote:uiii
mir den optionen hab ich keine Ahnung...
aber deine Logs sollten aufschlussreicher sein
was sagt denn die error-log vom apachen ?
Also für benutzer web1 gibt es da kein aufschluss woran es liegen kann.
Also ich kann nicht sehen, warum das suphp nicht funktioniert :(
in meiner suphp.log steht das:
Code: Select all
[Sun Feb 01 09:47:01 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:01 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:02 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:02 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:03 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:03 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:04 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:04 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:05 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:05 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:06 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:06 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:07 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:07 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:08 2004] [info] Executing /home/www/web1/xxx/index.php as user web1 (1036), group ftponly (103)
[Sun Feb 01 09:47:08 2004] [error] System error: execl() failed (No such file or directory)
[Sun Feb 01 09:47:16 2004] [error] UID of /home/confixx/html/not/index.php or its target (0 / root) < 30
Aber das gibt mir auch keine grossen infos raus. Sagt mir Ordner nicht vorhanden,aber er ist ja da. Irgendwo is murks aber ich komme da auch nicht hinter - leider.
Re: .sh Datei per PHP als root starten
Posted: 2004-02-08 14:52
by blnsnoopy26
Habs nu hinbekommen :)
läuft alles prima.
Hab das aber schon in einem anderen thread geschildert :)
Hier:
http://www.rootforum.org/forum/viewtopic.php?t=22745