FreeBSD Manual Pages
SETGROUPS(2) System Calls Manual SETGROUPS(2) NAME setgroups -- set group access list LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <sys/param.h> #include <unistd.h> int setgroups(int ngroups, const gid_t *gidset); DESCRIPTION The setgroups() system call sets the group access list of the current user process according to the array gidset. The ngroups argument indi- cates the number of entries in the array and must be no more than {NGROUPS_MAX}+1. Only the super-user may set a new group list. The first entry of the group array (gidset[0]) is used as the effective group-ID for the process. This entry is over-written when a setgid program is run. To avoid losing access to the privileges of the gidset[0] entry, it should be duplicated later in the group array. By convention, this happens because the group value indicated in the pass- word file also appears in /etc/group. The group value in the password file is placed in gidset[0] and that value then gets added a second time when the /etc/group file is scanned to create the group set. RETURN VALUES The setgroups() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indi- cate the error. ERRORS The setgroups() system call will fail if: [EPERM] The caller is not the super-user. [EINVAL] The number specified in the ngroups argument is larger than the {NGROUPS_MAX}+1 limit. [EFAULT] The address specified for gidset is outside the process address space. SEE ALSO getgroups(2), initgroups(3) HISTORY The setgroups() system call appeared in 4.2BSD. FreeBSD 13.2 January 19, 2018 SETGROUPS(2)
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | HISTORY
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=setgroups&sektion=2&manpath=FreeBSD+14.2-RELEASE+and+Ports>