古いSambaサーバのOSをアップグレードしたらいろいろはまった。3.xになって も2.x時代の設定を使っていたつけが顕在化したらしい。

3.xでの変更点

3.xでは標準のパスワードファイルの形式と場所が変更されている。

/etc/smbpasswd
/var/lib/samba/passdb.tdb

また管理者用にpdbeditコマンドが提供されている。管理者権限が必要だけれ ど、smbpasswdよりも汎用で強力。

設定を確認する

testparmコマンドでsmb.confから設定を抜き出して、認証DBにtdbsamが指定さ れていることを確認する。

% testparm -s /etc/samba/smb.conf
...
  passdb backend = tdbsam
...
%

古いsmbpasswdファイルからpassdb.tdbを作る

/etcや/var/backupsにあるsmbpasswd.bakを作業用にコピー。

% sudo cp /etc/smbpasswd.bak /var/lib/samba/smbpasswd.txt

pdbeditで変換する。

% sudo pdbedit -i smbpasswd:/var/lib/samba/smbpasswd.txt \
               -e tdbsam:/var/lib/samba/smbpasswd.tdb

エラーが出たら不具合を直して再試行。今回は単にまずい行を削除した。

% sudo vi /var/lib/samba/smbpasswd.txt
(remove invalid users)
% sudo rm /var/lib/samba/smbpasswd.tdb
(try again)

パスワードファイルを置き換える。

% sudo /etc/init.d/samba stop

% sudo mv /var/lib/samba/passdb.tdb{,.bak}
% sudo mv /var/lib/samba/{smbpasswd,passdb}.tdb

% sudo /etc/init.d/samba restart

logonできるかテストする。

% smbclient --debuglevel=3 //192.168.0.x/jdoe -U jdoe
(jdoe's smb password)
smb: \> exit
%

トラブルシュート

本当にそのユーザが登録されているか確認。

% sudo pdbedit -u jdoe -v

登録されていなければ登録する。

% sudo pdbedit -a -u jdoe

参考

@IT:Samba 3.0の全貌 改訂版[後編](3/3) / たかはしもとのぶ
多様な認証データベースのサポート
http://www.atmarkit.co.jp/flinux/special/samba3b/samba06.html