\section{\module{spwd} ---
         The shadow password database}

\declaremodule{builtin}{spwd}
  \platform{Unix}
\modulesynopsis{The shadow password database (\function{getspnam()} and friends).}
\versionadded{2.5}

This module provides access to the \UNIX{} shadow password database.
It is available on various \UNIX{} versions.

You must have enough privileges to access the shadow password database
(this usually means you have to be root).

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

\begin{tableiii}{r|l|l}{textrm}{Index}{Attribute}{Meaning}
  \lineiii{0}{\code{sp_nam}}{Login name}
  \lineiii{1}{\code{sp_pwd}}{Encrypted password}
  \lineiii{2}{\code{sp_lstchg}}{Date of last change}
  \lineiii{3}{\code{sp_min}}{Minimal number of days between changes}
  \lineiii{4}{\code{sp_max}}{Maximum number of days between changes}
  \lineiii{5}{\code{sp_warn}}{Number of days before password expires to warn user about it}
  \lineiii{6}{\code{sp_inact}}{Number of days after password expires until account is blocked}
  \lineiii{7}{\code{sp_expire}}{Number of days since 1970-01-01 until account is disabled}
  \lineiii{8}{\code{sp_flag}}{Reserved}
\end{tableiii}

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

It defines the following items:

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

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


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