[Previous] [Contents] [Next]

setregid()

Set real and effective group IDs

Synopsis:

#include <unistd.h>

int setregid( gid_t rgid, 
              gid_t egid );

Library:

libc

Description:

The setregid() function sets the real and effective group IDs of the calling process. If rgid or egid is -1, the corresponding real or effective group ID is left unchanged.

If the effective user ID of the calling process is the superuser, the real group ID and the effective group ID can be set to any legal value.

If the effective user ID of the calling process isn't the superuser, either the real group ID can be set to the saved set-group ID, or the effective group ID can be set to either the saved set-group ID or the real group ID.


Note: 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.

The "superuser" is defined as any process with an effective user ID of 0, or an effective user ID of root.

In either case, if the real group ID is being changed (rgid isn't -1), or the effective group ID is being changed to a value not equal to the real group ID, the saved set-group ID is set to the new effective group ID.

Returns:

0
Success.
-1
An error occurred (errno is set).

Errors:

EINVAL
The rgid or egid is out of range.
EPERM
The calling process isn't the superuser, and an attempt was made to change the effective group ID to a value other than the real or saved set-group ID.

Or

The calling process isn't the superuser, and an attempt was made to change the real group ID to a value other than the effective group ID.

Classification:

Standard Unix

Safety:
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

execve(), getgid(), setreuid(), setuid()


[Previous] [Contents] [Next]