isdnctrl via PHP aufrufen (Suse 7.3)
Hallo Freunde des Pinguins! Nachdem mein Wohnungs-Router mittlerweile recht anständig läuft möchte den Auf- und Abbau der ISDN-Wählverbindung etwas komfortabler machen. Dazu möchte ich ein Menü bauen, welches ich im Browser anzeigen und bedienen kann. Da hier Apache läuft habe ich mir also ein kleines Menü "start.htm" gebaut welches die beiden Links auf "Internetverbindung starten" (verlinkt auf ./isdn_start.php) und "Internetverbindung beenden" (verlinkt auf ./isdn_stop.php) enthält. Die beiden PHPs (ich nehme jetzt mal nur Internetverbindung starten, ist beim beenden ohnehin analog) funktionieren leider nicht wie gewünscht. isdn_start.php sieht so aus: <html> <head> <title>ISDN-Verbindung starten</title> </head> <body> <?php passthru("/usr/sbin/isdnctrl status ippp0", $ergebnis); echo "Ergebnis: $ergebnis<br>\n"; ?> </body> </html> Eine Verbindung wird aber nicht aufgebaut. Als Ergebnis gibt das Skript "126" aus. Führe ich zum Testen mittels passthru "ls -l" oder "ls -l /usr/sbin" aus, dann erhalte ich eine korrekte Ausgabe. Ich vermute, das der User WWWRUN (der führt die Skripte aus oder?) nicht isdnctrl benutzen darf. Auf einer der Webseiten die ich gefunden habe fand ich das Stichwort "suexec". Mittels suexec -V kann ich sehen, daß auf meinem Rechner dieses Programm offenbar installiert ist: suexec -V -D DOC_ROOT="/usr/local/httpd/htdocs" -D GID_MID=96 -D HTTPD_USER="wwwrun" -D LOG_EXEC="/var/log/httpd/suexec.log" -D SAFE_PATH="/bin:/usr/bin" -D UID_MID=96 -D USERDIR_SUFFIX="public_html" Andererseits ist PHP4 bei mir als Modul installiert (alles SuSE 7.3 von CD installiert,Apache/1.3.20 (Linux/SuSE) PHP/4.0.6). Im Web fand ich, daß suexec mit PHP als Modul nicht funktioniert. Frage: Wie kann ich es hinbekommen, daß isdnctrl ausgeführt wird? Muß ich dafür extra Apache neu kompilieren mit PHP als CGI und dann dieses suexec nutzen? Wäre mir nicht recht (->läuft bisher alles so fein). Außerdem ist mir nicht klar geworden wie man dieses suexec nutzt (man suexec hat mir da leider ebenso wenig geholfen wie die Seite auf der Apache-Website). Dem wwwrun Rechte auf isdnctrl zu geben wäre zwar einfach, ist aber sicher keine schöne und sichere Lösung oder? Vielen Dank fürs lesen und schon mal für Eure Tipps, Ralf -- :: Ralf Carlet :: Fon & Fax: +49-(0)700-RALFCARLET :: eMail: ralf@carlet.de :: Web: http://www.carlet.de :: () ascii ribbon campaign - gegen html mail :: /\ - gegen proprietäre attachments
Moin, Am Fre, 2003-06-27 um 22.50 schrieb Ralf Carlet:
Nachdem mein Wohnungs-Router mittlerweile recht anständig läuft möchte den Auf- und Abbau der ISDN-Wählverbindung etwas komfortabler machen. Dazu möchte ich ein Menü bauen, welches ich im Browser anzeigen und bedienen kann.
Ich habe ein ähnliches Problem gerade gelöst, indem ich einen kleinen Umweg über perl gegangen bin. Mein perl-script "als_chef.pl" sieht sinngemäss so aus: #!/usr/bin/perl -w use strict; use warnings; print `/usr/bin/whoami`; Sinngemäß. Der Pfad auf "whoami" kann ein anderer sein. Mittels sudo und visudo kannst du jetzt das perl-Script freigeben für die Verwendung als root ohne Passwort. man sudo. Sobald dir das gelungen ist (Sorry, kein Beispiel, Rechner gerade nicht greifbar) kannst du dieses Script ausrufen mit sudo /pfad/zum/script/als_chef.pl ...und es wird korrekt "root" als aktuellen Usernamen ausgeben. Dieses Script kannst du aus php heraus aufrufen mit exec("sudo /pfad/zum/script/als_chef.pl", $rueck); Da das wahrscheinlich nicht auf Anhieb laufen wird, ist es sinnvoll, zum testen mit su su httpd (oder worunter auch immer dein Webserver läuft) unter der Identität des Servers sudo /pfad/zum/script/als_chef.pl auf evtl. Fehler zu prüfen. Wenn es nicht auf Anhieb rennt, lege ich dir auch sudo -k ans Herz. Bestimmt geht es eleganter - so habe ich es hinbekommen. Ach so, du solltest bei Problemen dein Enviroment prüfen, evtl. ist z.B. $PATH nicht so gesetzt, wie du glaubst und daher laufen die Suse-Scripte nicht (korrekt). Prinzipiell kannst du bestimmt den Umweg über perl weglassen und dirtekt auf das Script sudo'en. Ich finde es so handlicher. Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Hallo Jörg! Joerg Rossdeutscher schrieb:
Am Fre, 2003-06-27 um 22.50 schrieb Ralf Carlet:
Nachdem mein Wohnungs-Router mittlerweile recht anständig läuft möchte den Auf- und Abbau der ISDN-Wählverbindung etwas komfortabler machen. Dazu möchte ich ein Menü bauen, welches ich im Browser anzeigen und bedienen kann.
Ich habe ein ähnliches Problem gerade gelöst, indem ich einen kleinen Umweg über perl gegangen bin.
Mein perl-script "als_chef.pl" sieht sinngemäss so aus:
Ok, dafür hab ich ein Shellskript gebaut, paßt ja schon mal :-)
[...] Mittels sudo und visudo kannst du jetzt das perl-Script freigeben für die Verwendung als root ohne Passwort. man sudo.
Prima Hinweis, danke! Hab ich eben installiert von den CDs und mal die Manpage gelesen. Nur visudo find ich "doof", weil ich die komischen Befehle nicht kenne....naja, eben mal reinsehen bis es klappt ;-)
[...] Dieses Script kannst du aus php heraus aufrufen mit
exec("sudo /pfad/zum/script/als_chef.pl", $rueck);
Ja oder einem der vier anderen Mechanismen (das hab ich ja schon gelernt !). Ich glaub passthru ist für mich passend. Vielen Dank für den Tipp, bei Problemen damit oder wenn ichs gelöst hab schreib ich nochmal was dazu, Ralf -- :: Ralf Carlet :: Fon & Fax: +49-(0)700-RALFCARLET :: eMail: ralf@carlet.de :: Web: http://www.carlet.de :: () ascii ribbon campaign - gegen html mail :: /\ - gegen proprietäre attachments
Hallo Ratti und alle Interessierten! Joerg Rossdeutscher schrieb:
Am Fre, 2003-06-27 um 22.50 schrieb Ralf Carlet:
Nachdem mein Wohnungs-Router mittlerweile recht anständig läuft möchte den Auf- und Abbau der ISDN-Wählverbindung etwas komfortabler machen. Dazu möchte ich ein Menü bauen, welches ich im Browser anzeigen und bedienen kann.
Ich habe ein ähnliches Problem gerade gelöst, indem ich einen kleinen Umweg über perl gegangen bin. [...] Mittels sudo und visudo kannst du jetzt das perl-Script freigeben für die Verwendung als root ohne Passwort. [...]
So hab ich es im wesentlichen jetzt auch gemacht. Ich habe sudo installiert und per Visudo (nachdem ich die wichtigsten Tastenbefehle rausbekommen hab, hihi) die /etc/sudoers editiert bzw. folgendes hinzugefügt: wwwrun 192.168.0.0/255.255.255.0=NOPASSWD: /usr/sbin/isdnctrl So kann wwwrun im lokalen Netz isdnctrl benutzen. So gaaanz glücklich bin ich da nicht mit (obwohl hier zu Hause wohl keine ganz so große Gefahr lauert wie in großen Unternehmensnetzen), aber etwas anderes fiel mir nicht ein. Ich möchte ihn noch dazu bekommen, daß er nur die Parameter dial, hangup und status annimmt, meine dazu hab ich in der man-Page was gesehen, aber dazu dann später... Ein Vorschlag der mich per PM erreichte war, wwwrun zur Gruppe uucp hinzuzufügen, aber da hatte ich diese Lösung bereits implementiert und ausserdem gefiel mir das irgendwie auch nicht soooo ganz. Oder ist sudo die schlechtere Lösung? Naja, vielen Dank jedenfalls, es läuft! Gruß, Ralf -- :: Ralf Carlet :: Fon & Fax: +49-(0)700-RALFCARLET :: eMail: ralf@carlet.de :: Web: http://www.carlet.de :: () ascii ribbon campaign - gegen html mail :: /\ - gegen proprietäre attachments
participants (2)
-
Joerg Rossdeutscher
-
Ralf Carlet