setregid(3) C LIBRARY FUNCTIONS setregid(3)
NAME
setregid - set real and effective group IDs
SYNOPSIS
cc [ flag... ] file ... -lucb
int setregid(rgid, egid)
int rgid, 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 effective user ID of the calling
process is super-user, the real GID and the effective GID
can be set to any legal value. If the effective user ID of
the calling process is not super-user, 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. In either case, if the real GID is being changed
(that is, if rgid is not -1), or the effective GID is being
changed to a value not equal to the real GID, the saved set-
GID is set equal to the new effective GID. If the real GID
is changed from its current value, the old value is removed
from the groups access list (see getgroups(2)) if it is
present in that list, and the new value is added to the
groups access list if it is not already present and if this
would not cause the number of groups in that list to exceed
NGROUPS, as defined in /usr/include/sys/param.h.
RETURN VALUE
Upon successful completion, a value of 0 is returned. Oth-
erwise, a value of -1 is returned and errno is set to indi-
cate the error.
ERRORS
setregid will fail and neither of the group IDs will be
changed if:
EPERM The calling process's effective UID is not
the super-user and a change other than chang-
ing the real GID to the saved setGID, or
changing the effective GID to the real GID or
the saved GID, was specified.
SEE ALSO
setreuid(3) exec(2), getuid(2), setuid(2) in the
Programmer's Reference Manual.
Last change: BSD Compatibility Package 1