SETUID(3V) — C LIBRARY FUNCTIONS
NAME
setuid, seteuid, setruid, setgid, setegid, setrgid − set user and group ID
SYNOPSIS
#include <sys/types.h>
int setuid(uid)
uid_t uid;
int seteuid(euid)
uid_t euid;
int setruid(ruid)
uid_t ruid;
int setgid(gid)
gid_t gid;
int setegid(egid)
gid_t egid;
int setrgid(rgid)
gid_t rgid;
DESCRIPTION
setuid() (setgid()) sets both the real and effective user ID (group ID) of the current process as specified by uid (gid) (see NOTES).
seteuid() (setegid()) sets the effective user ID (group ID) of the current process.
setruid() (setrgid()) sets the real user ID (group ID) of the current process.
These calls are only permitted to the super-user or if the argument is the real or effective user (group) ID of the calling process.
SYSTEM V DESCRIPTION
If the effective user ID of the calling process is not super-user, but if its real user (group) ID is equal to uid (gid), or if the saved set-user (group) ID from execve(2V) is equal to uid (gid), then the effective user (group) ID is set to uid (gid).
RETURN VALUES
These functions return:
0 on success.
−1 on failure and set errno to indicate the error as for setreuid(2) (setregid(2)).
ERRORS
EINVAL The value of uid (gid) is invalid (less than 0 or greater than 65535).
EPERM The process does not have super-user privileges and uid (gid) does not matches neither the real user (group) ID of the process nor the saved set-user-ID (set-group-ID) of the process.
SEE ALSO
execve(2V), getgid(2V), getuid(2V), setregid(2), setreuid(2)
NOTES
For setuid() to behave as described above, {_POSIX_SAVED_IDS} must be in effect (see sysconf(2V)). {_POSIX_SAVED_IDS} is always in effect on OS/MP systems, but for portability, applications should call sysconf() to determine whether {_POSIX_SAVED_IDS} is in effect for the current system.
Solbourne Computer, Inc. — 21 January 1990