| unix-2.3.2.0: POSIX functionality | Source code | Contents | Index

System.Posix.User

Portability | non-portable (requires POSIX)
Stability | provisional
Maintainer | libraries@haskell.org

Contents

User environment
  Querying the user environment
    The group database
    The user database
  Modifying the user environment

Description
POSIX user/group support
Synopsis

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 ()

User environment
Querying the user environment

getRealUserID :: IO UserID | Source

`getRealUserID` calls `getuid` to obtain the real `UserID` associated with the current process.

getRealGroupID :: IO GroupID | Source

`getRealGroupID` calls `getgid` to obtain the real `GroupID` associated with the current process.

getEffectiveUserID :: IO UserID | Source

`getEffectiveUserID` calls `geteuid` to obtain the effective `UserID` associated with the current process.

getEffectiveGroupID :: IO GroupID | Source

`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 String | Source

`getLoginName` calls `getlogin` to obtain the login name associated with the current process.

getEffectiveUserName :: IO String | Source

`getEffectiveUserName` gets the name associated with the effective `UserID` of the process.
The group database

data GroupEntry | Source

Constructors

GroupEntry |

groupName :: String | The name of this group (gr_name)
groupPassword :: String | The password for this group (gr_passwd)
groupID :: GroupID | The unique numeric ID for this group (gr_gid)
groupMembers :: [String] | A list of zero or more usernames that are members (gr_mem)

Instances

Eq GroupEntry
Read GroupEntry
Show GroupEntry

getGroupEntryForID :: GroupID -> IO GroupEntry | Source

`getGroupEntryForID gid` calls `getgrgid` to obtain the `GroupEntry` information associated with `GroupID` `gid`.

getGroupEntryForName :: String -> IO GroupEntry | Source

`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

data UserEntry | Source

Constructors

UserEntry |

userName :: String | Textual name of this user (pw_name)
userPassword :: String | Password -- may be empty or fake if shadow is in use (pw_passwd)
userID :: UserID | Numeric ID for this user (pw_uid)
userGroupID :: GroupID | Primary group ID (pw_gid)
userGecos :: String | Usually the real name for the user (pw_gecos)
homeDirectory :: String | Home directory (pw_dir)
userShell :: String | Default shell (pw_shell)

Instances

Eq UserEntry
Read UserEntry
Show UserEntry

getUserEntryForID :: UserID -> IO UserEntry | Source

`getUserEntryForID gid` calls `getpwuid` to obtain the `UserEntry` information associated with `UserID` `uid`.

getUserEntryForName :: String -> IO UserEntry | Source

`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`.
Produced by Haddock version 2.4.2