PHP Befehl um einen Befehl auf dem Rechner auszuführen?

Post Reply
Message
Author
Bastler

PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#1 Post by Bastler »

Gibt es eigtl einen PHP-Befehl, mit dem ich normale Befehle direkt auf dem router ausführen kann, als würde ich sie in die Konsole eingeben?
Und wenn ja, gibt es auch eine Möglichkeit dem HTTP-Server die entsprechenden rechte z.u geben, dass er bestimmte Befehle ausführen kann.

Thorsten

Re: PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#2 Post by Thorsten »

Auf dem Router?!
PHP läuft auf einem WebServer und wird auch von diesem interpretiert. Falls dein Webserver auch gleichzeitig dein Router ist, geht dies natürlich.
In PHP sind hierfür u.a. die Funktionen "system()" oder auch "exec()" zuständig.
Ob der Webserver genügend Rechte für die Ausführung hat ist dann natürlich eine andere Sache, auch, ob er überhaupt diese Befehle / Programme "sehen" kann (Wenn der Webserver in einer ge-chroot()eten Umgebung läuft wird dies sehr unwahrscheinlich).
Erstell doch einfach ein Test PHP File in dem du das ganze ausprobierst...
<?php
system(uptime);
?>

Gruß

Thorsten

Bastler

Re: PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#3 Post by Bastler »

Hast selbstverständlich recht, der Rechner läuft als Router und als Webserver, ich sag nur immer "der Router", wenn ich von diesem Rechner spreche, da ist mir das so rausgerutscht. Ich werde das Skript mal ausprobieren. Was muss ich aber tun, wenn ich dem Apache die Rechte geben will, einen Befehl auszuführen, aber möglichst so, dass andere nutzer (gast z.B.) diese befehle nicht ausführen können. Die befehle sind nämlich solche Sachen wie init X, etc, also nichts was der gastbenutzer z.B. über ssh dann auch eingeben könnte.

Danke im Voraus

Bastler

Re: PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#4 Post by Bastler »

P.S. Was ist eigtl eine ge-chroot-ete Umgebung?, bzw was macht chroot?

rag
Posts: 24
Joined: 24. Jan 2002 10:37

Re: PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#5 Post by rag »

Hier der Link zu (meiner Meinung nach) der besten Funktionsreferenz für PHP.

www.php.net

Komplette Doku Teilweise auch in deutsch und ein sehr gute Funktionsreferenz.

Gruß
raG
-*-
<-there is no life before coffee->
-*-

Thorsten

Re: PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#6 Post by Thorsten »

> Was ist eigtl eine ge-chroot-ete Umgebung?, bzw was macht chroot?

Beim chroot()en wird ein Prozess in ein bestimmtes Verzeichnis "verbannt", d.h. der Prozess sieht dieses Verzeichnis als Root ("/") an.
Chrootest du z.B. Apache auf das Verzeichnis "/var/www/" kann Apache unter keinen Umständen auf das Verzeichnis "/foo/bar/" zugreifen.

Daraus ergibt sich allerdings auch ein Problem: Der gechrootete Prozess kann auch auf Kommandos wie "ls" nicht mehr zugreifen, da diese ausserhalb seiner Chroot-Umgebung liegen, sämtliche Befehle die der Prozess nutzen können soll musst du ihm also durch kopien dieser Befehle in seiner Chroot Umgebung zur Verfügung stellen.

D.h.: Soll Apache auch "ls" ausführen können brauchst du im Verzeichnis "/var/www" ein Unterverzeichnis "bin/" in dem dann eine Kopie des "ls" Prozesses abgelegt ist.

Ich hoffe, ich habe mich einigermaßen Verständlich ausgedrückt...

Gruß

Thorsten

Bastler

Re: PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#7 Post by Bastler »

Ja, du hast dich klar ausgedrückt, Danke. Ich muss also, falls mein Apache in einer gechrooteten Umgebung läuft im Verzeichnis /usr/local/httpd ein bin-Verzeichnis anlegen und den Befehl init und weitere reintun. Wie krieg ich allerdings raus, OB mein Apache in einer gechrooteten Umgebung läuft? (Zur Info: Ich habe SuSE 7.1, wenn dir das weiterhilft.)

Danke übrigens für den php.net - Tip

Thorsten

Re: PHP Befehl um einen Befehl auf dem Rechner auszuführen?

#8 Post by Thorsten »

Tja, wie bekommt man soetwas raus? Wirklich gute Frage, fällt mir leider nichts zu ein. SuSE verwendet allerdings, wenn ich recht informiert bin, standardmäßig keine gechrootete Umgebung für Programme.
Auch die Rechte sollten eig. schon von vornherein so vergeben sein, dass Apache (zumindest einfache) Programme (uptime, ls) ausführen kann.
Hast du denn mal eine Testdatei angelegt und das ganze ausprobiert?

Gruß

Thorsten

Post Reply