(root)/
Linux-PAM-1.5.3/
modules/
pam_lastlog/
pam_lastlog.8.xml
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="pam_lastlog">

  <refmeta>
    <refentrytitle>pam_lastlog</refentrytitle>
    <manvolnum>8</manvolnum>
    <refmiscinfo class="source">Linux-PAM</refmiscinfo>
    <refmiscinfo class="manual">Linux-PAM Manual</refmiscinfo>
  </refmeta>

  <refnamediv xml:id="pam_lastlog-name">
    <refname>pam_lastlog</refname>
    <refpurpose>PAM module to display date of last login and perform inactive account lock out</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis xml:id="pam_lastlog-cmdsynopsis" sepchar=" ">
      <command>pam_lastlog.so</command>
      <arg choice="opt" rep="norepeat">
	debug
      </arg>
      <arg choice="opt" rep="norepeat">
        silent
      </arg>
      <arg choice="opt" rep="norepeat">
        never
      </arg>
      <arg choice="opt" rep="norepeat">
        nodate
      </arg>
      <arg choice="opt" rep="norepeat">
        nohost
      </arg>
      <arg choice="opt" rep="norepeat">
        noterm
      </arg>
      <arg choice="opt" rep="norepeat">
        nowtmp
      </arg>
      <arg choice="opt" rep="norepeat">
        noupdate
      </arg>
      <arg choice="opt" rep="norepeat">
        showfailed
      </arg>
      <arg choice="opt" rep="norepeat">
        inactive=&lt;days&gt;
      </arg>
      <arg choice="opt" rep="norepeat">
        unlimited
      </arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1 xml:id="pam_lastlog-description">

    <title>DESCRIPTION</title>

    <para>
      pam_lastlog is a PAM module to display a line of information
      about the last login of the user. In addition, the module maintains
      the <filename>/var/log/lastlog</filename> file.
    </para>
    <para>
      Some applications may perform this function themselves. In such
      cases, this module is not necessary.
    </para>
    <para>
      The module checks <option>LASTLOG_UID_MAX</option> option in
      <filename>/etc/login.defs</filename> and does not update or display
      last login records for users with UID higher than its value.
      If the option is not present or its value is invalid, no user ID
      limit is applied.
    </para>
    <para>
      If the module is called in the auth or account phase, the accounts that
      were not used recently enough will be disallowed to log in. The
      check is not performed for the root account so the root is never
      locked out. It is also not performed for users with UID higher
      than the <option>LASTLOG_UID_MAX</option> value.
    </para>
  </refsect1>

  <refsect1 xml:id="pam_lastlog-options">

    <title>OPTIONS</title>
    <variablelist>
      <varlistentry>
        <term>
          debug
        </term>
        <listitem>
          <para>
            Print debug information.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          silent
        </term>
        <listitem>
          <para>
            Don't inform the user about any previous login,
            just update the <filename>/var/log/lastlog</filename> file.
            This option does not affect display of bad login attempts.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          never
        </term>
        <listitem>
          <para>
            If the <filename>/var/log/lastlog</filename> file does
            not contain any old entries for the user, indicate that
            the user has never previously logged in with a welcome
            message.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          nodate
        </term>
        <listitem>
          <para>
            Don't display the date of the last login.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          noterm
        </term>
        <listitem>
          <para>
            Don't display the terminal name on which the
            last login was attempted.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          nohost
        </term>
        <listitem>
          <para>
            Don't indicate from which host the last login was
            attempted.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          nowtmp
        </term>
        <listitem>
          <para>
            Don't update the wtmp entry.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          noupdate
        </term>
        <listitem>
          <para>
            Don't update any file.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          showfailed
        </term>
        <listitem>
          <para>
            Display number of failed login attempts and the date of the
            last failed attempt from btmp. The date is not displayed
            when <option>nodate</option> is specified.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          inactive=&lt;days&gt;
        </term>
        <listitem>
          <para>
            This option is specific for the auth or account phase. It
            specifies the number of days after the last login of the user
            when the user will be locked out by the module. The default
            value is 90.
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>
          unlimited
        </term>
        <listitem>
          <para>
	    If the <emphasis>fsize</emphasis> limit is set, this option can be
	    used to override it, preventing failures on systems with large UID
	    values that lead lastlog to become a huge sparse file.
          </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1 xml:id="pam_lastlog-types">
    <title>MODULE TYPES PROVIDED</title>
    <para>
      The <option>auth</option> and <option>account</option> module type
      allows one to lock out users who did not login recently enough.
      The <option>session</option> module type is provided for displaying
      the information about the last login and/or updating the lastlog and
      wtmp files.
    </para>
  </refsect1>

  <refsect1 xml:id="pam_lastlog-return_values">
    <title>RETURN VALUES</title>
    <para>
      <variablelist>

        <varlistentry>
          <term>PAM_SUCCESS</term>
          <listitem>
            <para>
              Everything was successful.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>PAM_SERVICE_ERR</term>
          <listitem>
            <para>
	      Internal service module error.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>PAM_USER_UNKNOWN</term>
          <listitem>
            <para>
	      User not known.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>PAM_AUTH_ERR</term>
          <listitem>
            <para>
	      User locked out in the auth or account phase due to
	      inactivity.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>PAM_IGNORE</term>
          <listitem>
            <para>
	      There was an error during reading the lastlog file
	      in the auth or account phase and thus inactivity
	      of the user cannot be determined.
            </para>
          </listitem>
        </varlistentry>

      </variablelist>
    </para>
  </refsect1>

  <refsect1 xml:id="pam_lastlog-examples">
    <title>EXAMPLES</title>
    <para>
      Add the following line to <filename>/etc/pam.d/login</filename> to
      display the last login time of a user:
    </para>
      <programlisting>
    session  required  pam_lastlog.so nowtmp
      </programlisting>
    <para>
     To reject the user if he did not login during the previous 50 days
     the following line can be used:
    </para>
      <programlisting>
    auth  required  pam_lastlog.so inactive=50
      </programlisting>
  </refsect1>

  <refsect1 xml:id="pam_lastlog-files">
    <title>FILES</title>
    <variablelist>
      <varlistentry>
        <term>/var/log/lastlog</term>
        <listitem>
          <para>Lastlog logging file</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1 xml:id="pam_lastlog-see_also">
    <title>SEE ALSO</title>
    <para>
      <citerefentry>
	<refentrytitle>limits.conf</refentrytitle><manvolnum>5</manvolnum>
      </citerefentry>,
      <citerefentry>
	<refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum>
      </citerefentry>,
      <citerefentry>
	<refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
      </citerefentry>,
      <citerefentry>
	<refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
      </citerefentry>
    </para>
  </refsect1>

  <refsect1 xml:id="pam_lastlog-author">
    <title>AUTHOR</title>
      <para>
        pam_lastlog was written by Andrew G. Morgan &lt;morgan@kernel.org&gt;.
      </para>
      <para>
        Inactive account lock out added by Tomáš Mráz &lt;tm@t8m.info&gt;.
      </para>
  </refsect1>

</refentry>