setregid(3C)


setregid -- set real and effective group IDs

Synopsis

   #include <unistd.h>
   

int setregid(gid_t rgid, gid_t egid);

Description

setregid is used to set the real and effective group IDs of the calling process. If rgid is -1, the real GID is not changed; if egid is -1, the effective GID is not changed. The real and effective GIDs may be set to different values in the same call.

If the calling process has the P_SETUID privilege, the real GID and the effective GID can be set to any valid value.

If the calling process does not have the P_SETUID privilege, either the real GID can be set to the saved setGID from execv, or the effective GID can either be set to the saved setGID or the real GID. Note: if a setGID process sets its effective GID to its real GID, it can still set its effective GID back to the saved setGID.

<Return> value

Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.

Errors

setregid will fail and neither of the group IDs will be changed if:

EINVAL
The value of rgid or egid is invalid or out of range.

EPERM
The calling process does not have the P_SETUID privilege, and a change other than changing the real GID to the saved setGID, or changing the effective GID to the real GID or the saved GID, was specified.

Compatibility

If a user application calling this routine was compiled on SCO OpenServer, then the P_SETUID privilege is not required.

References

exec(2), getuid(2), setreuid(3C), setuid(2)
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004