setreuid, seteuid − setze reale und/oder effektive Benutzerkennung
#include <unistd.h>
int setreuid(uid_t ruid, uid_t euid);
int seteuid(uid_t euid);
setreuid setzt die reale und effektive Benutzerkennung des aktuellen Prozesses. Unprivilegierte Benutzer dürfen die reale Benutzerkennung auf die effektive Benutzerkennung ändern und umgekehrt.
Seit 1.1.38 ist es auch möglich, die effektive Benutzerkennung aus der gesicherten Benutzerkennung zu setzen.
Nur der Superuser darf andere Änderungen vornehmen.
Angeben des Wertes −1 für entweder die reale oder effektive Benutzerkennung weist das System an, diese Kennung unverändert zu lassen.
Im Moment (libc-4.x.x) ist seteuid(euid) funktionell äquivalent zu setreuid(-1, euid).
Wenn die reale Benutzerkennung geändert wird, oder wenn die effektive Benutzerkennung auf einen Wert gesetzt wird, der nicht gleich der vorherigen realen Benutzerkennung ist, so wird die gesicherte Benutzerkennung auf die neue effektive Benutzerkennung gesetzt.
Bei Erfolg wird Null zurückgegeben. Im Fehlerfall wird −1 zurückgegeben und errno entsprechend gesetzt.
EPERM |
Der aktuelle Prozess gehört nicht dem Superuser und eine andere Änderung als (i) Vertauschen der effektiven mit der realen Benutzerkennung oder (ii) Setzen einer dieser auf den Wert den anderen oder (iii) Setzen der effektiven Benutzerkennung auf den Wert der gesicherten Benutzerkennung wurde angestrebt. |
Die Funktion setregid erschien in BSD 4.2.
BSD 4.3