samba 3でNTドメイン
結構面倒だけど何とかできた。
○環境
samba 3.0.x (細かいバージョンは今分からないけど、同じ3系なら大きく違わないと思う)
LDAPは使わずtdbsamを使用
クライアントPCはWindows XP Pro
○作業
・UNIXのユーザーアカウントが必要なので作成
・sambaにもアカウントを作成
pdbedit -a -u root
試してないけど、ユーザーアカウントを作らなくてもOKっぽい。
Samba 3.0からはLinuxアカウントに登録されていないユーザーでもSambaユーザーとして登録できるようになった。Samba独自のユーザーを追加した際には,LinuxシステムでのユーザーIDとグループIDを自動的に割り当てるが,そのためにsmb.confファイルでは「idmap uid」と「idmap gid」の2つのパラメータで割り当て可能なIDの範囲を指定しておく必要がある。
・マシンアカウントの作成
pdbedit -m -a -u pcname
これ、add machine scriptを設定すれば要らない。
・最低限のsmb.conf
workgroup = DOMAIN
netbios name = PDC
passdb backend = tdbsam
security = user
# PDCになる為の設定、os levelは33以上
domain logons = Yes
os level = 33
preferred master = Yes
domain master = Yes
# 移動プロファイルの設定など
logon path = \%LProfiles%U
logon drive = H:
logon home = \%L%U
#以下、profilesとnetlogonという共有を定義する必要がある
これでとりあえずPDCとして最低限の動作はするはず。
○さらに
・パスワードの変更の同期
WindowsでCtrl-Alt-Delを押してパスワード変更をすると、samba、Linuxの両方のアカウントのパスワードが変更されるようにする。
passwd program = /usr/bin/passwd %u
#この行は要らないかも(今度確認してみる)
pam password change = yes
passwd chat = *New*password* %nn *Re-enter*new*password* %nn *Password*changed*
passwd chatに関してはちょっと分かりにくい。これは、Linuxのpasswdコマンドを入力した時に返される文字列を入力する。これってディストリビューションによって異なる。@ITのこの記事の説明が分かりやすかった。
sambaは内部的にroot権限でpasswdコマンドを実行し、その結果の文字列を見て成功か失敗かを判断する。上の設定例で言えば、passwdコマンドの実行結果が”*Password*changed*”に一致すればsambaはパスワード変更が成功したと判断する。
root権限でのpasswdコマンドの場合、(短すぎる等の)悪いパスワードでも警告は出るがパスワード変更が可能。ただ、その場合passwdコマンドの実行結果が上の文字列と一致しないので、samba的にはパスワード変更失敗、となる。
・smbpasswdからの移行
○その他
・参考サイト
miracle linuxのページ(←リンク切れ…こっちのページも分かりやすい)
日経IT Proのページ
RHELリファレンスガイドのsambaのページ
sambaのオンラインドキュメントは一通り目を通したつもりだけど、ちょっと分かりにくい様な気がする。