(libc.info.gz) Reading Persona

Info Catalog (libc.info.gz) How Change Persona (libc.info.gz) Users and Groups (libc.info.gz) Setting User ID
 
 29.5 Reading the Persona of a Process
 =====================================
 
 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'.  
 
  -- Data Type: uid_t
      This is an integer data type used to represent user IDs.  In the
      GNU library, this is an alias for `unsigned int'.
 
  -- Data Type: gid_t
      This is an integer data type used to represent group IDs.  In the
      GNU library, this is an alias for `unsigned int'.
 
  -- Function: uid_t getuid (void)
      The `getuid' function returns the real user ID of the process.
 
  -- Function: gid_t getgid (void)
      The `getgid' function returns the real group ID of the process.
 
  -- Function: uid_t geteuid (void)
      The `geteuid' function returns the effective user ID of the
      process.
 
  -- Function: gid_t getegid (void)
      The `getegid' function returns the effective group ID of the
      process.
 
  -- Function: int getgroups (int COUNT, gid_t *GROUPS)
      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 `getgroups' just returns the total number
      of supplementary group IDs.  On systems that do not support
      supplementary groups, this will always be zero.
 
      Here's how to use `getgroups' to read all the supplementary group
      IDs:
 
           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;
           }
 
Info Catalog (libc.info.gz) How Change Persona (libc.info.gz) Users and Groups (libc.info.gz) Setting User ID
automatically generated by info2html