Thread View: de.comp.os.linux
2 messages
2 total messages
Started by Martin Schulze
Sun, 13 Aug 1995 09:57
[Q] fopen verhindert sete[ug]id - Warum?
Author: Martin Schulze
Date: Sun, 13 Aug 1995 09:57
Date: Sun, 13 Aug 1995 09:57
55 lines
2428 bytes
2428 bytes
Hallo Leutz!
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.
Jetzt die Frage: Was passiert an der Stelle, das die Sache kaputt
machen kann? Koennte das ein Fehler im Kernel sein? Ich habe 1.2.11,
libc 4.6.27.
Die "Datei' wird uebrigens auch wieder geschlossen:
----------------------------- happs 8<------------------------------
FILE *f;
f=fopen("/proc/self/cmdline","r");
if (!f) {
fprintf(stderr, "check_pid: Cannot open /proc/self/cmdline, huh?\n");
return 0;
}
fscanf(f,"%s", &mycmdln);
fclose(f);
----------------------------- happs 8<------------------------------
Vielen Dank fuer die zahlreichen Vorschlaege,
Joey
--
/ Martin Schulze * joey@infodrom.north.de * 26129 Oldenburg /
/ +49-441-777884 * Login&Passwd: nuucp * Index: ~/ls-lR.gz /
/ http://home.pages.de/~joey/
/ The only stupid question is the unasked one /
----------------------------------------------------------------
12.8.95: Oldenburger Usenet(ter)-Treffen in Wildeshausen
Re: [Q] fopen verhindert sete[ug]id - Warum?
Author: 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/ ....................(_)/ (_)
~^~~~~~~~^~~~~^~~~~<~^~^~~~^|
-- |
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads