Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exec(2)

getprivgrp(2)

getuid(2)

setresuid(2)

privgrp(4)

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 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

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 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

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, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1

setgid(): AES, SVID2, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1

Hewlett-Packard Company  —  HP-UX Release 9.0: August 1992

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026