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

> setregid - set real and effective group IDs

#### SYNOPSIS

> ``[XSI] #include <unistd.h>
> int setregid(gid_t` rgid`, gid_t` egid`);``
> `
> `

#### DESCRIPTION

> The setregid() function shall set the real and effective group IDs of the calling process.

> If rgid is -1, the real group ID shall not be changed; if egid is -1, the effective group ID shall not be changed.

> The real and effective group IDs may be set to different values in the same call.

> Only a process with appropriate privileges can set the real group ID and the effective group ID to any valid value.

> A non-privileged process can set either the real group ID to the saved set-group-ID from one of the exec family of functions, or the effective group ID to the saved set-group-ID or the real group ID.

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

#### RETURN VALUE

> Upon successful completion, 0 shall be returned. Otherwise, -1 shall be returned and errno set to indicate the error, and neither of the group IDs are changed.

#### ERRORS

> The setregid() function shall fail if:

> [EINVAL]
>   The value of the rgid or egid argument is invalid or out-of-range.
> [EPERM]
>   The process does not have appropriate privileges and a change other than changing the real group ID to the saved set-group-ID, or changing the effective group ID to the real group ID or the saved set-group-ID, was requested.

The following sections are informative.

#### EXAMPLES

> None.

#### APPLICATION USAGE

> If a set-group-ID process sets its effective group ID to its real group ID, it can still set its effective group ID back to the saved set-group-ID.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

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

#### CHANGE HISTORY

> First released in Issue 4, Version 2.

#### Issue 5

> Moved from X/OPEN UNIX extension to BASE.

> The DESCRIPTION is updated to indicate that the saved set-group-ID can be set by any of the exec family of functions, not just execve().

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 ]