Module is unknown
相変わらず意味不明のエラーメッセージを吐くLinux
今日はワタシが管理者になっているPCクラスタのOS (Linux)のアップデート作業を行ったのだけど、これが時間がかかる作業で、今日は4台(ノード)あるうちの3台をアップデートしただけで時間切れ。今やLinuxのインストールCDは5枚組みで、1台あたり1、2時間はかかってしまうんだけど、15分くらい毎にCDドライブのトレイがべ〜っと出てきて次のCDに交換するように要求されるので、放ったらかしにしておくわけにもいかず、昼休みも付きっきりだったんだ。これじゃ、そろそろDVD化してもらわんとイカンですな。
それは良いのだけど、今日アップデートしたうちの1台だけが謎の挙動を示すようになってしまいました。どんな現象かと言うと、telnet、rsh でログインしようとすると "Module is unknown" という意味不明のエラーメッセージを出してログインが失敗するというもの。
$ telnet hogehoge
Trying 10.123.xxx.yyy...
Connected to hogehoge.
Escape character is '^]'.
Red Hat Enterprise Linux AS release 4 (Nahant Update 3)
Kernel 2.6.9-5.ELsmp on an x86_64
login: nai
Password:
Module is unknown
Connection closed by foreign host.
$
|
ssh でならログイン可能なのでセキュリティ関連の何かが絡んでいるんじゃないかとは思うのだけど・・・
にしても、こんな訳の分からないエラーメッセージだけでワタシにどーしろって言うんだ。相変わらず不親切なOSだこと。
仕方ないので出来るだけ色々と調べたわけですが、分かったのは
- シスログによると
"/lib64/security/pam_loginuid.so" を dlopen (動的リンク)しようとして失敗している。
- 確かに
"/lib64/security/pam_loginuid.so" という共有ライブラリ(モジュール)は存在していない。dlopen 失敗は当たり前。
- しかし telnet, rsh が問題なくできている他のマシン上にも
"/lib64/security/pam_loginuid.so" は存在していない。
- このような名前の共有ライブラリは PAMというユーザ認証システムのモジュールらしい。
- と言うことで、
"/lib64/security/pam_loginuid.so" モジュールが存在しない事よりも、何らかの設定の違いで、この名前のモジュールを要求するようになっていたり、いなかったりしている事が問題なんじゃなかろうか?その設定は telnet, rsh側のものか?PAM側のものか?設定情報はどこにあるのか?
会社ではここまで。帰宅してからGoogleで何か同じような事例がないかなぁ?と調べていたら(何と仕事熱心なワタシ^^;)、"/etc/pam.d/login" というファイルに問題があるのではなかろうか、という事が分かりました。このファイル内に
#%PAM-1.0
〜略〜
session required pam_selinux.so close
session required pam_stack.so service=system-auth
session required pam_loginuid.so
session optional pam_console.so
|
なんて記述(赤書き部分)があったりすると、PAMによるユーザ認証の度にありもしないモジュール"/lib64/security/pam_loginuid.so" を読み込もう(dlopen)とするのではなかろうか?と言うわけです。ならば、この行をバッサリ消してしまえば問題が解消されるんじゃないかな。(*1)
今まで telnet なんか「出来るのが当たり前」というシステムを使うだけで、ユーザ認証の仕組みがどう構築されているのかなんて全く知らない世界の事なんでハズしているかもしれませんけどね。まぁ明日出社したら直ぐに試してみましょう。
それにしても、何で1台だけこんな設定がされてしまったんだか。Linuxってやっぱり謎だ。
(*1):この方法で問題が解消されることは確認できましたが、これは半分正解で半分誤りってとこかな?どうもキチンとインストールされれば "/lib64/security/pam_loginuid.so" というファイル(共有ライブラリ)もインストールされるようで、ファイルが無いからって"/etc/pam.d/login" の方から削除してしまうのは乱暴な方法なのかもしれません。
既存のシステムによって "/lib64/security/pam_loginuid.so" がインストールされたりされなかったりする場合があるようで、RedHatのインストーラのバグではないかと思っています。
|