setgid - set group identity
int setgid(gid_t gid);
() sets the effective group ID of the calling process. If the
caller is the superuser, the real GID and saved set-group-ID are also set.
Under Linux, setgid
() is implemented like the POSIX version with the
feature. This allows a set-group-ID program that is
not set-user-ID-root to drop all of its group privileges, do some
un-privileged work, and then reengage the original effective group ID in a
On success, zero is returned. On error, -1 is returned, and errno
- The calling process is not privileged (does not have the
CAP_SETGID capability), and gid does not match the real
group ID or saved set-group-ID of the calling process.
The original Linux setgid
() system call supported only 16-bit group IDs.
Subsequently, Linux 2.4 added setgid32
() supporting 32-bit IDs. The
() wrapper function transparently deals with the variation
across kernel versions.
This page is part of release 3.44 of the Linux man-pages
description of the project, and information about reporting bugs, can be found