PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache - sudo als nobody ausführen



Phate1
19.02.07, 22:21
Hallo,

kann man in einem Shellscript mit cgi auch sudo-Befehle ausführen? Wollte so den Status meiner ISDN-Karte überprüfen, klappt aber nicht so wie gedacht.


nobody ALL=NOPASSWD: /usr/bin/isdnstatus

Achso, isdnstatus gibt nur "isdnctrl status ippp0" wieder. Wenn ich jetzt im script

echo `sudo isdnstatus`
eingebe sagt er, dass der Server fehlkonfiguriert ist

der gleiche Eintrag mit meinen normalen Account funktioniert aber.

Danke schonmal
lg
Phate

zyrusthc
20.02.07, 00:30
Sieht mir nach einem Syntaxfehler in der /etc/sudoers aus.
Versuche es doch mal so:

www-data ALL=(nobody)NOPASSWD: /usr/bin/isdnstatus

www-data ist der Benutzer unter dem der Webserver läuft.
Quasi erlaube user www-data den Befehl /usr/bin/isdnstatus als user nobody ohne Passwort auszuführen.

PS: /etc/sudoers ausschliesslich mit visudo bearbeiten!

Greeez Oli

Phate1
20.02.07, 15:42
Danke erstmal :)

So, hab die obere Zeile auskommentiert und deine benutzt. Kann das Script immer noch nicht ausführen.

Und ich dachte die Scripte werden als nobody ausgeführt, wenn man im Script whoami schreibt gibt er nobody zurück, oder irr ich mich da?

lg
Phate

/edit: Falls es falsch rüber gekommen ist, ich möchte nur, dass das Script die Datei ausführen kann, mir ist egal als welcher Benutzer (vielleicht etwas unclever der Titel ;) )
Und noch ne Erweiterung die ich gerad herausgefunden habe. In den Apache-Logs:

[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147] We trust you have received the usual lecture from the local System
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147] Administrator. It usually boils down to these three things:
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147]
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147] #1) Respect the privacy of others.
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147] #2) Think before you type.
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147] #3) With great power comes great responsibility.
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147]
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147] Password:
[Tue Feb 20 17:24:55 2007] [error] [client 192.168.0.147]

also möchte er doch dass Passwort haben, obwohl NOPASSWD in der sudoers-Datei steht.

zyrusthc
20.02.07, 16:19
Muss es den unbedingt über cgi sein ?
Mache es doch einfach über php!

$output = shell_exec("sudo -u nobody /usr/bin/isdnstatus");
echo $output;

Phate1
20.02.07, 17:16
Ok, hat jetzt geklappt. Das Problem war nicht die sudo-Recht (naja eigentlich schon).

Hab einfach kurz nobody volle rechte gegeben und sudo isdnstatus ausgeführt, danach die Rechte wieder so gesetzt wie ich sieh möchte. Jetzt klappts (sudo möchte beim ersten ausführen des Befehls das Passwort, danach nicht mehr)

Ok, trotzdem Danke :)