seteuid -- set real and/or effective user ID


#include <sys/types.h>
#include <unistd.h>

int seteuid(uid_t euid);


seteuid sets real and effective user ID's of the current process. Un-privileged users may change the real user ID to the effective user ID and vice-versa.

Prior to Linux 1.1.37, the saved ID paradigm, when used with seteuid was broken.

Starting at 1.1.37, it is also possible to set the effective user ID from the saved user ID.

Only the super-user may make other changes.

Supplying a value of -1 for either the real or effective user ID forces the system to leave that ID unchanged.

Currently seteuid(euid) is functionally equivalent to setreuid(-1, euid).

If the real user ID is changed or the effective user ID is set to a value not equal to the previous real user ID, the saved user ID will be set to the new effective user ID.

Return Value

On success, zero is returned. On error, -1 is returned, and errno is set appropriately.



The current process is not the super-user and changes other than (i) swapping the effective user ID with the real user ID or (ii) setting one to the value of the other or (iii) setting the effective user ID to the value of the saved user ID was specified.