 |
Index for Section 3 |
|
 |
Alphabetical listing for S |
|
 |
Bottom of page |
|
sia_get_groups(3)
NAME
sia_get_groups - retrieve user's group information for SIA (Security
Integration Architecture)
SYNOPSIS
#include <sia.h>
#include <siad.h>
int sia_get_groups(
const char *username,
gid_t basegid,
gid_t *buffer,
int *ngroups );
LIBRARY
Standard C library (libc.so and libc.a)
PARAMETERS
username
The name of the user whose group information should be written to the
buffer array. This parameter is read only.
basegid
If not ((gid_t)-1), this GID will appear in the buffer array in
addition to any other groups found for this user. This is normally used
to pass the user's GID from the password information, since the GID is
not necessarily listed in the group information obtained with
getgrent().
buffer
The array into which this routine writes the accumulated GIDs for the
specified user.
ngroups
On input, this parameter points to an integer that represents the
maximum number of entries allowed for the buffer array. When this
routine returns, it updates this value to be the number of entries
which were found. On failure, the value is indeterminate.
DESCRIPTION
The sia_get_groups() routine is called to obtain a user's group array.
RETURN VALUES
This routine returns SIA_SUCCESS if all the incoming arguments are correct
(non-null pointers, non-null username, and *ngroups must be positive), and
if none of the configured mechanism functions for group processing returned
a fatal error. Finding more than *ngroups GIDs for the user is one such
fatal error, and is the only one defined for all mechanisms. If a fatal
error is encountered in one of the configured mechanisms, this routine
returns SIAFAIL|SIASTOP. If there are parameter errors, or if a getgrent_r
call fails, this routine returns SIAFAIL.
ERRORS
While errno will usually be propagated from whatever other calls failed,
this routine will return with errno explicitly set for the following
conditions:
[EFAULT]
One of the pointer arguments was NULL.
[EINVAL]
*username was 0, or *ngroups was not positive.
[EIO]
Thread context failure while scanning for groups.
EXAMPLES
A typical call to obtain a user's group array follows:
#include <sia.h>
int ngroups;
gid_t groups[NGROUPS];
struct passwd *pw;
extern char *username;
pw = getpwnam(username);
if (pw == NULL)
return 0;
ngroups = NGROUPS;
if (sia_get_groups(username, pw->pw_gid, groups, &ngroups)
!= SIASUCCESS)
return 0;
/* process group array here */
FILES
/etc/sia/matrix.conf
SEE ALSO
getgrent(3), matrix.conf(4), initgroups(3), siad_get_groups(3)
_sia_isagroup(3)
Security
 |
Index for Section 3 |
|
 |
Alphabetical listing for S |
|
 |
Top of page |
|