| Portability | non-portable (requires POSIX) | 
|---|---|
| Stability | provisional | 
| Maintainer | libraries@haskell.org | 
System.Posix.User
Contents
Description
POSIX user/group support
- getRealUserID :: IO UserID
 - getRealGroupID :: IO GroupID
 - getEffectiveUserID :: IO UserID
 - getEffectiveGroupID :: IO GroupID
 - getGroups :: IO [GroupID]
 - getLoginName :: IO String
 - getEffectiveUserName :: IO String
 - data  GroupEntry  = GroupEntry {
- groupName :: String
 - groupPassword :: String
 - groupID :: GroupID
 - groupMembers :: [String]
 
 - getGroupEntryForID :: GroupID -> IO GroupEntry
 - getGroupEntryForName :: String -> IO GroupEntry
 - getAllGroupEntries :: IO [GroupEntry]
 - data  UserEntry  = UserEntry {
- userName :: String
 - userPassword :: String
 - userID :: UserID
 - userGroupID :: GroupID
 - userGecos :: String
 - homeDirectory :: String
 - userShell :: String
 
 - getUserEntryForID :: UserID -> IO UserEntry
 - getUserEntryForName :: String -> IO UserEntry
 - getAllUserEntries :: IO [UserEntry]
 - setUserID :: UserID -> IO ()
 - setGroupID :: GroupID -> IO ()
 - setEffectiveUserID :: UserID -> IO ()
 - setEffectiveGroupID :: GroupID -> IO ()
 - setGroups :: [GroupID] -> IO ()
 
User environment
Querying the user environment
getRealUserID :: IO UserIDSource
getRealUserID calls getuid to obtain the real UserID
   associated with the current process.
getRealGroupID :: IO GroupIDSource
getRealGroupID calls getgid to obtain the real GroupID
   associated with the current process.
getEffectiveUserID :: IO UserIDSource
getEffectiveUserID calls geteuid to obtain the effective
   UserID associated with the current process.
getEffectiveGroupID :: IO GroupIDSource
getEffectiveGroupID calls getegid to obtain the effective
   GroupID associated with the current process.
getGroups :: IO [GroupID]Source
getGroups calls getgroups to obtain the list of
   supplementary GroupIDs associated with the current process.
getLoginName :: IO StringSource
getLoginName calls getlogin to obtain the login name
   associated with the current process.
getEffectiveUserName :: IO StringSource
getEffectiveUserName gets the name
   associated with the effective UserID of the process.
The group database
data GroupEntry Source
Constructors
| GroupEntry | |
Fields 
  | |
Instances
getGroupEntryForID :: GroupID -> IO GroupEntrySource
getGroupEntryForID gid calls getgrgid to obtain
   the GroupEntry information associated with GroupID
   gid.
getGroupEntryForName :: String -> IO GroupEntrySource
getGroupEntryForName name calls getgrnam to obtain
   the GroupEntry information associated with the group called
   name.
getAllGroupEntries :: IO [GroupEntry]Source
getAllGroupEntries returns all group entries on the system by
   repeatedly calling getgrent
The user database
Constructors
| UserEntry | |
Fields 
  | |
getUserEntryForID :: UserID -> IO UserEntrySource
getUserEntryForID gid calls getpwuid to obtain
   the UserEntry information associated with UserID
   uid.
getUserEntryForName :: String -> IO UserEntrySource
getUserEntryForName name calls getpwnam to obtain
   the UserEntry information associated with the user login
   name.
getAllUserEntries :: IO [UserEntry]Source
getAllUserEntries returns all user entries on the system by 
   repeatedly calling getpwent
Modifying the user environment
setUserID :: UserID -> IO ()Source
setUserID uid calls setuid to set the real, effective, and
   saved set-user-id associated with the current process to uid.
setGroupID :: GroupID -> IO ()Source
setGroupID gid calls setgid to set the real, effective, and
   saved set-group-id associated with the current process to gid.
setEffectiveUserID :: UserID -> IO ()Source
setEffectiveUserID uid calls seteuid to set the effective
   user-id associated with the current process to uid. This
   does not update the real user-id or set-user-id.
setEffectiveGroupID :: GroupID -> IO ()Source
setEffectiveGroupID uid calls setegid to set the effective
   group-id associated with the current process to gid. This
   does not update the real group-id or set-group-id.