x SuSE Linux 13.1-RELEASE x
x SuSE Linux 13.1-RELEASEx
setgid(2) System Calls Manual setgid(2)
NAME
setgid - set group identity
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <unistd.h>
int setgid(gid_t gid);
DESCRIPTION
setgid() sets the effective group ID of the calling process. If the
calling process is privileged (more precisely: has the CAP_SETGID capa-
bility in its user namespace), the real GID and saved set-group-ID are
also set.
Under Linux, setgid() is implemented like the POSIX version with the
_POSIX_SAVED_IDS 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
secure manner.
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is
set to indicate the error.
ERRORS
EINVAL The group ID specified in gid is not valid in this user name-
space.
EPERM The calling process is not privileged (does not have the
CAP_SETGID capability in its user namespace), and gid does not
match the real group ID or saved set-group-ID of the calling
process.
VERSIONS
C library/kernel differences
At the kernel level, user IDs and group IDs are a per-thread attribute.
However, POSIX requires that all threads in a process share the same
credentials. The NPTL threading implementation handles the POSIX re-
quirements by providing wrapper functions for the various system calls
that change process UIDs and GIDs. These wrapper functions (including
the one for setgid()) employ a signal-based technique to ensure that
when one thread changes credentials, all of the other threads in the
process also change their credentials. For details, see nptl(7).
STANDARDS
POSIX.1-2008.
HISTORY
POSIX.1-2001, SVr4.
The original Linux setgid() system call supported only 16-bit group
IDs. Subsequently, Linux 2.4 added setgid32() supporting 32-bit IDs.
The glibc setgid() wrapper function transparently deals with the varia-
tion across kernel versions.
SEE ALSO
getgid(2), setegid(2), setregid(2), capabilities(7), credentials(7),
user_namespaces(7)
Linux man-pages 6.04 2023-03-30 setgid(2)
Want to link to this manual page? Use this URL:
<https://star2.abcm.com/cgi-bin/bsdi-man?query=setgid&sektion=2&manpath=>