su
コマンドが使えなくなりました!!!
su -
も使えなければ、su user-name
も使えなくなりました。色々やった結果の妥協策解決策を載せます。
目次
ことの顛末
パスワードポリシーを更新した
研究室サーバに対してセキュリティチェックがあり、
パスワードポリシーをまともにしろ!
と怒られました。
研究室サーバは、UNIX系OSを使っており、新しい学生が配属されると、その都度ユーザを作成していました。もちろんその後passwd
でパスワード設定をするのですが、これまではパスワードポリシーが大学の規定に則っていませんでした。
そこで、大学の規定に則ったパスワードポリシーに更新することになり、ご丁寧に設定方法もいただきました。
設定方法通りにパスワードポリシーを設定し、パスワードポリシーを更新しました。
su
が使えない!?
パスワードポリシー更新後に、確認するため、新しいユーザを作成し、パスワードを設定しました。
一応ログインしようと試みたところ...
$ su test-user su: パスワードが違います
!?
su test-user
を実行して、パスワードを問われずに「パスワードは違います」と怒られてしまいました。パスワードを入力してはじかれた訳ではありません。
これはヤバいと思ったのですが、sudo
は普通に使えました。
やったこと
パスワードポリシーは/etc/pam.d/system-auth
を弄って、更新しました。
これが全てではありませんが、だいたい以下のように設定しました。
password requisite pam_cracklib.so try_first_pass retry=3 type= \ minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
この設定をしたら、su
が使えなくなりました。
セキュリティポリシーを更新前に戻したら、ちゃんとsu
が正常に動くので、こいつが悪さしていることは間違いありません。
ログを見る
とりあえず/var/log/secure
を見ると、
Feb 7 15:47:32 hoge su: pam_unix(su:auth): auth could not identify password for [root]
みたいなメッセージが残っていました。
pam_unixが怪しいことがわかります。
pam_unix
の何が悪さをしているのか探す
/etc/pam.d/system-auth
を再度見てみます。
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
今回、
sha512
shadow
use_authtok
を追加したので、それを1つずつ消してみると...
use_authtok
を消したらsu
が正常に動きました。
犯人を見つけました。
use_authtok
とは?
原因を探るため、use_authtok
について調べました。
この行の最後の引数 use_authtok は、PAM モジュールのスタック化の際における順序の重要性の例を提供します。この引数は、ユーザーに新規パスワードを要求しないようモジュールに指示します。代わりに、以前のパスワードモジュールが記録したパスワードを受け入れます。これにより、新規パスワードはすべて、受け入れ前にパスワードの安全テスト pam_pwquality.so をパスする必要があります。
?????
すみません、さっぱりわかりません。なぜこれがsu
に影響を与えるのでしょうか...
結局、/etc/pam.d/system-auth
から、use_authtok
を消しました。果たしてこれで良かったのか。
まとめ
/etc/pam.d/system-auth
を書き換えた。su
が正常に動かなくなった。use_authtok
を消すと、うまくいった。- なんでそうなるのか、消さずになんとかする方法はあるのか、わからなかった。
もう少しサーバの知識を深めて、理由を特定したいと思います...
もし、ご存じの方がいれば、教えてください。