NAME
initgroups() — initialize group access list
SYNOPSIS
#include <unistd.h>
int initgroups(const char *name, gid_t basegid);
DESCRIPTION
initgroups()
reads the login group file,
/etc/logingroup,
and sets up the group access list for the user specified by
name,
using the
setgroups(2)
system call.
If the value of
basegid
is zero or positive, it is automatically included in the groups list.
Typically this value is given as the group number from the password file.
If the login group file is empty,
basegid
is the only member of the list.
RETURN VALUE
initgroups()
returns
-1
if it was not invoked by a user with appropriate privileges.
WARNINGS
initgroups()
uses the routines based on
getgrent(3C).
If the invoking program uses any of these routines,
the group structure is overwritten by the call to
initgroups().
Subsequent calls to
initgroups()
with the same
name
parameter override the actions of previous calls.
On many systems, no one seems to keep
/etc/logingroup
up to date.
initgroups()
uses the
Dynamic Name Service
Switch. (See
nsswitch.conf(4).)
An application that uses this interface cannot be fully
archive bound.
NETWORKING FEATURES
NFS
If
/etc/logingroup
is linked to
/etc/group,
initgroups()
tries to use the Network Information Service
(NIS)
for entries beginning with a plus sign
(+).
If group membership for
name
is managed by
NIS,
and no
NIS
server is able to respond, a call to
initgroups()
does not return until a server does respond.
This causes commands such as
login(1)
and
su(1)
to wait indefinitely.
See
group(4)
for proper syntax and operation.
AUTHOR
initgroups()
was developed by the University of California, Berkeley.
FILES
- /etc/logingroup
login group file