5ヶ月くらい前の話になるが、サーバー管理で苦労した件について記録を残しておこうと思う。もっと高いスキルを持つ人ならば簡単に解決できる問題だろうが、私の場合はまだまだ1つずつ苦労しながら覚えていく段階である。
で、その苦労した話というのが、Cobalt RAQ2J サーバーで突然、ユーザーの追加・修正が一切できなくなってしまったことである。
「3017 バニラ unix からシャドウ パスワードに変換できません。」
こういう意味不明なメッセージが表示されて、前に進まない。ユーザーフォルダはきちんと作成されているが、etc/passwd ファイルは暗号化されたパスワードがそのまま格納されていたので、処理の一番最後の、シャドウパスワード変換の段階で失敗しているのだろうと見当をつけた。
Cobaltサーバーで何か分からないことがあると、まずは、
http://cobaltqube.org/index-j.html 等のページをあたってみるのだが、今回は見つからなかった。
さっそく、Yahoo Japan! で、「バニラ unix シャドウ パスワード」等のキーワードを入れて検索してみたのだが、何を入れてもヒットしない。
他の情報源をあたっても解決しない場合、自分の力で解決するしかない。
Cobalt サーバーの管理画面はどうせ、Perl等のスクリプトで動いているだろうと思うので、ソースプログラムから解析していくしかない。
探してみたら、 commit_passwd.al というファイルにそのPerlスクリプトが記述してあって、「バニラunix ~~」のメッセージを表示している部分が見つかった。
/usr/sbin/pwconv コマンドが失敗した時に、このメッセージが表示されるらしい。
ちなみに、英語版の RAQ サーバーで同じスクリプトを調べてみたら、
「3017 user_cant_pwconv」
というメッセージになっていた。どうしてこのメッセージが「バニラUNIX ~~」の意味になるのか、翻訳の意図がよく分からない。
/usr/sbin/pwconv コマンドを手動で実行してみると、「Can’t lock passwd file」というエラーメッセージが出た。これを何度か試行錯誤しながら実行していたら、Cobaltサーバーのメモリ不足の警告が出始めてきた。
「ps aux 」コマンドで状況を見て、原因がよく分かった。pwconv (プロセスID 9360)がループしていてメモリをどんどん食っていたのである。
原因が分かったので、「kill -9 9360」のコマンドを発行して、再度 Cobaltサーバーの管理画面からユーザー追加・修正をしてみたら、こんどはうまくいった。
最初から ps コマンドでサーバーの状況を確認していればこんな遠回りをしなくても済んだかもしれないけど、おかげでCobaltサーバートラブルについて、少しだけ自信がついた。仕組みを理解すれば、順序よく解決していけるものなのだ。