setuid(2) setuid(2)
NAME
setuid, setgid - Benutzer- und Gruppennummer einstellen
SYNTAX
#include <sys/types.h>
#include <unistd.h>
int setuid(uidt uid);
int setgid(gidt gid);
BESCHREIBUNG
Der Systemaufruf setuid() setzt die reale Benutzernummer, die effek-
tive Benutzernummer und die gesicherte Benutzernummer des aufrufenden
Prozesses. Der Systemaufruf setgid() setzt die reale Gruppennummer,
die effektive Gruppennummer und die gesicherte Gruppennummer des auf-
rufenden Prozesses.
Beim Login werden die reale Benutzernummer, die effektive Benutzernum-
mer und die gesicherte Benutzernummer des Login-Prozesses auf die
Login-Nummer des Benutzers gesetzt, der für die Erzeugung des Prozes-
ses verantwortlich ist. Dasselbe gilt für die reale, effektive und
gesicherte Gruppennummer; sie werden auf die Gruppennummer des Benut-
zers gesetzt, der für die Erzeugung des Prozesses verantwortlich ist.
Wenn ein Prozeß exec(2) aufruft, um eine Datei auszuführen, können
sich die Benutzer- und/oder Gruppennummern, die mit dem Prozeß verbun-
den sind, ändern. Wenn die ausgeführte Datei eine "set-user-ID"-Datei
ist, werden die effektive und gesicherte Benutzernummer des Prozesses
auf den Benutzer der ausgeführten Datei gesetzt. Wenn die ausgeführte
Datei eine "set-group-ID"-Datei ist, werden die effektive und gesi-
cherte Gruppennummer des Prozesses auf die Gruppe der ausgeführten
Datei gesetzt. Wenn die Datei keine "set-user-ID"- oder "set-group-
ID"-Datei ist, werden die effektive Benutzernummer, die gesicherte
Benutzernummer, die effektive Gruppennummer und die gesicherte Grup-
pennummer nicht verändert.
setuid()
Wenn die effektive Benutzernummer des Prozesses, der setuid()
aufruft, der des Systemverwalters entspricht, werden die reale,
effektive und gesicherte Benutzernummer auf uid gesetzt.
Wenn die effektive Benutzernummer des aufrufenden Prozesses nicht
die des Systemverwalters ist, aber uid entweder die reale Benut-
zernummer oder die gesicherte Benutzernummer des aufrufenden Pro-
zesses ist, wird die effektive Benutzernummer auf uid gesetzt.
setgid()
Wenn die effektive Gruppennummer des Prozesses, der
setgid()aufruft, der des Systemverwalters entspricht, werden die
reale, effektive und gesicherte Gruppennummer auf gid gesetzt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
setuid(2) setuid(2)
Wenn die effektive Benutzernummer des aufrufenden Prozesses nicht
die des Systemverwalters ist, aber gid entweder die reale Grup-
pennummer oder die gesicherte Gruppennummer des aufrufenden Pro-
zesses ist, wird die effektive Gruppennummer auf gid gesetzt.
setuid() und setgid() scheitern, wenn eine oder mehrere der folgenden
Bedingungen zutreffen:
EPERM Bei setuid(): Wenn die effektive Benutzernummer nicht die
des Systemverwalters ist und der Parameter uid nicht auf die
reale oder gesicherte Benutzernummer paßt.
Bei setgid(): Wenn die effektive Benutzernummer nicht die
des Systemverwalters ist und der Parameter gid nicht auf die
reale oder gesicherte Gruppennummer paßt.
EINVAL uid oder gid liegen außerhalb des Gültigkeitsbereichs.
ERGEBNIS
Bei erfolgreicher Beendigung wird 0 zurückgegeben. Sonst wird -1
zurückgegeben und errno wird gesetzt, um den Fehler anzuzeigen.
SIEHE AUCH
exec(2), getgroups(2), getuid(2), stat(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98