shadow/man/passwd.1.xml
2008-10-11 11:44:43 +00:00

453 lines
14 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 1989 - 1994, Julianne Frances Haugh
Copyright (c) 2007 - 2008, Nicolas François
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the copyright holders or contributors may not be used to
endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY ENCRYPT_METHOD SYSTEM "login.defs.d/ENCRYPT_METHOD.xml">
<!ENTITY MD5_CRYPT_ENAB SYSTEM "login.defs.d/MD5_CRYPT_ENAB.xml">
<!ENTITY OBSCURE_CHECKS_ENAB SYSTEM "login.defs.d/OBSCURE_CHECKS_ENAB.xml">
<!ENTITY PASS_ALWAYS_WARN SYSTEM "login.defs.d/PASS_ALWAYS_WARN.xml">
<!ENTITY PASS_CHANGE_TRIES SYSTEM "login.defs.d/PASS_CHANGE_TRIES.xml">
<!ENTITY PASS_MAX_LEN SYSTEM "login.defs.d/PASS_MAX_LEN.xml">
<!ENTITY SHA_CRYPT_MIN_ROUNDS SYSTEM "login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml">
]>
<refentry id='passwd.1'>
<!-- $Id$ -->
<refmeta>
<refentrytitle>passwd</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo class="sectdesc">User Commands</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>passwd</refname>
<refpurpose>change user password</refpurpose>
</refnamediv>
<refsynopsisdiv id='synopsis'>
<cmdsynopsis>
<command>passwd</command>
<arg choice='opt'>
<replaceable>options</replaceable>
</arg>
<arg choice='opt'>
<replaceable>LOGIN</replaceable>
</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id='description'>
<title>DESCRIPTION</title>
<para>
The <command>passwd</command> command changes passwords for user accounts.
A normal user may only change the password for his/her own account, while
the superuser may change the password for any account.
<command>passwd</command> also changes the account or associated
password validity period.
</para>
<refsect2 id='password_changes'>
<title>Password Changes</title>
<para>
The user is first prompted for his/her old password, if one is
present. This password is then encrypted and compared against the
stored password. The user has only one chance to enter the correct
password. The superuser is permitted to bypass this step so that
forgotten passwords may be changed.
</para>
<para>
After the password has been entered, password aging information is
checked to see if the user is permitted to change the password at
this time. If not, <command>passwd</command> refuses to change the
password and exits.
</para>
<para>
The user is then prompted twice for a replacement password. The
second entry is compared against the first and both are required to
match in order for the password to be changed.
</para>
<para>
Then, the password is tested for complexity. As a general guideline,
passwords should consist of 6 to 8 characters including one or more
characters from each of the following sets:
</para>
<itemizedlist mark='bullet'>
<listitem>
<para>lower case alphabetics</para>
</listitem>
<listitem>
<para>digits 0 thru 9</para>
</listitem>
<listitem>
<para>punctuation marks</para>
</listitem>
</itemizedlist>
<para>
Care must be taken not to include the system default erase or kill
characters. <command>passwd</command> will reject any password which
is not suitably complex.
</para>
</refsect2>
<refsect2 id='hints_for_user_passwords'>
<title>Hints for user passwords</title>
<para>
The security of a password depends upon the strength of the
encryption algorithm and the size of the key space. The
<emphasis>UNIX</emphasis> System encryption method is based on the
NBS DES algorithm and is very secure. The size of the key space
depends upon the randomness of the password which is selected.
</para>
<para>
Compromises in password security normally result from careless
password selection or handling. For this reason, you should not
select a password which appears in a dictionary or which must be
written down. The password should also not be a proper name, your
license number, birth date, or street address. Any of these may be
used as guesses to violate system security.
</para>
<para>
You can find advices on how to choose a strong password on
http://en.wikipedia.org/wiki/Password_strength
</para>
</refsect2>
</refsect1>
<refsect1 id='options'>
<title>OPTIONS</title>
<para>
The options which apply to the <command>passwd</command> command are:
</para>
<variablelist remap='IP'>
<varlistentry>
<term>
<option>-a</option>, <option>--all</option>
</term>
<listitem>
<para>
This option can be used only with <option>-S</option> and causes show
status for all users.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-d</option>, <option>--delete</option>
</term>
<listitem>
<para>
Delete a user's password (make it empty). This is a quick way
to disable a password for an account. It will set the named
account passwordless.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-e</option>, <option>--expire</option>
</term>
<listitem>
<para>
Immediately expire an account's password. This in effect can
force a user to change his/her password at the user's next login.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-h</option>, <option>--help</option></term>
<listitem>
<para>Display help message and exit.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-i</option>, <option>--inactive</option> <replaceable>INACTIVE</replaceable>
</term>
<listitem>
<para>
This option is used to disable an account after the password has
been expired for a number of days. After a user account has had
an expired password for <replaceable>INACTIVE</replaceable>
days, the user may no longer sign on to the account.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-k</option>, <option>--keep-tokens</option>
</term>
<listitem>
<para>
Indicate password change should be performed only for expired
authentication tokens (passwords). The user wishes to keep their
non-expired tokens as before.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-l</option>, <option>--lock</option>
</term>
<listitem>
<para>
Lock the password of the named account. This option disables a
password by changing it to a value which matches no possible
encrypted value (it adds a ´!´ at the beginning of the
password).
</para>
<para>
Note that this does not disable the account. The user may
still be able to login using another authentication token
(e.g. an SSH key). To disable the account, administrators
should use <command>usermod --expiredate 1</command> (this set
the account's expire date to Jan 2, 1970).
</para>
<para>
Users with a locked password are not allowed to change their
password.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-m</option>, <option>--mindays</option> <replaceable>MIN_DAYS</replaceable>
</term>
<listitem>
<para>
Set the minimum number of days between password changes to
<replaceable>MIN_DAYS</replaceable>. A value of zero for this field
indicates that the user may change his/her password at any time.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-q</option>, <option>--quiet</option>
</term>
<listitem>
<para>
Quiet mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-r</option>, <option>--repository</option> <replaceable>REPOSITORY</replaceable>
</term>
<listitem>
<para>
change password in <replaceable>REPOSITORY</replaceable> repository
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-S</option>, <option>--status</option>
</term>
<listitem>
<para>
Display account status information. The status information
consists of 7 fields. The first field is the user's login name.
The second field indicates if the user account has a locked
password (L),
has no password (NP), or has a usable password (P). The third
field gives the date of the last password change. The next four
fields are the minimum age, maximum age, warning period, and
inactivity period for the password. These ages are expressed in
days.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-u</option>, <option>--unlock</option>
</term>
<listitem>
<para>
Unlock the password of the named account. This option
re-enables a password by changing the password back to its
previous value (to the value before using the
<option>-l</option> option), and by resetting the account
expiry field.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-w</option>, <option>--warndays</option> <replaceable>WARN_DAYS</replaceable>
</term>
<listitem>
<para>
Set the number of days of warning before a password change is
required. The <replaceable>WARN_DAYS</replaceable> option is
the number of days prior to the password expiring that a user
will be warned that his/her password is about to expire.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-x</option>, <option>--maxdays</option> <replaceable>MAX_DAYS</replaceable>
</term>
<listitem>
<para>
Set the maximum number of days a password remains valid. After
<replaceable>MAX_DAYS</replaceable>, the password is required
to be changed.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id='caveats'>
<title>CAVEATS</title>
<para>
Not all options may be supported. Password complexity checking may
vary from site to site. The user is urged to select a password as
complex as he or she feels comfortable with. Users may not be able to
change their password on a system if NIS is enabled and they are not
logged into the NIS server.
</para>
</refsect1>
<refsect1 id='configuration' condition="no_pam">
<title>CONFIGURATION</title>
<para>
The following configuration variables in
<filename>/etc/login.defs</filename> change the behavior of this
tool:
</para>
<variablelist>
&ENCRYPT_METHOD;
&MD5_CRYPT_ENAB;
&OBSCURE_CHECKS_ENAB;
&PASS_ALWAYS_WARN;
&PASS_CHANGE_TRIES;
&PASS_MAX_LEN; <!-- documents also PASS_MIN_LEN -->
&SHA_CRYPT_MIN_ROUNDS;
</variablelist>
</refsect1>
<refsect1 id='files'>
<title>FILES</title>
<variablelist>
<varlistentry>
<term><filename>/etc/passwd</filename></term>
<listitem>
<para>User account information.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>/etc/shadow</filename></term>
<listitem>
<para>Secure user account information.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id='exit_values'>
<title>EXIT VALUES</title>
<para>
The <command>passwd</command> command exits with the following values:
<variablelist>
<varlistentry>
<term><replaceable>0</replaceable></term>
<listitem>
<para>success</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>1</replaceable></term>
<listitem>
<para>permission denied</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>2</replaceable></term>
<listitem>
<para>invalid combination of options</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>3</replaceable></term>
<listitem>
<para>unexpected failure, nothing done</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>4</replaceable></term>
<listitem>
<para>unexpected failure, <filename>passwd</filename> file missing</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>5</replaceable></term>
<listitem>
<para><filename>passwd</filename> file busy, try again</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>6</replaceable></term>
<listitem>
<para>invalid argument to option</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 id='see_also'>
<title>SEE ALSO</title>
<para>
<citerefentry>
<refentrytitle>group</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>passwd</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>shadow</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>.
<citerefentry>
<refentrytitle>usermod</refentrytitle><manvolnum>8</manvolnum>
</citerefentry>.
</para>
</refsect1>
</refentry>