Programme vom Web aus starten - wie?
Hallo, ich hoffe, dass das Thema hier halbwegs richtig ist. Mittels Webinterface möchte ich ein Programm starten/stoppen. Wie geht das am sinnvollsten? Zusätzlich wäre es ganz geistreich, wenn das Prog unter einem speziellen User ausgeführt wird und nicht unbedingt unter apache|nobody|wwwrun , etc ... Meine Ansätze sind: Mittels PHP über system() oder Backticks Mittels cgi / perl Das ganze in Kombination mit "startproc" `/sbin/startproc -u myuser /usr/local/bin/myprog -c /path/to/conf.conf > /dev/null` Wenn ich das Kommando in der Shell eingebe läuft auch alles ganz wunderbar, aber vom Web aus geht es nicht :-( Ich habe auch ein eigenes Script geschrieben, das diese Zeile enthält und dieses dann versucht vom Web aus aufzurufen, aber nix geht. Die Ordner & Files sind ausführbar und lesbar für alle, daran dürfte es eigentlich nicht scheitern. Ein dussliges `cat dat1 dat2 > dat3` geht übrigens! Gibt es einen Schalter, der das Ausführen von Programmen mittels Apache verbietet / einschränkt? Grüße Anatol
Anatol Schirmer wrote:
`/sbin/startproc -u myuser /usr/local/bin/myprog -c /path/to/conf.conf > /dev/null`
Wenn ich das Kommando in der Shell eingebe läuft auch alles ganz wunderbar, aber vom Web aus geht es nicht :-(
Fuer die Verwendung von "-u myuser" braucht man sicher root-Rechte. Die hat ein Apache-User aber nicht. Beschaeftige dich mit einem suid-Wrapper wie "sudo", "super" oder "su1" -- Have fun, Peter
Fuer die Verwendung von "-u myuser" braucht man sicher root-Rechte. Die hat ein Apache-User aber nicht. Beschaeftige dich mit einem suid-Wrapper wie "sudo", "super" oder "su1"
Was sind das für Programme und wo gibt es die (Installation)? Ich vermute, die müssen mit dem Apache zusammencompiliert werden? Oder gibt es da Einzel-Lösungen? Grüße Anatol
Anatol Schirmer wrote: Vorredner leben lassen. Man weiss sonst nicht, wer den folgenden Absatz geschrieben hat.
Fuer die Verwendung von "-u myuser" braucht man sicher root-Rechte. Die hat ein Apache-User aber nicht. Beschaeftige dich mit einem suid-Wrapper wie "sudo", "super" oder "su1"
Was sind das für Programme und wo gibt es die (Installation)?
Auf deiner SuSE. Mindestens 1 ist vorhanden.
Ich vermute, die müssen mit dem Apache zusammencompiliert werden?
Nein, keinesfalls.
Oder gibt es da Einzel-Lösungen?
Ja, das sind jeweils einzelne Applikationen, die es ermoeglichen, Programme als aderer User zu starten. Ich persoenlich setze "sudo" ein, aber die Syntax und Configuration schrecken einige von dieser Loesung ab. Die beiden anderen kenne ich nur vom Hoeren-Sagen. -- Have fun, Peter
Mojn Peter! Peter Wiersig wrote:
Vorredner leben lassen. Man weiss sonst nicht, wer den folgenden Absatz geschrieben hat.
Ups! Dar war ich doch etwas fix ;-)
Oder gibt es da Einzel-Lösungen?
Ja, das sind jeweils einzelne Applikationen, die es ermoeglichen, Programme als aderer User zu starten. Ich persoenlich setze "sudo" ein, aber die Syntax und Configuration schrecken einige von dieser Loesung ab. Die beiden anderen kenne ich nur vom Hoeren-Sagen.
Prima, sudo hab ich bei mir gefunden und installed :-) Sieht eigentlich ganz gut. Auch die Leistungen scheinen ganz ordentlich zu sein. Aber es scheint in der Tat etwas komplex. Naja ... eigentlich auch nicht so sehr ;-) Was mich etwas stört ist das 'visudo'. Braucht man das unbedingt?? Hab nämlich ne Allergie gegen den 'vi' - bin mit emacs "groß" geworden ;-) 'visudo' macht doch nur n Syntaxcheck oder? Ich hab das mal angetestet und ein dussliges 'Argument expected' ohne Angabe von Zeilennummer oder sonstiger Ortsangabe erhalten ... und das ist doch etwas weniger nützlich ... Grüße Anatol
Anatol Schirmer wrote:
Mojn Peter!
Hi Anatol
;-) Was mich etwas stört ist das 'visudo'. Braucht man das unbedingt?? Hab nämlich ne Allergie gegen den 'vi' - bin mit emacs "groß" geworden ;-)
Dann hast du aber nicht viel gelernt. Mach dir dann doch auch "export EDITOR=emacs" in die .bashrc und dann geht immer der Emacs auf.
'visudo' macht doch nur n Syntaxcheck oder? Ich hab das mal angetestet und ein dussliges 'Argument expected' ohne Angabe von Zeilennummer oder sonstiger Ortsangabe erhalten ... und das ist doch etwas weniger nützlich ...
hoeh? '>>> sudoers file: syntax error, line 28 <<< What now?' Und der Syntaxcheck wird dann wichtig, weil bei einem Syntaxfehler in der Konfig kein weiterer Befehl mehr befolgt wird. (Und zu dem Zeitpunkt ist sicher der eine, der das root-Passwort kennt im Urlaub.) Vorteilhaft an der komplexen Konfiguration ist das du mit einer einzigen Konfigsdatei die Rollen fuer ein riesiges Netzwerk festlegen kannst. -- Have fun, Peter
Mojn Peter! Peter Wiersig wrote:
Dann hast du aber nicht viel gelernt. Mach dir dann doch auch "export EDITOR=emacs" in die .bashrc und dann geht immer der Emacs auf.
Hab mich bisher mit diesen Feinheiten so gar nicht beschäftigt, aber wäre ja langsam wohl mal Zeit ;-) Sag mal, die .bashrc müsste doch eigentlich im HomeDir liegen, oder? Da es da für root keine gibt, würd ich jetzt einfach eine Datei diesen Namens anlegen. Muß die irgendwelche Formalien aufweisen (#!/binbash oder sowas?). Kann ich da die Exportzeile einfach so ganz solo reinsetzen oder muß da noch anderes rein, damit ich mir nicht selbst ein Bein stelle?!
hoeh? '>>> sudoers file: syntax error, line 28 <<< What now?'
Ich hatte beim Versuch zu speichern immer nur ein "Argument missing" oder so was ähnlich lautendes erhalten ... Aber mal sehen, wenn der Export des Editors klappt, dann ist das vielleicht von ganz alleine gelöst. Ähh ... der Export gilt doch auch für die Commandline, oder? Hab hier nämlich keine grafische Oberfläche ...
Und der Syntaxcheck wird dann wichtig, weil bei einem Syntaxfehler in der Konfig kein weiterer Befehl mehr befolgt wird. (Und zu dem Zeitpunkt ist sicher der eine, der das root-Passwort kennt im Urlaub.)
Ok, das Kind ist also mit Sorgfalt zu behandeln ;-)
Vorteilhaft an der komplexen Konfiguration ist das du mit einer einzigen Konfigsdatei die Rollen fuer ein riesiges Netzwerk festlegen kannst.
Ja, das haben die Beispiele schon angedeutet - klingt sehr interessant. Dusslige Frage: Müsste ich diese Datei dann einfach auf alle Rechner kopieren, oder gibt es da einen automatischen Abgleich - ohne jetzt Tools wie rsync zu bauftragen ;-) Grüße Anatol
Hallo Anatol, Am Mittwoch, 3. September 2003 17:27 schrieb Anatol Schirmer <linux@recordcaster.de>:
Mittels Webinterface möchte ich ein Programm starten/stoppen. Wie geht das am sinnvollsten?
Am /einfachsten/ ist es vielleicht vorhandene Software zu nutzen, wie zB. Webmin (siehe Signatur). Dort kannst Du einen "Eigenen Befehl" einrichten und diesen entsprechend für Benutzer auf Deinem System freigeben. kind regards Martin Mewes -- http://webmin.mamemu.de/ WebMin-Mirror http://webmin.mamemu.de/download.html WebMin Translations Official Webmin/Usermin Translation Co-Ordinator 2003/2004 http://www.webmin.com/mailing-trans.html
Hallo Martin!
Am /einfachsten/ ist es vielleicht vorhandene Software zu nutzen, wie zB. Webmin (siehe Signatur).
Dort kannst Du einen "Eigenen Befehl" einrichten und diesen entsprechend für Benutzer auf Deinem System freigeben.
Hört sich interessant an! Kann man dies dann auch in Form eines Links in die eigene Website integrieren? Grüße Anatol
Hi Anatol, Am Mittwoch, 3. September 2003 18:13 schrieb Anatol Schirmer <linux@recordcaster.de>:
Am /einfachsten/ ist es vielleicht vorhandene Software zu nutzen, wie zB. Webmin (siehe Signatur).
Dort kannst Du einen "Eigenen Befehl" einrichten und diesen entsprechend für Benutzer auf Deinem System freigeben.
Hört sich interessant an! Kann man dies dann auch in Form eines Links in die eigene Website integrieren?
Nein, dies wohl eher nicht. a) Aber Du könntest WebMin in einem Frame ablaufen lassen, worin sich die Nutzer auf jeden Fall anmelden sollten. b) Die entsprechenden Sourcen (BSD-Lizenz) aus Webmin nehmen und für sich selbst verhackstücken (als Anleitung). bis dahin Martin -- http://webmin.mamemu.de/ WebMin-Mirror http://webmin.mamemu.de/download.html WebMin Translations Official Webmin/Usermin Translation Co-Ordinator 2003/2004 http://www.webmin.com/mailing-trans.html
1 Anatol Schirmer schrieb:
Hallo,
hello,
ich hoffe, dass das Thema hier halbwegs richtig ist.
Mittels Webinterface möchte ich ein Programm starten/stoppen. Wie geht das am sinnvollsten?
Zusätzlich wäre es ganz geistreich, wenn das Prog unter einem speziellen User ausgeführt wird und nicht unbedingt unter apache|nobody|wwwrun , etc ...
Meine Ansätze sind:
Mittels PHP über system() oder Backticks Mittels cgi / perl
Das ganze in Kombination mit "startproc"
`/sbin/startproc -u myuser /usr/local/bin/myprog -c /path/to/conf.conf > /dev/null`
Wenn ich das Kommando in der Shell eingebe läuft auch alles ganz wunderbar, aber vom Web aus geht es nicht :-( Ich habe auch ein eigenes Script geschrieben, das diese Zeile enthält und dieses dann versucht vom Web aus aufzurufen, aber nix geht.
Die Ordner & Files sind ausführbar und lesbar für alle, daran dürfte es eigentlich nicht scheitern.
Ein dussliges `cat dat1 dat2 > dat3` geht übrigens!
Gibt es einen Schalter, der das Ausführen von Programmen mittels Apache verbietet / einschränkt?
1. das problem mit apache soll als user ausgeführt werden, der user muss existieren! du musst nur in der httpd.conf einschrieben wo steht User nobody User apache Group apache und neu starten. 2. diese dineste bzw. scripte muss der apache user ebenfalls ausführen können. alternative gibt es mittels sudo man sudo ;-) und anschliessend über php mittels system() aufrufen. gruss,elmar
participants (4)
-
Anatol Schirmer
-
Elmar Blaschka
-
Martin Mewes
-
Peter Wiersig