setegid -- set real and / or effective group ID


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

int setegid(gid_t egid);


setegid sets real and effective group ID's of the current process. Unprivileged 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 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.



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.