The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

#### NAME

> setgid - set-group-ID

#### SYNOPSIS

> ``#include <unistd.h>
> int setgid(gid_t` gid`);
> ``

#### DESCRIPTION

> If the process has appropriate privileges, setgid() shall set the real group ID, effective group ID, and the saved set-group-ID of the calling process to gid.

> If the process does not have appropriate privileges, but gid is equal to the real group ID or the saved set-group-ID, setgid() shall set the effective group ID to gid; the real group ID and saved set-group-ID shall remain unchanged.

> The setgid() function shall not affect the supplementary group list in any way.

> Any supplementary group IDs of the calling process shall remain unchanged.

#### RETURN VALUE

> Upon successful completion, 0 is returned. Otherwise, -1 shall be returned and errno set to indicate the error.

#### ERRORS

> The setgid() function shall fail if:

> [EINVAL]
>   The value of the gid argument is invalid and is not supported by the implementation.
> [EPERM]
>   The process does not have appropriate privileges and gid does not match the real group ID or the saved set-group-ID.

The following sections are informative.

#### EXAMPLES

> None.

#### APPLICATION USAGE

> None.

#### RATIONALE

> Refer to the RATIONALE section in setuid().

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> exec(), getegid(), geteuid(), getgid(), getuid(), setegid(), seteuid(), setregid(), setreuid(), setuid(), the Base Definitions volume of IEEE Std 1003.1-2001, <sys/types.h>, <unistd.h>

#### CHANGE HISTORY

> First released in Issue 1. Derived from Issue 1 of the SVID.

#### Issue 6

> In the SYNOPSIS, the optional include of the <sys/types.h> header is removed.

> The following new requirements on POSIX implementations derive from alignment with the Single UNIX Specification:

> - The requirement to include <sys/types.h> has been removed. Although <sys/types.h> was required for conforming implementations of previous POSIX specifications, it was not required for UNIX applications.

> - Functionality associated with _POSIX_SAVED_IDS is now mandated. This is a FIPS requirement.

> The following changes were made to align with the IEEE P1003.1a draft standard:

> - The effects of setgid() in processes without appropriate privileges are changed.

> - A requirement that the supplementary group list is not affected is added.

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]