Node:Reading Persona, Next:Setting User ID, Previous:How Change Persona, Up:Users and Groups
Here are detailed descriptions of the functions for reading the user and
group IDs of a process, both real and effective. To use these
facilities, you must include the header files sys/types.h and
unistd.h.
| uid_t | Data Type |
This is an integer data type used to represent user IDs. In the GNU
library, this is an alias for unsigned int.
|
| gid_t | Data Type |
This is an integer data type used to represent group IDs. In the GNU
library, this is an alias for unsigned int.
|
| uid_t getuid (void) | Function |
The getuid function returns the real user ID of the process.
|
| gid_t getgid (void) | Function |
The getgid function returns the real group ID of the process.
|
| uid_t geteuid (void) | Function |
The geteuid function returns the effective user ID of the process.
|
| gid_t getegid (void) | Function |
The getegid function returns the effective group ID of the process.
|
| int getgroups (int count, gid_t *groups) | Function |
The getgroups function is used to inquire about the supplementary
group IDs of the process. Up to count of these group IDs are
stored in the array groups; the return value from the function is
the number of group IDs actually stored. If count is smaller than
the total number of supplementary group IDs, then getgroups
returns a value of -1 and errno is set to EINVAL.
If count is zero, then Here's how to use gid_t *
read_all_groups (void)
{
int ngroups = getgroups (0, NULL);
gid_t *groups
= (gid_t *) xmalloc (ngroups * sizeof (gid_t));
int val = getgroups (ngroups, groups);
if (val < 0)
{
free (groups);
return NULL;
}
return groups;
}
|