:mod:`spwd` --- The shadow password database
============================================

.. module:: spwd
   :platform: Unix
   :synopsis: The shadow password database (getspnam() and friends).
   :deprecated:

.. deprecated-removed:: 3.11 3.13
   The :mod:`spwd` module is deprecated
   (see :pep:`PEP 594 <594#spwd>` for details and alternatives).

--------------

This module provides access to the Unix shadow password database. It is
available on various Unix versions.

.. include:: ../includes/wasm-notavail.rst

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 ``spwd`` structure (Attribute field
below, see ``<shadow.h>``):

+-------+---------------+---------------------------------+
| Index | Attribute     | Meaning                         |
+=======+===============+=================================+
| 0     | ``sp_namp``   | Login name                      |
+-------+---------------+---------------------------------+
| 1     | ``sp_pwdp``   | Encrypted password              |
+-------+---------------+---------------------------------+
| 2     | ``sp_lstchg`` | Date of last change             |
+-------+---------------+---------------------------------+
| 3     | ``sp_min``    | Minimal number of days between  |
|       |               | changes                         |
+-------+---------------+---------------------------------+
| 4     | ``sp_max``    | Maximum number of days between  |
|       |               | changes                         |
+-------+---------------+---------------------------------+
| 5     | ``sp_warn``   | Number of days before password  |
|       |               | expires to warn user about it   |
+-------+---------------+---------------------------------+
| 6     | ``sp_inact``  | Number of days after password   |
|       |               | expires until account is        |
|       |               | disabled                        |
+-------+---------------+---------------------------------+
| 7     | ``sp_expire`` | Number of days since 1970-01-01 |
|       |               | when account expires            |
+-------+---------------+---------------------------------+
| 8     | ``sp_flag``   | Reserved                        |
+-------+---------------+---------------------------------+

The sp_namp and sp_pwdp items are strings, all others are integers.
:exc:`KeyError` is raised if the entry asked for cannot be found.

The following functions are defined:


.. function:: getspnam(name)

   Return the shadow password database entry for the given user name.

   .. versionchanged:: 3.6
      Raises a :exc:`PermissionError` instead of :exc:`KeyError` if the user
      doesn't have privileges.

.. function:: getspall()

   Return a list of all available shadow password database entries, in arbitrary
   order.


.. seealso::

   Module :mod:`grp`
      An interface to the group database, similar to this.

   Module :mod:`pwd`
      An interface to the normal password database, similar to this.

