ubuntuusers.de

.sh dateien in PHP skripts ausführen ?

Status: Gelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

skainz

Anmeldungsdatum:
8. Juli 2010

Beiträge: Zähle...

Hallo, ich bin neu hier und hoffe dass die frage hier hin gehört.. 😉

Es geht um folgendes:

Ich habe testweisse Apache2, Mysql-Server und vsftp installiert. funktioniert soweit alles.

Da ich plane eine Serververwaltungsoberfläche in php zu programmieren, ist es notwendig zu wissen wie man mit php .sh dateien ausführen kann.

Folgendes hab ich bereits:

1) index.php mit <?php system("sudo ./bash_script.sh") ?>; (hab auch schon exec() versucht...)

2) bash_script.sh im selben Verzeichniss mit dem Inhalt: "/etc/init.d/vsftpd stop" (Soll den FTP-daemon beenden)

3) den angemeldeten Benutzer 'user1' in die /etc/sudoers hinzugefügt: user1 ALL=NOPASSWD: ALL

weiss jemand was ich falsch mache ?

danke schon im Vorraus.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6491

Wohnort: Hamburg

Was machen deine Scripte, was mit PHP nicht geht?

Wenn es nur um einzelne Systembefehle geht, kann man dafür auch shell_exec() benutzen, etwa so

$ergebniscode = shell_exec( sudo hddtemp ... );

3) den angemeldeten Benutzer 'user1' in die /etc/sudoers hinzugefügt: user1 ALL=NOPASSWD: ALL weiss jemand was ich falsch mache ?

Alles was der Webserver macht wird unter der Flagge von "www-data" ausgeführt. Diesen Benutzer must du zur sudoers hinzufügen.

Und wenn es wirklich Bash Scripte sein müssen, wäre vielleicht eine Alternative, diese über das CGI Interface (also ohne PHP) direkt zu starten. Viele Embedded Geräte mache das so.

skainz

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 11

naja...die scripte sollen z.b den Server Neustarten/Herunterfahren, oder Dienste/Daemons starten/beenden/neustarten

Jails erstellen/löschen Benutzer hinzufügen/entfernen und mittels Apt auch packete installieren können.

so gesehn, sollte es die wichtigsten Funktionen eines SSH-Zugangs besitzen...Nur halt eben für leute die sich

nicht so gut mit shell befehlen auskennen...

ok....www-data...

ich will eig. nur eine serververwaltungsoberfläche machen...MUSS nicht mit PHP sein..

wusste nur nicht dass CGI für sowas gedacht ist, aber danke für den tipp ...😉

lg

skainz

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 11

und die scripte sollen Server neustarten/herunterfahren, benutzer anlegen/entfernen,

jails erstellen/entfernen, Dienste starten/stoppen/neustarten usw....

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6491

Wohnort: Hamburg

wusste nur nicht dass CGI für sowas gedacht ist,

Das wäre jetzt zu weit gegriffen, aber viele Wege führen nach Rom. Für den normalen Serverbetrieb ist CGI aus Performancegründen sicher nicht optimal, aber "Administration" ist ja nicht der Normalfall/Lastbetrieb.

Nur halt eben für leute die sich nicht so gut mit shell befehlen auskennen...

Dir ist aber schon klar, das sowas auch ein Sicherheitsproblem darstellen kann? Im lokalen Netz, wie bei mir mag das ja noch gehen, wenn der Webserver generell per sudo alles darf, aber eigentlich sollte man nur genau die Befehle in sudoers erlauben, die auch wirklich benötigt werden. Bei mir sind das momentan nur hddtemp, lm-sensors, arp und shutdown. Bei Servern, die vom Internet her erreichbar sind oder Teil eines Firmennetzwerks sind, sollte man sowas nur für eingeloggte und berechtigte User über eine verschlüsselte Verbindung erlauben.

ich will eig. nur eine serververwaltungsoberfläche machen...MUSS nicht mit PHP sein..

Wie man sowas realisiert ist eigentlich nicht relevant. Aber du must genau wissen welche Befehle du dafür brauchst und wie man sowas realisieren kann. Dann kannst du ausprobieren, ob das mit CGI oder PHP einfacher zu realisieren ist. Möglicherweise kommen jetzt auch Einwände, das sowas auch viel besser mit Python zu machen ist. Aber dazu kann ich nichts sagen, da meine Python Kenntnisse sich auf gerademal 2 Lektionen beschränken. Jedenfalls kann man Python auch über CGI bzw. FastCGI starten.

Allerdings kann ich nicht sagen wie man CGI/FastCGI unter Apache aktiviert und konfiguriert, da ich das nur mit Lighttpd (PHP/FCGI) und bozohttpd (CGI) verwende. Mein einfachstes (Bash)-CGI Script sieht übrigens so aus:

#!/bin/bash
echo "Content-type: text/plain"
echo
env
echo

Das ist nicht nur einfach, sondern auch informativ, da es zeigt, welche Benutzerumgebung der Server hat, was wiederum für die weitere Programmierung wichtig sein kan (falls man nicht doch PHP benutzt).

jails erstellen/entfernen,

Damit kan ich jetzt nichts anfangen. Welche Befehle wären dafür notwendig, wenn man das in einer Shell machen würde?

skainz

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 11

nja....mit jails mein ich quotas/chroots....mittels makejail...

naja klar sicherheitsrisiko....aber eine gut gesicherte php anwendung machts nicht ganz so schlimm.

auserdem solls nicht im inet erreichbar sein, sondern einfach auf einem entwicklungsserver intern.

Vorteil: man muss nicht immer per ssh drauf ...😉

und nachdem es einwandfrei auf einem Debian(LENNY) system getestet wurde, werd ich auch einen weg finden damit mehrere Server gleichzeitig zu verwalten...

lg

Antworten |