INITGROUPS(3) | Library Functions Manual | INITGROUPS(3)

# NAME

`initgroups` — initialize supplementary group IDs

# SYNOPSIS

`#include <unistd.h>`

int
`initgroups`(const char *name, gid_t basegid);

# DESCRIPTION

The `initgroups`() function uses the getgrouplist(3) function to calculate the supplementary group IDs for the user specified in name. This group list is then set up for the current process using setgroups(2). The basegid is automatically included in the group list. Typically this value is given as the group number from the password file.

If the groups database lists more than `NGROUPS_MAX` groups for name (including one for basegid), the later groups are ignored.

# RETURN VALUES

The `initgroups`() function returns -1 if it was not invoked by the superuser.

# SEE ALSO

setgroups(2), getgrouplist(3)

# HISTORY

The `initgroups`() function appeared in 4.2BSD.

# BUGS

The getgrouplist(3) function called by `initgroups`() uses the routines based on getgrent(3). If the invoking program uses any of these routines, the group structure will be overwritten in the call to `initgroups`().

February 5, 2015 | Debian