setregid, setegid - set real and / or effective group ID


SYNOPSIS

       #include <sys/types.h>
       #include <unistd.h>

       int setregid(gid_t rgid, gid_t egid);
       int setegid(gid_t egid);


DESCRIPTION

       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 group ID.

       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.


RETURN VALUE

       On  success,  zero is returned.  On error, -1 is returned,
       and errno is set appropriately.


ERRORS

       EPERM  The current  process  is  not  the  super-user  and
              changes other than (i) swapping the effective group
              ID with the real group ID or (ii)  setting  one  to
              the  value of the other or (iii) setting the effec­
              tive group ID to the value of the  saved  group  ID
              was specified.


CONFORMING TO

       BSD  4.3  (the  setregid  function  call first appeared in
       4.2BSD).


SEE ALSO

       getgid(2), setgid(2)