Island Life

< ヘッダにstatic member | 文字クラスのマッチ >

2010/08/03

sambaプチはまりメモ

Ubuntu 10.04に入れ替えたら、sambaで別マシンからつなげなくなってることに 気づいた。[homes] セクションでホームディレクトリを見えるようにしてるんだけど、 外のWindowsから \\server\shiro でマウントしようとすると ひたすらパスワードを聞かれるだけでマウントできない。 入れ替えるまでは問題無かったので、smb.confのデフォルトが何か変わったのかなと 調べてて余分な時間を費やしてしまった。

原因は、確かに新しいバージョンで変わったところにあったのだけど、 その変わった箇所というのが意外な盲点だった。たぶんこれではまるのは特殊例。 トラブルシューティングの手順をメモっとく。

  • sambaのdebug levelを上げてログを取る。最初log level = 2 で
    check_ntlm_password:  Authentication for user [shiro] -> [shiro] FAILED with error NT_STATUS_NO_SUCH_USER
    
    というのがわかったが、これでぐぐっても一般的すぎてあんまり役に立たない。
  • log level = 3にしたら手がかりらしきものが。
    check_sam_security: Couldn't find user 'shiro' in passdb.
    
    自分のアカウントが登録されてない?
  • passdbってなんじゃい、と思って調べる。sambaは独自にユーザデータベースを 持ってるのか。デフォルトでは /var/lib/samba/passdb.tdb というのを 見てるらしい。こいつの中身を覗くにはpdbeditというコマンドが使えるようだ。
  • pdbedit -L すると確かに、他のユーザのエントリはあるのにshiroがないぞ。 他のユーザのエントリは多分インストール時に/etc/passwdから情報を取ってると 思うんだが、なぜshiroだけ抜けたのか。
  • ひとつ怪しいのは、shiroのuidが500であること。最近のLinuxでは 一般ユーザのuidは1000から割り当てるけど、昔はもっと小さいuidを 使ってたのだ。500というのはたぶん10年以上前にLinuxをインストール した時に割り当てたuidで、OSを入れ替えても ファイルシステムをそのままアクセスできるようにずっとキープしていたのだった。
  • でも、最近のディストリビューションだとuid < 1000 はシステムアカウント 用だから、sambaインストール時のpassdb構築時に無視されたんではないか、と推測。
  • ビンゴ。"passdb.tdb uid 1000" でぐぐって http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502801 に至る。
  • UID_MIN とかをいじって再インストールするのも面倒なので、 pdbedit -a -u shiro として直接エントリを加えた。 これで解決。

uidを変えるべきかなあ。でもいくつもあるマシンを非同期に アップグレードするから、一斉に変えるのって面倒なんだよなあ。 かといってディレクトリサービス上げるほどの規模でもないし。

Tags: samba, System

Post a comment

Name: