OpenSuSE Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
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:
<
http://star2.abcm.com/cgi-bin/bsdi-man?query=setgid32&sektion=2&manpath=>

home | help