HPlogo HP-UX Reference Volume 3 of 5 > s

setuid(2)

» 

Technical documentation

Complete book in PDF

 » Table of Contents

 » Index

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.

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

© Hewlett-Packard Development Company, L.P.