*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> getgroups (2)              



NAME    [Toc]    [Back]

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

SYNOPSIS    [Toc]    [Back]

       #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    [Toc]    [Back]

	      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.

	      Sets the supplementary group IDs	for  the  process.   Only  the
	      super-user may use this function.

RETURN VALUE    [Toc]    [Back]

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

	      On success, zero is returned.  On error,	-1  is	returned,  and
	      errno is set appropriately.

ERRORS    [Toc]    [Back]

       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 supplementary
 group IDs, but is not zero.

NOTES    [Toc]    [Back]

       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
       using 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    [Toc]    [Back]

       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    [Toc]    [Back]

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

Linux 2.0.32			  1997-12-10			  GETGROUPS(2)
[ Back ]
 Similar pages
Name OS Title
getgroups IRIX get supplementary group access list IDs
initgroups Linux initialize the supplementary group access list
pxfgetgroups IRIX Gets supplementary group IDs
initgroups NetBSD initialize supplementary group IDs
initgroups OpenBSD initialize supplementary group IDs
getgroups Tru64 Get the supplementary group IDs of the current process
setgroups FreeBSD set group access list
setgroups IRIX set group access list
getgroups OpenBSD get group access list
setgroups OpenBSD set group access list
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service