libpasswdqc configuration file
libpasswdqc is a simple password strength checking library. In addition to
checking regular passwords, it offers support for passphrases and can provide
randomly generated ones. A passwdqc.conf
configuration file may be used to override default libpasswdqc settings.
file consists of 0 or more lines of
the following format:
Empty lines and lines beginning with “
are ignored. Whitespace characters between the
are not allowed.
- Load the specified configuration
FILE in the
passwdqc.conf format. This file may define
any options described in this manual, including load of yet another
configuration file, but loops are not allowed.
- (default: min=disabled,24,11,8,7) The minimum allowed
password lengths for different kinds of passwords/passphrases. The keyword
disabled can be used to disallow passwords of
a given kind regardless of their length. Each subsequent number is
required to be no larger than the preceding one.
N0 is used for passwords consisting of
characters from one character class only. The character classes are:
digits, lower-case letters, upper-case letters, and other characters.
There is also a special class for non-ASCII
characters, which could not be classified, but are assumed to be
N1 is used for passwords consisting of
characters from two character classes that do not meet the requirements
for a passphrase.
N2 is used for passphrases. Note that
besides meeting this length requirement, a passphrase must also consist of
a sufficient number of words (see the
passphrase option below).
N3 and N4
are used for passwords consisting of characters from three and four
character classes, respectively.
When calculating the number of character classes, upper-case letters used as
the first character and digits used as the last character of a password
are not counted.
In addition to being sufficiently long, passwords are required to contain
enough different characters for the character classes and the minimum
length they have been checked against.
- (default: max=40) The maximum
allowed password length. This can be used to prevent users from setting
passwords that may be too long for some system services. The value 8 is
treated specially: if max is set to 8,
passwords longer than 8 characters will not be rejected, but will be
truncated to 8 characters for the strength checks and the user will be
warned. This is to be used with the traditional DES-based password hashes,
which truncate the password at 8 characters.
It is important that you do set max=8 if you
are using the traditional hashes, or some weak passwords will pass the
- (default: passphrase=3) The
number of words required for a passphrase, or 0 to disable the support for
- (default: match=4) The length
of common substring required to conclude that a password is at least
partially based on information found in a character string, or 0 to
disable the substring search. Note that the password will not be rejected
once a weak substring is found; it will instead be subjected to the usual
strength requirements with the weak substring partially discounted.
The substring search is case-insensitive and is able to detect and remove a
common substring spelled backwards.
Whether a new password is allowed to be similar to the old one. The
passwords are considered to be similar when there is a sufficiently long
common substring and the new password with the substring partially
discounted would be weak.
- (default: random=47) The size
of randomly-generated passphrases in bits (24 to 85), or 0 to disable this
feature. Any passphrase that contains the offered randomly-generated
string will be allowed regardless of other possible restrictions.
The only modifier can be used to disallow
The PAM module can be configured to warn of weak passwords only, but not
actually enforce strong passwords. The users
setting will enforce strong passwords for invocations by non-root users
- Normally, the PAM module uses
getpwnam(3) to obtain the user's personal
login information and use that during the password strength checks. This
behavior can be disabled with the non-unix
- (default: retry=3) The number
of times the PAM module will ask for a new password if the user fails to
provide a sufficiently strong password and enter it twice the first
- Ask for the old password as well. Normally, the PAM module
leaves this task for subsequent modules. With no argument, the
ask_oldauthtok option will cause the PAM
module to ask for the old password during the preliminary check phase. If
the ask_oldauthtok option is specified with
the update argument, the PAM module will do
that during the update phase.
- This tells the PAM module to validate the old password
before giving a new password prompt. Normally, this task is left for
The primary use for this option is when
is also specified, in which case no other module gets a chance to ask for
and validate the password. Of course, this will only work with
- Use the new password obtained by other modules stacked
before the PAM module. This disables user interaction within the PAM
module. The only difference between
use_authtok is that the former is
incompatible with ask_oldauthtok.
The pam_passwdqc module was written for Openwall GNU/*/Linux by
openwall.com⟩. This manual page was derived from
. The latter, derived from the
author's documentation, was written for the FreeBSD
Project by ThinkSec AS and NAI Labs, the Security Research Division of Network
Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
(“CBOSS”), as part of the DARPA CHATS research program.