SETREGID(2)         Linux Programmer's Manual         SETREGID(2)

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

       #include <unistd.h>

       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 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

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

       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
               effective group ID to the value of the saved group
               ID was specified.

       BSD  4.3  (the  setregid  function  call first appeared in

       getgid(2), setgid(2)

Linux 1.1.38             2nd August 1994                        1