setuid(2) setuid(2)
NAME
setuid, setgid - set user and group IDs
SYNOPSIS
#include <sys/types.h>
#include <unistd.h>
int setuid(uidt uid);
int setgid(gidt gid);
DESCRIPTION
The setuid() system call sets the real user ID, effective user ID, and
saved user ID of the calling process. The setgid() system call sets
the real group ID, effective group ID, and saved group ID of the cal-
ling process.
At login time, the real user ID, effective user ID, and saved user ID
of the login process are set to the login ID of the user responsible
for the creation of the process. The same is true for the real, effec-
tive, and saved group IDs; they are set to the group ID of the user
responsible for the creation of the process.
When a process calls exec(2) to execute a file, the user and/or group
identifiers associated with the process can change. If the file exe-
cuted is a "set-user-ID" file, the effective and saved user IDs of the
process are set to the owner of the file executed. If the file exe-
cuted is a "set-group-ID" file, the effective and saved group IDs of
the process are set to the group of the file executed. If the file
executed is not a "set-user-ID" or "setgroup-ID" file, the user ID,
saved user ID, effective group ID, and saved group ID are not changed.
setuid() If the effective user ID of the process calling setuid() is
the superuser, the real, effective, and saved user IDs are
set to the uid.
If the effective user ID of the calling process is not the
superuser, but uid is either the real user ID or the saved
user ID of the calling process, the effective user ID is
set to uid.
setgid() If the effective user ID of the process calling setgid() is
the superuser, the real, effective, and saved group IDs are
set to the gid.
If the effective user ID of the calling process is not the
superuser, but gid is either the real group ID or the saved
group ID of the calling process, the effective group ID is
set to gid.
Page 1 Reliant UNIX 5.44 Printed 11/98
setuid(2) setuid(2)
setuid() and setgid() fail if one or more of the following apply:
EPERM In the case of setuid(), if the effective user ID is not
the superuser, and the uid parameter does not match either
the real or saved user IDs.
In the case of setgid(), if the effective user ID is not
the superuser, and the gid parameter does not match either
the real or saved group IDs.
EINVAL uid or gid is out of the valid range.
RESULT
Upon successful completion, a value of 0 is returned. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
SEE ALSO
exec(2), getgroups(2), getuid(2), stat(5).
Page 2 Reliant UNIX 5.44 Printed 11/98