Sambaの passwd chat

passwd chat で、さんざん悩みました。
まず、
"RAP86: The specified password is invalid."
と出たのですが、「*」(ワイルドカード)が利くなら、それで1行分まるまる受け付けると思ってたため、泥沼に入りました。RAP86をキーワードにぐぐってもそう大した情報は無かったです。

ただ、localhostを hosts.allow に入れておけ、というのは重要かと。
http://www.samba.gr.jp/project/kb/J0/0/16.html

あと、root権限でのパスワード変更を行うと、OSサイドのパスワード変更はされないのも重要かと。
http://www.samba.gr.jp/project/kb/J0/0/17.html

そうこうしていても、どうにもうまくいかず、あと考えられるのは、smbdからのパスワード変更で、どこかで誰かがわるさをして、passwdの変更を抑止されているのかも…などと考えていました。
が、ここで、ふと、ログをちゃんと見ようと思いたち、passwd chat debug を Yes にして、log level を 100 にして実行してみました。
ボリュームがすごいのですが、ポイントは、"smbd/chgpasswd.c" を探すこと。less なんかでスキップできます。あと、確認のためのパスワード変更には、swat経由よりも、smbpasswd の方がなんとなく楽です。

で、ログを見ていると…「*が利いてないやん」
うそーっと思いつつ、"New Password: "のパートに、もうちょっと文字列を付け足してみると…ちゃんと動くやん。

なんだよそれ。

でもこれでうまくいきそうな気がしてきました。"Re-enter"のパートも文字列を付け足して、はじめは失敗しましたが、ログを読むと "[" の直後に改行が来ているので、多分行頭に0x0aが来ているんだろうと思い、先頭に*をつると、うまくいきました。

これらをまとめると、ここまで書かないといけないっぽいとの結論。

New*Password: %n\n *Re-enter*new*Password:* %n\n *passwd:*password*successfully*changed*for*

もしかしたら、変更完了のパートはもっと少なくても済むかも知れません。

今日の教訓として、「いそがばまわれ」を挙げておきます。レベル100だとボリュームがすごかったから後回しにしました、なんて、ああ恥ずかしい。