(Linux)SambaでActiveDirectoryと連携する
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 を使った認証を実現するには
@IT:Samba 3.0の全貌 改訂版[後編]
Active DirectoryとLinuxの認証を統合しよう:第5回 SambaのWinbind機構による認証統合[1]|gihyo.jp
Windowsドメインのパスワードで Linuxにもログインできるようにする
SambaとActiveDirectory - あるシステム管理者の日常
[samba-jp:20065] Re: samba-3.0.28でwinbindが起動できない。
Turbolinux 11 Server: ユーザーガイド Active Directory への参加
smb.conf
Samba サーバのタイプと smb.conf ファイル
[PR]
by jehoshaphat | 2011-02-10 23:11 | Linux | Trackback(1) | Comments(1)
トラックバックURL : http://jehupc.exblog.jp/tb/14185368
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
Tracked from フリースペース at 2011-02-11 06:44
タイトル : 英語
Windows 7について書いてみました。よかったら見てください。... more
Commented by はらぴ~ at 2017-06-10 15:30 x
/etc/krb5.conf:
admin_server = hogedomaindc01.hogedomain.jp

と、1系のADだけ記載されていますが、1系がdownしてても問題ないんですか?


<< サブ拠点にドメインコントローラを置く (WidnowsServer2... >>