summaryrefslogtreecommitdiffstats
path: root/man2/getgroups.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/getgroups.2')
-rw-r--r--man2/getgroups.2219
1 files changed, 0 insertions, 219 deletions
diff --git a/man2/getgroups.2 b/man2/getgroups.2
deleted file mode 100644
index d00dc9e..0000000
--- a/man2/getgroups.2
+++ /dev/null
@@ -1,219 +0,0 @@
-.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
-.\" and Copyright (C) 2008, 2010, 2015, Michael Kerrisk <mtk.manpages@gmail.com>
-.\"
-.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.\"
-.\" Modified Thu Oct 31 12:04:29 1996 by Eric S. Raymond <esr@thyrsus.com>
-.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
-.\" Added notes on capability requirements
-.\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN
-.\" VALUE, made style of page more consistent with man-pages style.
-.\"
-.TH getgroups 2 2023-10-31 "Linux man-pages 6.7"
-.SH NAME
-getgroups, setgroups \- get/set list of supplementary group IDs
-.SH LIBRARY
-Standard C library
-.RI ( libc ", " \-lc )
-.SH SYNOPSIS
-.nf
-.B #include <unistd.h>
-.P
-.BI "int getgroups(int " size ", gid_t " list []);
-.P
-.B #include <grp.h>
-.P
-.BI "int setgroups(size_t " size ", const gid_t *_Nullable " list );
-.fi
-.P
-.RS -4
-Feature Test Macro Requirements for glibc (see
-.BR feature_test_macros (7)):
-.RE
-.P
-.BR setgroups ():
-.nf
- Since glibc 2.19:
- _DEFAULT_SOURCE
- glibc 2.19 and earlier:
- _BSD_SOURCE
-.fi
-.SH DESCRIPTION
-.BR getgroups ()
-returns the supplementary group IDs of the calling process in
-.IR list .
-The argument
-.I size
-should be set to the maximum number of items that can be stored in the
-buffer pointed to by
-.IR list .
-If the calling process is a member of more than
-.I size
-supplementary groups, then an error results.
-.P
-It is unspecified whether the effective group ID of the calling process
-is included in the returned list.
-(Thus, an application should also call
-.BR getegid (2)
-and add or remove the resulting value.)
-.P
-If
-.I size
-is zero,
-.I list
-is not modified, but the total number of supplementary group IDs for the
-process is returned.
-This allows the caller to determine the size of a dynamically allocated
-.I list
-to be used in a further call to
-.BR getgroups ().
-.P
-.BR setgroups ()
-sets the supplementary group IDs for the calling process.
-Appropriate privileges are required (see the description of the
-.B EPERM
-error, below).
-The
-.I size
-argument specifies the number of supplementary group IDs
-in the buffer pointed to by
-.IR list .
-A process can drop all of its supplementary groups with the call:
-.P
-.in +4n
-.EX
-setgroups(0, NULL);
-.EE
-.in
-.SH RETURN VALUE
-On success,
-.BR getgroups ()
-returns the number of supplementary group IDs.
-On error, \-1 is returned, and
-.I errno
-is set to indicate the error.
-.P
-On success,
-.BR setgroups ()
-returns 0.
-On error, \-1 is returned, and
-.I errno
-is set to indicate the error.
-.SH ERRORS
-.TP
-.B EFAULT
-.I list
-has an invalid address.
-.P
-.BR getgroups ()
-can additionally fail with the following error:
-.TP
-.B EINVAL
-.I size
-is less than the number of supplementary group IDs, but is not zero.
-.P
-.BR setgroups ()
-can additionally fail with the following errors:
-.TP
-.B EINVAL
-.I size
-is greater than
-.B NGROUPS_MAX
-(32 before Linux 2.6.4; 65536 since Linux 2.6.4).
-.TP
-.B ENOMEM
-Out of memory.
-.TP
-.B EPERM
-The calling process has insufficient privilege
-(the caller does not have the
-.B CAP_SETGID
-capability in the user namespace in which it resides).
-.TP
-.BR EPERM " (since Linux 3.19)"
-The use of
-.BR setgroups ()
-is denied in this user namespace.
-See the description of
-.IR /proc/ pid /setgroups
-in
-.BR user_namespaces (7).
-.SH VERSIONS
-.SS 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 requirements by
-providing wrapper functions for
-the various system calls that change process UIDs and GIDs.
-These wrapper functions (including the one for
-.BR setgroups ())
-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
-.BR nptl (7).
-.SH STANDARDS
-.TP
-.BR getgroups ()
-POSIX.1-2008.
-.TP
-.BR setgroups ()
-None.
-.SH HISTORY
-.TP
-.BR getgroups ()
-SVr4, 4.3BSD, POSIX.1-2001.
-.TP
-.BR setgroups ()
-SVr4, 4.3BSD.
-Since
-.BR setgroups ()
-requires privilege, it is not covered by POSIX.1.
-.P
-The original Linux
-.BR getgroups ()
-system call supported only 16-bit group IDs.
-Subsequently, Linux 2.4 added
-.BR getgroups32 (),
-supporting 32-bit IDs.
-The glibc
-.BR getgroups ()
-wrapper function transparently deals with the variation across kernel versions.
-.SH NOTES
-A process can have up to
-.B NGROUPS_MAX
-supplementary group IDs
-in addition to the effective group ID.
-The constant
-.B NGROUPS_MAX
-is defined in
-.IR <limits.h> .
-The set of supplementary group IDs
-is inherited from the parent process, and preserved across an
-.BR execve (2).
-.P
-The maximum number of supplementary group IDs can be found at run time using
-.BR sysconf (3):
-.P
-.in +4n
-.EX
-long ngroups_max;
-ngroups_max = sysconf(_SC_NGROUPS_MAX);
-.EE
-.in
-.P
-The maximum return value of
-.BR getgroups ()
-cannot be larger than one more than this value.
-Since Linux 2.6.4, the maximum number of supplementary group IDs is also
-exposed via the Linux-specific read-only file,
-.IR /proc/sys/kernel/ngroups_max .
-.SH SEE ALSO
-.BR getgid (2),
-.BR setgid (2),
-.BR getgrouplist (3),
-.BR group_member (3),
-.BR initgroups (3),
-.BR capabilities (7),
-.BR credentials (7)