<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >System.Posix.User</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_System-Posix-User.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >unix-2.3.2.0: POSIX functionality</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >System.Posix.User</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >non-portable (requires POSIX)</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >provisional</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >libraries@haskell.org</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >User environment </A ></DT ><DD ><DL ><DT ><A HREF="#2" >Querying the user environment </A ></DT ><DD ><DL ><DT ><A HREF="#3" >The group database </A ></DT ><DT ><A HREF="#4" >The user database </A ></DT ></DL ></DD ><DT ><A HREF="#5" >Modifying the user environment </A ></DT ></DL ></DD ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" >POSIX user/group support </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetRealUserID" >getRealUserID</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetRealGroupID" >getRealGroupID</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetEffectiveUserID" >getEffectiveUserID</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetEffectiveGroupID" >getEffectiveGroupID</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetGroups" >getGroups</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > [<A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetLoginName" >getLoginName</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetEffectiveUserName" >getEffectiveUserName</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AGroupEntry" >GroupEntry</A > = <A HREF="#v%3AGroupEntry" >GroupEntry</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3AgroupName" >groupName</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AgroupPassword" >groupPassword</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AgroupID" >groupID</A > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AgroupMembers" >groupMembers</A > :: [<A HREF="../base/Data-Char.html#t%3AString" >String</A >]</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetGroupEntryForID" >getGroupEntryForID</A > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetGroupEntryForName" >getGroupEntryForName</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetAllGroupEntries" >getAllGroupEntries</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > [<A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AUserEntry" >UserEntry</A > = <A HREF="#v%3AUserEntry" >UserEntry</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3AuserName" >userName</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AuserPassword" >userPassword</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AuserID" >userID</A > :: <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AuserGroupID" >userGroupID</A > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AuserGecos" >userGecos</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AhomeDirectory" >homeDirectory</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AuserShell" >userShell</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetUserEntryForID" >getUserEntryForID</A > :: <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetUserEntryForName" >getUserEntryForName</A > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetAllUserEntries" >getAllUserEntries</A > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > [<A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetUserID" >setUserID</A > :: <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetGroupID" >setGroupID</A > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >User environment </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="2" ><A NAME="2" >Querying the user environment </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getRealUserID" ><A NAME="v%3AgetRealUserID" ></A ></A ><B >getRealUserID</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getRealUserID</TT > calls <TT >getuid</TT > to obtain the real <TT >UserID</TT > associated with the current process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getRealGroupID" ><A NAME="v%3AgetRealGroupID" ></A ></A ><B >getRealGroupID</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getRealGroupID</TT > calls <TT >getgid</TT > to obtain the real <TT >GroupID</TT > associated with the current process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getEffectiveUserID" ><A NAME="v%3AgetEffectiveUserID" ></A ></A ><B >getEffectiveUserID</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getEffectiveUserID</TT > calls <TT >geteuid</TT > to obtain the effective <TT >UserID</TT > associated with the current process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getEffectiveGroupID" ><A NAME="v%3AgetEffectiveGroupID" ></A ></A ><B >getEffectiveGroupID</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getEffectiveGroupID</TT > calls <TT >getegid</TT > to obtain the effective <TT >GroupID</TT > associated with the current process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getGroups" ><A NAME="v%3AgetGroups" ></A ></A ><B >getGroups</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > [<A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A >]</TD ></TR ><TR ><TD CLASS="doc" ><TT >getGroups</TT > calls <TT >getgroups</TT > to obtain the list of supplementary <TT >GroupID</TT >s associated with the current process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getLoginName" ><A NAME="v%3AgetLoginName" ></A ></A ><B >getLoginName</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getLoginName</TT > calls <TT >getlogin</TT > to obtain the login name associated with the current process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getEffectiveUserName" ><A NAME="v%3AgetEffectiveUserName" ></A ></A ><B >getEffectiveUserName</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getEffectiveUserName</TT > gets the name associated with the effective <TT >UserID</TT > of the process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="3" ><A NAME="3" >The group database </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:GroupEntry" ><A NAME="t%3AGroupEntry" ></A ></A ><B >GroupEntry</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:GroupEntry" ><A NAME="v%3AGroupEntry" ></A ></A ><B >GroupEntry</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:groupName" ><A NAME="v%3AgroupName" ></A ></A ><B >groupName</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >The name of this group (gr_name) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:groupPassword" ><A NAME="v%3AgroupPassword" ></A ></A ><B >groupPassword</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >The password for this group (gr_passwd) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:groupID" ><A NAME="v%3AgroupID" ></A ></A ><B >groupID</B > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ><TD CLASS="rdoc" >The unique numeric ID for this group (gr_gid) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:groupMembers" ><A NAME="v%3AgroupMembers" ></A ></A ><B >groupMembers</B > :: [<A HREF="../base/Data-Char.html#t%3AString" >String</A >]</TD ><TD CLASS="rdoc" >A list of zero or more usernames that are members (gr_mem) </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:GroupEntry')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:GroupEntry" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/Text-Show.html#t%3AShow" >Show</A > <A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getGroupEntryForID" ><A NAME="v%3AgetGroupEntryForID" ></A ></A ><B >getGroupEntryForID</B > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getGroupEntryForID gid</TT > calls <TT >getgrgid</TT > to obtain the <TT >GroupEntry</TT > information associated with <TT >GroupID</TT > <TT >gid</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getGroupEntryForName" ><A NAME="v%3AgetGroupEntryForName" ></A ></A ><B >getGroupEntryForName</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getGroupEntryForName name</TT > calls <TT >getgrnam</TT > to obtain the <TT >GroupEntry</TT > information associated with the group called <TT >name</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getAllGroupEntries" ><A NAME="v%3AgetAllGroupEntries" ></A ></A ><B >getAllGroupEntries</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > [<A HREF="System-Posix-User.html#t%3AGroupEntry" >GroupEntry</A >]</TD ></TR ><TR ><TD CLASS="doc" ><TT >getAllGroupEntries</TT > returns all group entries on the system by repeatedly calling <TT >getgrent</TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="4" ><A NAME="4" >The user database </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:UserEntry" ><A NAME="t%3AUserEntry" ></A ></A ><B >UserEntry</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:UserEntry" ><A NAME="v%3AUserEntry" ></A ></A ><B >UserEntry</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:userName" ><A NAME="v%3AuserName" ></A ></A ><B >userName</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Textual name of this user (pw_name) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:userPassword" ><A NAME="v%3AuserPassword" ></A ></A ><B >userPassword</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Password -- may be empty or fake if shadow is in use (pw_passwd) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:userID" ><A NAME="v%3AuserID" ></A ></A ><B >userID</B > :: <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A ></TD ><TD CLASS="rdoc" >Numeric ID for this user (pw_uid) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:userGroupID" ><A NAME="v%3AuserGroupID" ></A ></A ><B >userGroupID</B > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A ></TD ><TD CLASS="rdoc" >Primary group ID (pw_gid) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:userGecos" ><A NAME="v%3AuserGecos" ></A ></A ><B >userGecos</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Usually the real name for the user (pw_gecos) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:homeDirectory" ><A NAME="v%3AhomeDirectory" ></A ></A ><B >homeDirectory</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Home directory (pw_dir) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:userShell" ><A NAME="v%3AuserShell" ></A ></A ><B >userShell</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Default shell (pw_shell) </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:UserEntry')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:UserEntry" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/Text-Read.html#t%3ARead" >Read</A > <A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/Text-Show.html#t%3AShow" >Show</A > <A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getUserEntryForID" ><A NAME="v%3AgetUserEntryForID" ></A ></A ><B >getUserEntryForID</B > :: <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getUserEntryForID gid</TT > calls <TT >getpwuid</TT > to obtain the <TT >UserEntry</TT > information associated with <TT >UserID</TT > <TT >uid</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getUserEntryForName" ><A NAME="v%3AgetUserEntryForName" ></A ></A ><B >getUserEntryForName</B > :: <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >getUserEntryForName name</TT > calls <TT >getpwnam</TT > to obtain the <TT >UserEntry</TT > information associated with the user login <TT >name</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getAllUserEntries" ><A NAME="v%3AgetAllUserEntries" ></A ></A ><B >getAllUserEntries</B > :: <A HREF="../base/System-IO.html#t%3AIO" >IO</A > [<A HREF="System-Posix-User.html#t%3AUserEntry" >UserEntry</A >]</TD ></TR ><TR ><TD CLASS="doc" ><TT >getAllUserEntries</TT > returns all user entries on the system by repeatedly calling <TT >getpwent</TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="5" ><A NAME="5" >Modifying the user environment </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setUserID" ><A NAME="v%3AsetUserID" ></A ></A ><B >setUserID</B > :: <A HREF="../base/System-Posix-Types.html#t%3AUserID" >UserID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >setUserID uid</TT > calls <TT >setuid</TT > to set the real, effective, and saved set-user-id associated with the current process to <TT >uid</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setGroupID" ><A NAME="v%3AsetGroupID" ></A ></A ><B >setGroupID</B > :: <A HREF="../base/System-Posix-Types.html#t%3AGroupID" >GroupID</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >setGroupID gid</TT > calls <TT >setgid</TT > to set the real, effective, and saved set-group-id associated with the current process to <TT >gid</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.4.2</TD ></TR ></TABLE ></BODY ></HTML >