🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.os.linux
Article #9

[Q] fopen verhindert sete[ug]id - Warum?

#9
From: Martin Schulze
Date: Sun, 13 Aug 1995 09:57
55 lines
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
Technical Details
Message-ID: <40kib6$7cn@finlandia.infodrom.north.de>
Path: arc1-ca.pugleaf.net!caty.ol.sub.de!indrom!finlandia!usenet

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!caty.ol.sub.de!indrom!finlandia!usenet
From: joey@finlandia.infodrom.north.de (Martin Schulze)
Newsgroups: de.comp.os.linux,de.comp.lang.c
Subject: [Q] fopen verhindert sete[ug]id - Warum?
Followup-To: de.comp.os.linux
Date: 13 Aug 1995 11:57:58 +0200
Organization: Infodrom Oldenburg
Message-ID: <40kib6$7cn@finlandia.infodrom.north.de>
NNTP-Posting-Host: finlandia.infodrom.north.de