Introduction to CrackLib
The CrackLib package contains a
library used to enforce strong passwords by comparing user selected
passwords to words in chosen word lists.
This package is known to build and work properly using an LFS-7.10
There are additional word lists available for download, e.g., from
CrackLib can utilize as many, or
as few word lists you choose to install.
Users tend to base their passwords on regular words of the spoken
language, and crackers know that. CrackLib is intended to filter out such bad
passwords at the source using a dictionary created from word
lists. To accomplish this, the word list(s) for use with
CrackLib must be an exhaustive
list of words and word-based keystroke combinations likely to be
chosen by users of the system as (guessable) passwords.
The default word list recommended above for downloading mostly
satisfies this role in English-speaking countries. In other
situations, it may be necessary to download (or even create)
additional word lists.
Note that word lists suitable for spell-checking are not usable
as CrackLib word lists in
countries with non-Latin based alphabets, because of
combinations” that make bad passwords.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cracklib
Installation of CrackLib
Install CrackLib by running the
sed -i '/skipping/d' util/packer.c &&
./configure --prefix=/usr \
Now, as the
make install &&
mv -v /usr/lib/libcrack.so.* /lib &&
ln -sfv ../../lib/$(readlink /usr/lib/libcrack.so) /usr/lib/libcrack.so
Issue the following commands as the
root user to install the recommended word list
and create the CrackLib
dictionary. Other word lists (text based, one word per line) can
also be used by simply installing them into
/usr/share/dict and adding them to the
install -v -m644 -D ../cracklib-words-2.9.6.gz \
gunzip -v /usr/share/dict/cracklib-words.gz &&
ln -v -sf cracklib-words /usr/share/dict/words &&
echo $(hostname) >> /usr/share/dict/cracklib-extra-words &&
install -v -m755 -d /lib/cracklib &&
create-cracklib-dict /usr/share/dict/cracklib-words \
If desired, check the proper operation of the library as an
unprivileged user by issuing the following command:
If you are installing CrackLib
after your LFS system has been completed and you have the
Shadow package installed, you
must reinstall Shadow-4.2.1 if you wish to provide strong
password support on your system. If you are now going to install
the Linux-PAM-1.3.0 package, you may disregard
this note as Shadow will be
reinstalled after the Linux-PAM
sed -i '/skipping/d'
util/packer.c: Remove a meaningless warning.
This parameter forces the installation of the CrackLib dictionary to the
switch prevents installation of static versions of the libraries.
mv -v /usr/lib/libcrack.so.2*
/lib and ln -v -sf
../../lib/libcrack.so.2.8.1 ...: These two commands
and associated symlink from
/lib, then recreates the
/usr/lib/libcrack.so symlink pointing
to the relocated file.
install -v -m644 -D
...: This command creates the
/usr/share/dict directory (if it doesn't already
exist) and installs the compressed word list there.
ln -v -s cracklib-words
/usr/share/dict/words: The word list is linked to
words is the primary
word list in the
directory. Omit this command if you already have a
/usr/share/dict/words file installed on your
>>...: The value of hostname is echoed to a file
extra file is intended to be a site specific list which includes
easy to guess passwords such as company or department names, user's
names, product names, computer names, domain names, etc.
...: This command creates the CrackLib dictionary from the word lists.
Modify the command to add any additional word lists you have
cracklib-packer, cracklib-unpacker and
libcrack.so and the _cracklibmodule.so
/lib/cracklib, /usr/share/dict and
is used to determine if a password is strong.
is used to format text files (lowercases all words,
removes controle characters and sorts the lists).
creates a database with words read from standard input.
displays on standard output the database specified.
is used to create the CrackLib dictionary from the given
provides a fast dictionary lookup method for strong
Last updated on 2016-08-27 12:00:09 -0500