パスワード変更時に「/usr/share/cracklib/pw_dict: error reading header」エラーが出たときの対処メモ

普段作業用に使っているVMのパスワードがなぜか変更できなくなったので、
そのとき調査したことと、復旧で行ったことをメモしておきます。


環境はCentOS6.6の64ビット版です。

起きたこと


passwd コマンドを使って、パスワードを変更しようとしたところ、以下のようなメッセージが出ました。

# passwd
ユーザー root のパスワードを変更。
新しいパスワード:
/usr/share/cracklib/pw_dict: error reading header
PWOpen: 成功です

調べた


参考リンクを元に環境を調べたところ、cracklibの辞書ファイルが0バイトになっていたため、辞書ファイルが壊れてしまったと推測。

# cd /usr/share/cracklib/
# ls -la
合計 264
drwxr-xr-x.  2 root root   4096  7月 21 12:13 2014 .
drwxr-xr-x. 78 root root   4096  5月 31 16:24 2016 ..
-rw-r--r--.  1 root root   1024  6月 25 15:39 2011 cracklib-small.hwm
-rw-r--r--.  1 root root 235109  6月 25 15:39 2011 cracklib-small.pwd
-rw-r--r--.  1 root root  12416  6月 25 15:39 2011 cracklib-small.pwi
-rw-r--r--.  1 root root    360  6月 25 15:39 2011 cracklib.magic
-rw-r--r--.  1 root root      0  1月 27 16:55 2015 pw_dict.hwm
-rw-r--r--.  1 root root      0  1月 27 16:55 2015 pw_dict.pwd
-rw-r--r--.  1 root root      0  1月 27 16:55 2015 pw_dict.pwi

直す


該当するファイルが含まれるRPMパッケージを確認すると「cracklib-dicts」であることが分かったので、これをインストールしなおすことにしました。

# rpm -qf /usr/share/cracklib/pw_dict.hwm 
cracklib-dicts-2.8.16-4.el6.x86_64


パッケージの依存関係に「pam」があったので、強制再インストールにすることにしました。

# rpm -q --whatrequires cracklib-dicts                                                                             
pam-1.1.1-20.el6.x86_64

# yumdownloader cracklib-dicts
# rpm -Uvh --force cracklib-dicts-2.8.16-4.el6.x86_64.rpm 


cracklib-dictsパッケージの再インストールを行った結果、パスワード変更ができるようになりました。

# passwd
ユーザー root のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。


今日はこんなところで。