NAME
setgroups — set group access list
SYNOPSIS
#include <unistd.h>
int setgroups(int ngroups, const gid_t *gidset);
DESCRIPTION
setgroups()
sets the group access list of the current user process
according to the array
gidset.
The parameter
ngroups
indicates the number of entries in the array and must be no
more than
sysconf(_SC_NGROUPS_MAX).
Only
a user with the
CHSUBJIDENT
privilege can set new groups
by adding to the group access list of the current user process;
any user can delete groups from it.
Security Restrictions
Some or all of the actions associated with this system call require the
CHSUBJIDENT
privilege.
Processes owned by the superuser have this privilege.
Processes owned by other users may have this privilege, depending on system
configuration.
See
privileges(5)
for more information about privileged access on
systems that support fine-grained privileges.
RETURN VALUE
Upon successful completion,
setgroups()
returns 0; otherwise it returns -1 and sets
errno
to indicate the error.
ERRORS
setgroups()
fails if any of the following conditions are encountered:
- EPERM
The caller
is not a user with the
CHSUBJIDENT
privilege and has attempted to set new groups.
- EFAULT
The address specified for
gidset
is outside the process address space.
The reliable detection of this error is implementation dependent.
- EINVAL
ngroups
is greater than
sysconf(_SC_NGROUPS_MAX)
or not positive.
- EINVAL
An entry in
gidset
is not a valid group
ID.
AUTHOR
setgroups()
was developed by the University of California,
Berkeley.
STANDARDS CONFORMANCE
setgroups(): AES, SVID3