Meinhard Schneider wrote:
Mein Problem: Ich will ein CGI mit suid-root ausführen. Notfalls kann auch das CGI ein anderes Programm mit suid-root aufrufen. Ihr habt mir gesagt, ich soll in C einen Wrapper schreiben (warum, weiss ich nicht ;-)).
Bei einem SUID-Programm sind reale und effektive User-ID unterschiedlich. Bei einem Shell- oder Perl-Skript setzt der Interpreter (bash bzw. perl) in so einem Fall die effektive User-ID wieder zurueck, so dass der Effekt dahin ist.
Nun, dass hab ich gemacht. Ich weiss nur nicht, wie man in C eine if-Abfrage macht ;-)).
Die Syntax ist weitgehend mit der von Perl identisch, allerdings sind String-Vergleiche nicht ganz so einfach (siehe unten).
Hier man Programm: --<SCHNIPP>-- #include
main(ac, av) char **av; { execv("/bin/uname"); } --<SCHNAPP>-- Leider führt das Programm uname nicht aus ;-))
Der execv()-Aufruf stimmt auch nicht ganz. Zusaeztlich zum Pfad des auszufuehrenden Programms ist auch eine Argumentliste zu uebergeben. Dabei ist das erste Argument (argv[0]) in der Regel noch einmal der Programmname. Naeheres siehe `man execv`.
Ich schreibe mal das selbe in perl. vielleich ist jemand so nett und kann es mir in C/C++ übersetzen?! --<SCHNIPP>-- #!/usr/bin/perl -w
if($ARGV[0] eq '--runq') { system("/etc/skripts/runq"); }; if($ARGV[0] eq '--popmail') { system("/etc/skripts/poll"); }; ... --<SCHNAPP>-- Kann jemand mir das übersetzen? many THX!!!!!
Ich bin mal nicht so ;-)
#include
Wenn ich nun mein compiletes Programm, habe, soll ich darauf suid-root setzen und es dann aus meinem CGI heraus aufrufen? Funktioniert das?
Ja. Wenn Du allerdings ein Skript aufrufen willst, muss der Trick mit dem Setzen der realen UID gemacht werden, sonst hast Du nichts gewonnen.
Oder soll ich aus dem C-Programm ein anderes Programm/Skript aufrufen, was suid-root ist??
Dann koenntest Du es auch gleich direkt aufrufen. Wie gesagt, bei einem bash- oder Perl-Skript wird SUID vom Interpreter aus Sicherheitsgruenden ignoriert (bzw. unwirksam gemacht), genau deshalb ist dafuer ein Wrapper noetig. Fuer perl gibt es alternativ ein spezielles suidperl, das SUID-Skripte auch direkt ermoeglicht. Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org - eilert@linuxfreak.com http://www.informatik.uni-bremen.de/~eilert/ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (1)
-
eilert@Informatik.Uni-Bremen.DE