setuid(2) setuid(2)
NAME [Toc] [Back]
setuid, setgid - set user and group IDs
SYNOPSIS [Toc] [Back]
#include <unistd.h>
int setuid(uid_t uid);
int setgid(gid_t gid);
DESCRIPTION [Toc] [Back]
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 calling 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 [Toc] [Back]
Upon successful completion, setuid() and setgid() returned 0;
otherwise, they return -1 and set errno to indicate the error.
ERRORS [Toc] [Back]
setuid() and setgid() fail and return -1 if any of the following
conditions are encountered:
Hewlett-Packard Company - 1 - HP-UX 11i Version 2: August 2003
setuid(2) setuid(2)
[EPERM] None of the conditions above are met.
[EINVAL] uid (gid) is not a valid user (group) ID.
WARNINGS [Toc] [Back]
It is recommended that the PRIV_SETRUGID capability be avoided, as it
is provided for backward compatibility. 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 [Toc] [Back]
setuid() was developed by AT&T, the University of California,
Berkeley, and HP.
setgid() was developed by AT&T.
SEE ALSO [Toc] [Back]
exec(2), getprivgrp(2), getuid(2), setresuid(2) privgrp(4).
STANDARDS CONFORMANCE [Toc] [Back]
setuid(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1
setgid(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1
Hewlett-Packard Company - 2 - HP-UX 11i Version 2: August 2003 [ Back ] |