setregid, setegid - set real and / or effective group ID
int setregid(gid_t rgid, gid_t egid));
int setegid(gid_t egid));
setregid sets real and effective group ID's of the current
process. Un-privileged users may change the real group ID
to the effective group ID and vice-versa.
Prior to Linux 1.1.38, the saved ID paradigm, when used with
setregid or setegid was broken. Starting at 1.1.38, it is
also possible to set the effective group ID from the saved
Only the super-user may make other changes.
Supplying a value of -1 for either the real or effective
group ID forces the system to leave that ID unchanged.
Currently (libc-4.x.x), setegid(egid)) is functionally
equivalent to setregid(-1, egid)).
If the real group ID is changed or the effective group ID is
set to a value not equal to the previous real group ID, the
saved group ID will be set to the new effective group ID.
On success, zero is returned. On error, -1 is returned, and
errno is set appropriately.
BSD 4.3 (the setregid function call first appeared in