Article View: de.comp.os.linux
Article #10Re: [Q] fopen verhindert sete[ug]id - Warum?
From: Kai Thoene
Date: Mon, 14 Aug 1995 15:14
Date: Mon, 14 Aug 1995 15:14
64 lines
2954 bytes
2954 bytes
In article <40kib6$7cn@finlandia.infodrom.north.de>,
joey@finlandia.infodrom.north.de says...
>
>Ich habe ein Problem mit einem Programm, das als root gestartet wird
>und dann seine uid/gid aendern soll.
>
>Diese Anweisung
>
> ------------------------- happs 8<--------------------------
> f=fopen("/proc/self/cmdline","r");
> ------------------------- happs 8<--------------------------
>
> hat zu einem spaeteren Zeitpunkt zur Folge, dass Fehler auftreten:
>
> ------------------------- happs 8<--------------------------
> if (seteuid(RUN_UID)) fprintf (stderr, "uid: errno %d\n", errno);
> if (setegid(RUN_GID)) fprintf (stderr, "gid: errno %d\n", errno);
> ------------------------- happs 8<--------------------------
>
>seteuid laeuft ohne Fehler durch. In der Prozesstabelle (/proc und ps)
>laeuft das Programm aber immer noch als root und nicht als RUN_UID.
>
>Das setegid produziert einen Fehler, errno=1 (EPERM /* Operation not
>permitted */).
>
>Wenn ich das fopen weglasse bzw. vorher aus der Funktion returniere,
>habe ich an der sete[ug]id Stelle kein Problem.
>
1. [Prozesstabelle] ps zeigt die *real* user id, die natuerlich mit
setuid() geaendert werden sollte.
2. [Fehler: setegid] setegid() sollte auf jeden Fall vor (!) seteuid()
aufgerufen werden, da sich der Prozess evtl. selbst die Erlaubnis
fuer ein nachfolgendes setegid() nimmt.
if( setgid(RUN_GID) ) ...; /* real group id */
if( setuid(RUN_UID) ) ...; /* real user id */
if( setegid(RUN_GID) ) ...; /* effective group id */
if( seteuid(RUN_UID) ) ...; /* effective user id */
--
EPERM For setuid() and seteuid() the effective user of
the calling process is not super-user, and the uid
parameter does not match either the real or saved
user IDs. For setgid() and setegid() the effec-
tive user of the calling process is not the
super-user, and the gid parameter does not match
either the real or saved group IDs.
--
Zu der Sache mit dem Datei-handle faellt mir z.Zt. nichts ein.
Gruss,
Kai.
--
Kai Thoene email: Kai.Thoene@Materna.DE
Dr. Materna GmbH, Vosskuhle 37, 44141 Dortmund
(From: ... see above - may be incorrect!) __o
_`\<,_
__o/ ....................(_)/ (_)
~^~~~~~~~^~~~~^~~~~<~^~^~~~^|
-- |
Technical Details
Message-ID:
<40np93$287@peanuts.Materna.DE>Path:
arc1-ca.pugleaf.net!Materna.DE!rootReferences:
<40kib6$7cn@finlandia.infodrom.north.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!Materna.DE!root From: Kai.Thoene@Materna.DE (Kai Thoene) Newsgroups: de.comp.os.linux,de.comp.lang.c Subject: Re: [Q] fopen verhindert sete[ug]id - Warum? Date: 14 Aug 1995 15:14:43 GMT Organization: Dr. Materna GmbH Message-ID: <40np93$287@peanuts.Materna.DE> References: <40kib6$7cn@finlandia.infodrom.north.de> NNTP-Posting-Host: is_es46.materna.de Mime-Version: 1.0 X-Newsreader: WinVN 0.93.14