\section{\module{pwd} ---
         The password database}

\declaremodule{builtin}{pwd}
  \platform{Unix}
\modulesynopsis{The password database (\function{getpwnam()} and friends).}

This module provides access to the \UNIX{} user account and password
database.  It is available on all \UNIX{} versions.

Password database entries are reported as a tuple-like object, whose
attributes correspond to the members of the \code{passwd} structure
(Attribute field below, see \code{<pwd.h>}):

\begin{tableiii}{r|l|l}{textrm}{Index}{Attribute}{Meaning}
  \lineiii{0}{\code{pw_name}}{Login name}
  \lineiii{1}{\code{pw_passwd}}{Optional encrypted password}
  \lineiii{2}{\code{pw_uid}}{Numerical user ID}
  \lineiii{3}{\code{pw_gid}}{Numerical group ID}
  \lineiii{4}{\code{pw_gecos}}{User name or comment field}
  \lineiii{5}{\code{pw_dir}}{User home directory}
  \lineiii{6}{\code{pw_shell}}{User command interpreter}
\end{tableiii}

The uid and gid items are integers, all others are strings.
\exception{KeyError} is raised if the entry asked for cannot be found.

\note{In traditional \UNIX{} the field \code{pw_passwd} usually
contains a password encrypted with a DES derived algorithm (see module
\refmodule{crypt}\refbimodindex{crypt}).  However most modern unices 
use a so-called \emph{shadow password} system.  On those unices the
field \code{pw_passwd} only contains a asterisk (\code{'*'}) or the 
letter \character{x} where the encrypted password is stored in a file
\file{/etc/shadow} which is not world readable.}

It defines the following items:

\begin{funcdesc}{getpwuid}{uid}
Return the password database entry for the given numeric user ID.
\end{funcdesc}

\begin{funcdesc}{getpwnam}{name}
Return the password database entry for the given user name.
\end{funcdesc}

\begin{funcdesc}{getpwall}{}
Return a list of all available password database entries, in arbitrary order.
\end{funcdesc}


\begin{seealso}
  \seemodule{grp}{An interface to the group database, similar to this.}
\end{seealso}
