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

FreeBSD Manual Pages

  
 
  

home | help
GETGROUPS(2)		   Linux Programmer's Manual		  GETGROUPS(2)

NAME
       getgroups, setgroups - get/set list of supplementary group IDs

SYNOPSIS
       #include	<sys/types.h>
       #include	<unistd.h>

       int getgroups(int size, gid_t list[]);

       #include	<grp.h>

       int setgroups(size_t size, const	gid_t *list);

DESCRIPTION
       getgroups
	      Up  to size supplementary	group IDs are returned in list.	 It is
	      unspecified whether  the	effective  group  ID  of  the  calling
	      process  is included in the returned list. (Thus,	an application
	      should also call getegid(2) and  add  or	remove	the  resulting
	      value.)	If  size  is zero, list	is not modified, but the total
	      number of	supplementary group IDs	for the	process	is returned.

       setgroups
	      Sets the supplementary group IDs for the process.	 Only the  su-
	      per-user may use this function.

RETURN VALUE
       getgroups
	      On  success,  the	number of supplementary	group IDs is returned.
	      On error,	-1 is returned,	and errno is set appropriately.

       setgroups
	      On success, zero is returned.  On	error, -1 is returned, and er-
	      rno is set appropriately.

ERRORS
       EFAULT list has an invalid address.

       EPERM  For setgroups, the user is not the super-user.

       EINVAL For  setgroups,  size  is	 greater  than	NGROUPS	 (32 for Linux
	      2.0.32).	For getgroups, size is less than the number of supple-
	      mentary group IDs, but is	not zero.

NOTES
       A  process  can have up to at least NGROUPS_MAX supplementary group IDs
       in addition to the effective group ID. The set of  supplementary	 group
       IDs  is inherited from the parent process and may be changed using set-
       groups.	The maximum number of supplementary group IDs can be found us-
       ing sysconf(3):
	   long	ngroups_max;
	   ngroups_max = sysconf(_SC_NGROUPS_MAX);
       The  maximal  return  value of getgroups	cannot be larger than one more
       than the	value obtained this way.

       The prototype for setgroups is only available if	_BSD_SOURCE is defined
       (either	explicitly,  or	 implicitly,  by not defining _POSIX_SOURCE or
       compiling with the -ansi	flag).

CONFORMING TO
       SVr4, SVID (issue 4 only;  these	 calls	were  not  present  in	SVr3),
       X/OPEN, 4.3BSD.	The getgroups function is in POSIX.1.  Since setgroups
       requires	privilege, it is not covered by	POSIX.1.

SEE ALSO
       initgroups(3), getgid(2), setgid(2)

Linux 2.0.32			  1997-12-10			  GETGROUPS(2)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | NOTES | CONFORMING TO | SEE ALSO

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=getgroups&sektion=2&manpath=Red+Hat+9>

home | help