CentOS5 上の Samba 3.0.33 ですが、Windows の ActiveDirectory と連携する方法です。
(SambaサーバをActiveDirecotryのメンバサーバとします)
なお、ドメインの情報は下記のとおりとします。
ドメイン名: hogedomain.jp
ドメインコントローラ1:hogedomaindc01.hogedomain.jp
ドメインコントローラ2:hogedomaindc02.hogedomain.jp
DNSサーバはドメインコントローラ上に構築。(ActiveDirectory統合)
まず /etc/krb5.conf を触ってActiveDirectory 認証のための Kerberos クライアントを設定します。
# vi /etc/krb5.conf
[libdefaults]
default_realm = HOGEDOMAIN.JP ←大文字にします。
[realms]
HOGEDOMAIN.JP ={ ←大文字にします。
kdc = hogedomaindc01.hogedomain.jp ←ドメインコントローラを指定します。
kdc = hogedomaindc02.hogedomain.jp ←ドメコンが複数台ある場合はこのように指定。
admin_server = hogedomaindc01.hogedomain.jp
default_domain = hogedomain.jp
}
[domain_realm]
.hogedomain.jp = HOGEDOMAIN.JP ←大文字にします。
hogedomain.jp = HOGEDOMAIN.JP ←大文字にします。
また、/etc/hosts ファイルに Samba サーバー自身のエントリを追加します。
# vi /etc/hosts
10.0.0.50 sambasv.hogedomain.jp sambasv
/etc/resolv.conf ファイルにDNSサーバと、ドメイン名を指定します。
#vi /etc/resolv.conf
nameserver 10.0.0.10
nameserver 10.0.0.11
search hogedomain.jp
また、下記のように smb.conf を設定します。
# vi /etc/samba/smb.conf
[global]
dos charset = CP932
display charset = UTF-8
workgroup = HOGEDOMAIN ←ドメインのNetBIOS名を大文字で指定
server string = Samba Server Version %v
passdb backend = tdbsam
load printers = No
disable spoolss = Yes
hosts allow =
cups options = raw
netbios name = SAMBASV ←sambaサーバ名
security = ads ←Active Directoryドメインで認証を行う
realm = HOGEDOMAIN.JP ←ActiveDirectoryのFQDNを大文字で指定
[homes]
comment = Home Directories
path = %H/samba
read only = No
browseable = No
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = no
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp ~$*
次に kinit コマンドで、管理者としてActiveDirectoryにアクセスしKerberos認証を行います。
# kinit administrator@HOGEDOMAIN.JP ←大文字にします。
Password for administrator@HOGEDOMAIN.JP: ←Windowsドメインのパスワードを入力します。
認証に失敗すると、下記のように表示されりします。
kinit(v5): Clock skew too great while getting initial credentials
その場合はLinuxの時刻がドメインコントローラとずれてないか確認しましょう。
ケルベロス認証は時刻をキーにしているので、ズレていると認証がうまくいきません。
下記ntpdateコマンドでドメインコントローラに同期すると便利です。
# ntpdate ドメインコントローラIP
19 Apr 17:00:20 ntpdate[14179]: step time server 10.10.0.11 offset -579.279315 sec
うまく認証できればプロンプトに戻ります。取得した Kerberos チケットは、下記のように klist コマンドで確認できます。
[root@sambasv ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@HOGEDOMAIN.JP
Valid starting Expires Service principal
09/16/10 13:50:44 09/16/10 23:50:48 krbtgt/HOGEDOMAIN.JP@HOGEDOMAIN.JP
renew until 09/17/10 13:50:44
09/16/10 13:51:20 09/16/10 23:50:48 hogedomaindc02$@HOGEDOMAIN.JP
renew until 09/17/10 13:50:44
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
そして、net ads join でActiveDirectoryドメインに参加します。
[root@sambasv ~]# net ads join -U Administrator ←ドメイン参加権限を持ったユーザを指定します
Administrator's password: ←上記のユーザのパスワードを指定します。
Using short domain name -- HOGEDOMAIN
Joined 'SAMBASV' to realm 'HOGEDOMAIN.JP'
これで、ドメインコントローラ上で「Active Directory ユーザーとコンピュータ」から確認すると、SAMBASV がコンピュータの所に追加されているはずです。
SMBサービスを再起動します。
# service smb restart
後は、sambaサーバ上にWindows側からアクセスを行うユーザーを登録します。
(※認証を行うのをADにしているだけなので、Unixユーザは必要となります。ただし、Winbindを使うとユーザ情報を直接ADから取得するのでこの作業は不要になります。windindを使ってユーザ情報もADから取得する方法については、(Linux)ActiveDirectory連携したSambaサーバでWinクライアントからSamba共有フォルダにシングルサインオンを参照。
)
# useradd -m hogeuser01
これでドメイン参加してるWindows端末で、上記で登録したユーザ名(hogeuser01)でログインし、SambaサーバにExplorerにアクセスする共有フォルダが見えるはずです。
(ドメインの別ユーザでログインすると認証ダイアログが出てきます。その時はユーザ名に、hogedmain\hogeuser01 と、ドメイン名を明示しないといけないのが注意点です。)
余談ですが、設定中にどうもsambaが落ちてるような感じでした。
restart させると失敗します。
[root@sambasv ~]# service smb restart
SMB サービスを停止中: [失敗]
NMB サービスを停止中: [ OK ]
SMB サービスを起動中: [ OK ]
NMB サービスを起動中: [ OK ]
sambaのログを見てみると、下記のようになっていました。
# /var/log/samba/smbd.log
[2010/09/16 15:44:13, 0] lib/util.c:log_stack_trace(1759)
BACKTRACE: 7 stack frames:
#0 smbd(log_stack_trace+0x2d) [0x4a9bbd]
#1 smbd(smb_panic+0x5d) [0x4a9ced]
#2 smbd [0x45ac10]
#3 smbd(initialize_password_db+0xe) [0x45ac5e]
#4 smbd(main+0x655) [0x587135]
#5 /lib/libc.so.6(__libc_start_main+0xdc) [0x887e9c]
#6 smbd [0x2ad871]
[2010/09/16 15:44:13, 0] lib/fault.c:dump_core(181)
dumping core in /var/log/samba/cores/smbd
原因は、/etc/samba/smb.conf の passdb backend の値が正しいもので無かったからのようです。
解明するのに結構時間かかりましたよ。。
結構設定に時間かかりました。
sambaはマイナーバージョンでも結構設定変わったりするらしいので大変です。
参考:
Samba で Active Directory を使った認証を実現するには
Active DirectoryとLinuxの認証を統合しよう:第5回 SambaのWinbind機構による認証統合[1]|gihyo.jp
Windowsドメインのパスワードで Linuxにもログインできるようにする
SambaとActiveDirectory - あるシステム管理者の日常
[samba-jp:20065] Re: samba-3.0.28でwinbindが起動できない。