Shell Script per PHP ausführen
Shell Script per PHP ausführen
Tach !
Ich versuche schon seit ein paar stunden ein shell script per php auszuführen.
Bekomme es aber irgendwie nicht hin und meine fehlersuche führt auch nicht zum erfolg
Ich verwende das lampp (xampp) server paket und das shell script liegt im /bin/ verzeichniss und heisst ftpadd
ftpadd legt ein systemuser an
fptadd userid kennwort benutzername
Leider lässt sich das script nicht per php mit shell_exec("ftpadd 567 blabla billy") ausführen...
wo ist der fehler ?
Ich versuche schon seit ein paar stunden ein shell script per php auszuführen.
Bekomme es aber irgendwie nicht hin und meine fehlersuche führt auch nicht zum erfolg
Ich verwende das lampp (xampp) server paket und das shell script liegt im /bin/ verzeichniss und heisst ftpadd
ftpadd legt ein systemuser an
fptadd userid kennwort benutzername
Leider lässt sich das script nicht per php mit shell_exec("ftpadd 567 blabla billy") ausführen...
wo ist der fehler ?
Was meckert dir denn PHP? Da sollte doch irgendne Fehlermeldung bzw. ein Fehlercode zurueckkommen.
Wenn du das so nutzt:
Dann sollte in $output die Ausgabe von ftpadd stehen.
Ach ja, eventuell hast du im PHP den Safe Mode aktiviert, damit kann man dann dieses Kommando nicht nutzen. Mehr Infos zum Safe Mode unter [1].
[1]http://de.php.net/manual/de/features.safe-mode.php
Wenn du das so nutzt:
Code: Alles auswählen
$output = shell_exec("ftpadd 567 blabla billy");
Ach ja, eventuell hast du im PHP den Safe Mode aktiviert, damit kann man dann dieses Kommando nicht nutzen. Mehr Infos zum Safe Mode unter [1].
[1]http://de.php.net/manual/de/features.safe-mode.php
-
- Beiträge: 61
- Registriert: 26.05.2005 00:04:12
- Wohnort: Aachen
-
Kontaktdaten:
Hallo,
versuch das Problem einzugrenzen, indem Du ein anders Programm installierst, welches auch Execute nutzt.
Hab da ein schönes:
phpfm: http://phpfm.sourceforge.net/ (nur eine index.php-Datei)
Dort gibt es auch Execute, funktioniert das Execute auf deinem Server?
versuch das Problem einzugrenzen, indem Du ein anders Programm installierst, welches auch Execute nutzt.
Hab da ein schönes:
phpfm: http://phpfm.sourceforge.net/ (nur eine index.php-Datei)
Dort gibt es auch Execute, funktioniert das Execute auf deinem Server?
# sudo -u root ftpadd
exec("sudo -u root ftpadd") no return...
# sudo -u root
usage: sudo [-HPSb] [-p prompt] [-u username|#uid]
{ -e file [. . .] | -i | -s | <command> }
# sudo -u root useradd
exec("sudo -u root useradd") no return...
hab ich ausprobiert.. aber ich werd daraus nicht schlau, warum einige sachen funktionieren und einige nicht...
exec("sudo -u root ftpadd") no return...
# sudo -u root
usage: sudo [-HPSb] [-p prompt] [-u username|#uid]
{ -e file [. . .] | -i | -s | <command> }
# sudo -u root useradd
exec("sudo -u root useradd") no return...
hab ich ausprobiert.. aber ich werd daraus nicht schlau, warum einige sachen funktionieren und einige nicht...
Hi,
vielleicht hat das mit dem sudo am Anfang doch zu weit geführt. Versuch doch nun mal Dein Script so zu ändern, dass Du "nur" eine Datei anlegst (unter /tmp oder im Webserver-Verzeichnis)
Diese Datei wird den Webserver-Benutzer als Eigentümer haben und das musst Du bei Deinem Script bedenken. Wechsel als "root" zu dem Webserver-Benutzer und führe das Script "von Hand" aus. Versuch die Fehler auszubauen, indem Du dem Webserver-Benutzer mehr Rechte gibst. Hierbei können Dir setuid root und evtl. sudo helfen. Ohne diese wirst Du wohl nicht einen neuen Benutzer anlegen können.
vielleicht hat das mit dem sudo am Anfang doch zu weit geführt. Versuch doch nun mal Dein Script so zu ändern, dass Du "nur" eine Datei anlegst (unter /tmp oder im Webserver-Verzeichnis)
Diese Datei wird den Webserver-Benutzer als Eigentümer haben und das musst Du bei Deinem Script bedenken. Wechsel als "root" zu dem Webserver-Benutzer und führe das Script "von Hand" aus. Versuch die Fehler auszubauen, indem Du dem Webserver-Benutzer mehr Rechte gibst. Hierbei können Dir setuid root und evtl. sudo helfen. Ohne diese wirst Du wohl nicht einen neuen Benutzer anlegen können.
Wie bekomme ich denn raus wie der webserver user heisst ?
lampp (xampp) wird da doch bestimmt ein standard user anlegen... weil dann könnte ich dem user ja einfach mehr rechte geben...
anscheint darf der user nicht mal eine datei anlegen oder ist
$var=fopen("file.txt", "w");
der falsche befehl um eine datei anzulegen ??
lampp (xampp) wird da doch bestimmt ein standard user anlegen... weil dann könnte ich dem user ja einfach mehr rechte geben...
anscheint darf der user nicht mal eine datei anlegen oder ist
$var=fopen("file.txt", "w");
der falsche befehl um eine datei anzulegen ??
Hi,
dann solltest Du generell dem Webserver es auch nicht erlauben Benutzer per Script anzulegen, was ja mal Dein ursprüngliches Ziel war. Lass dem Webserver doch in eine Datei die Benutzer schreiben, die Du dann "von Hand" abarbeitest. Kannst Dich dann ja über diesen Antrag per EMail informieren lassen. So kannst Du Webserver-Benutzer und root vernüftig trennen. Außerdem soll der Webserver ja wohl nicht beliebige User anlegen, oder?
dann solltest Du generell dem Webserver es auch nicht erlauben Benutzer per Script anzulegen, was ja mal Dein ursprüngliches Ziel war. Lass dem Webserver doch in eine Datei die Benutzer schreiben, die Du dann "von Hand" abarbeitest. Kannst Dich dann ja über diesen Antrag per EMail informieren lassen. So kannst Du Webserver-Benutzer und root vernüftig trennen. Außerdem soll der Webserver ja wohl nicht beliebige User anlegen, oder?
Hi,
Benutzer für den Webserver:
lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
apache2 27057 root 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27058 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27059 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27060 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27061 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27062 www-data 3u IPv6 941034 TCP *:www (LISTEN)
Benutzer ist www-data beim mir.
root muss ihn starten, da er den Port 80 (priviligiert) nutzt.
Benutzer für den Webserver:
lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
apache2 27057 root 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27058 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27059 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27060 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27061 www-data 3u IPv6 941034 TCP *:www (LISTEN)
apache2 27062 www-data 3u IPv6 941034 TCP *:www (LISTEN)
Benutzer ist www-data beim mir.
root muss ihn starten, da er den Port 80 (priviligiert) nutzt.
Zuletzt geändert von nil am 11.10.2005 12:50:03, insgesamt 1-mal geändert.
ok eigentlich macht das sicherheits technisch sinn
ist aber schade das das dann nicht automatisch geht aber so gesehen ist das script von hand ausführen auch nicht das problem....
wenn mir jetzt noch wer sagen kann wie ich per mysql query die höchste zahl aus einer spalte auslese dann bin ich vorerst glücklich (user id)
ist aber schade das das dann nicht automatisch geht aber so gesehen ist das script von hand ausführen auch nicht das problem....
wenn mir jetzt noch wer sagen kann wie ich per mysql query die höchste zahl aus einer spalte auslese dann bin ich vorerst glücklich (user id)
Code: Alles auswählen
SELECT max(user_id) FROM <tabelle>