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-user’s 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 2−−343