Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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	14.3		       January 19, 2018			  SETGROUPS(2)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=setgroups&sektion=2&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help