HP-UX Reference (11i v1 05/09) - 2 System Calls (vol 5)

s
setuid(2) setuid(2)
NAME
setuid, setgid - set user and group IDs
SYNOPSIS
#include <unistd.h>
int setuid(uid_t uid);
int setgid(gid_t gid);
DESCRIPTION
setuid() sets the real-user-ID (ruid), effective-user-
ID (euid), and/or saved-user-ID (suid) of the calling
process. The super-users euid is zero. The following conditions govern setuid’s behavior:
If the euid is zero,
setuid()
sets the ruid, euid, and suid to uid.
If the euid is not zero, but the argument uid is equal to the ruid or the suid,
setuid() sets the
euid to uid; the ruid and suid remain unchanged. (If a set-user-
ID program is not running as
super-user, it can change its euid to match its ruid and reset itself to the previous euid value.)
If euid is not zero, but the argument uid is equal to the euid, and the calling process is a member
of a group that has the
PRIV_SETRUGID
privilege (see privgrp(4)), setuid() sets the ruid to
uid; the euid and suid remain unchanged.
setgid() sets the real-group-ID (rgid), effective-group-
ID (egid), and/or saved-group-ID (sgid) of the cal-
ling process. The following conditions govern
setgid()’s behavior:
If euid is zero, setgid() sets the rgid and egid to gid.
If euid is not zero, but the argument gid is equal to the rgid or the sgid,
setgid() sets the egid
to gid; the rgid and sgid remain unchanged.
If euid is not zero, but the argument gid is equal to the egid, and the calling process is a member of
a group that has the
PRIV_SETRUGID
privilege (see privgrp(4)), setgid() sets the rgid to
gid; the egid and sgid remain unchanged.
RETURN VALUE
Upon successful completion,
setuid() and setgid() returned 0; otherwise, they return 1 and set
errno to indicate the error.
ERRORS
setuid() and setgid() fail and return 1 if any of the following conditions are encountered:
[EPERM] None of the conditions above are met.
[EINVAL] uid (gid) is not a valid user (group)
ID.
WARNINGS
It is recommended that the PRIV_SETRUGID
capability be avoided, as it is provided for backward com-
patibility. This feature may be modified or dropped from future
HP-UX releases. When changing the real
user ID and real group ID, use of setresuid() and setresgid() (see setresuid(2)) are recommended
instead.
AUTHOR
setuid() was developed by AT&T, the University of California, Berkeley, and HP.
setgid() was developed by AT&T.
SEE ALSO
exec(2), getprivgrp(2), getuid(2), setresuid(2) privgrp(4).
STANDARDS CONFORMANCE
setuid(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1
setgid(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1
HP-UX 11i Version 1: September 2005 1 Hewlett-Packard Company Section 2343