SETREGID(2) | System Calls | SETREGID(2) |
setregid - set real and effective group IDs
#include <unistd.h> int setregid(gid_t rgid, gid_t egid);
The setregid() function is used to set the real and effective group IDs of the calling process. If rgid is −1, the real group ID is not changed; if egid is −1, the effective group ID is not changed. The real and effective group IDs may be set to different values in the same call.
If the {PRIV_PROC_SETID} privilege is asserted in the effective set of the calling process, the real group ID and the effective group ID can be set to any legal value.
If the {PRIV_PROC_SETID} privilege is not asserted in the effective set of the calling process, either the real group ID can be set to the saved set-group-ID from execve(2), or the effective group ID can either be set to the saved set-group-ID or the real group ID.
In either case, if the real group ID is being changed (that is, if rgid is not −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 equal to the new effective group ID.
Upon successful completion, 0 is returned. Otherwise, −1 is returned, errno is set to indicate the error, and neither of the group IDs will be changed.
The setregid() function will fail if:
EINVAL
EPERM
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.
See attributes(7) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Standard |
execve(2), getgid(2), setreuid(2), setuid(2), attributes(7), privileges(7), standards(7)
March 22, 2004 | OmniOS |