Portability | non-portable (requires POSIX) |
---|---|
Stability | provisional |
Maintainer | libraries@haskell.org |
Safe Haskell | Trustworthy |
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 GroupID
s 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
GroupEntry | |
|
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
UserEntry | |
|
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.