Samba 3.0 では、Kerberos 認証を使用して Windows で構築された Active Directory へメンバーサーバーとして参加することが可能です。ただし、Active Directory のドメインコントローラの機能はサポートされていません。実際に Samba を Active Directory ドメインに参加させるには以下の手順で行います。
Kerberos 認証を機能させるためにはサーバーとクライアント間で時刻が同期している必要があります。あらかじめ、設定を始める前に時刻を同期しておいてください。
/etc/hosts ファイルに Samba サーバー自身のエントリがあることを確認します。ない場合には、次のように指定しておきます。例は、ホスト名が musasabi ドメイン名が w2s.turbolinux.com です。
192.168.1.0 musasabi.w2s.turbolinux.com musasabi |
/etc/resolv.conf ファイルに Active Directory ドメインの DNS サーバーが記述されていることを確認します。ない場合には、次のように指定しておきます。
nameserver 192.168.1.30 |
![]() | Samba 3.0.25 以降、net ads join コマンドを実行した際に Active Directory ドメインの DNS サーバーに対して A レコードの追加が可能になっています。Active Directory ドメインでは、動的更新が可能なように適切に定義された DNS サーバーが稼働していなければなりません。また、Samba サーバー側では、/etc/resolv.conf ファイルにこの DNS サーバーを登録しておきます。 |
/etc/krb5.conf の以下の部分を編集します。以下は、Kerberos の Realm名 が W2S.TURBOLINUX.COM で Active Directory のドメインコントローラ が win2000s.w2s.turbolinux.com の場合の例です。修正の部分を環境に合わせて編集してください。
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default realm = W2S.TURBOLINUX.COM <- 修正
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
W2S.TURBOLINUX.COM = { <- 修正
kdc = win2000s.w2s.turbolinux.com:88 <- 修正
admin_server = win2000s.w2s.turbolinux.com:749 <- 修正
default_domain = W2S.TURBOLINUX.COM <- 修正
}
[domain_realm]
.w2s.turbolinux.com = W2S.TURBOLINUX.COM <- 修正
w2s.turbolinux.com = W2S.TURBOLINUX.COM <- 修正
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
} |
kdc = には、Active Directory ドメインのコントローラとなっているホストの FQDN を指定します。[domain_realm] には、DNS のドメイン名と Kerberos Realm 名のマッピングを指定しています。
![]() | Realm 名は必ず大文字で指定します。 |
次のように実行をして Kerberos 認証で使用されるチケットを取得しておきます。
# /usr/kerberos/bin/kinit administrator@W2S.TURBOLINUX.COM Password for administrator@W2S.TURBOLINUX.COM: <- パスワードの入力 |
成功すると何も表示されません。取得した Kerberos チケットは、klist コマンドで確認できます。
# /usr/kerberos/bin/klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@W2S.TURBOLINUX.COM
Valid starting Expires Service principal
11/30/07 09:33:54 11/30/07 19:38:04 krbtgt/W2S.TURBOLINUX.COM@W2S.TURBOLINUX.COM
renew until 12/01/07 09:33:54
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached |
![]() | kinit や klist が、krb5-workstation パッケージに含まれています。インストールされていない場合には、turbo+ や rpm コマンドなどであらかじめインストールしておいてください。turbo+ について詳細は、第28章を参照してください。 |
Winbind による認証に必要な /etc/samba/smb.conf、/etc/nsswich.conf、/etc/pam.d/system-auth の各ファイルを編集します。それぞれのファイルを直接編集し、 net ads join コマンドで Active Directory ドメインへの参加することもできますが、authconfig-tui を利用することでファイルの編集およびドメイン参加をツールで自動的に行えます。authconfig-tui を使用するには次のように実行します。必要な場合は、各ファイルのバックアップを作成しておいてください。
# authconfig-tui |

[↓][↑]キーで移動し[Space]キーで "winbind を使用" と "winbind 認証を使用" を選択し[次]を押します。
![]() | authconfig-tui の操作は画面下部のナビゲーションバーで確認できます。 |
次の画面が表示されます。

"セキュリティモデル" は、 ads が選択されていることを確認し、"ドメイン" に Active Directory のドメイン名を、"ドメインコントローラ" に Active Directory のドメインコントローラの FQDN を "ADS レルム(Realm)" に Kerberos の Realm 名 を指定します。"テンプレートシェル" には、/bin/bash を選択しています。例は ドメイン名と Realm 名が W2S.TURBOLINUX.COM で Active Directory のドメインコントローラ が win2000s.w2s.turbolinux.com の場合です。環境に合わせて指定してください。
Active Directory へ参加するには [ドメイン参加] を押します。「設定の保存」ダイアログが表示されたら[はい]を押します。

"パスワード" に administrator のパスワードを入力し[OK]を押します。
「Winbind 設定」画面に戻ったら[OK]を押して終了します。以下のように画面に標示されていれば Active Directory ドメインへの参加が成功し winbind サービスが起動されています。
[/usr/bin/net join -w W2S.TURBOLINUX.COM -S win2000s.w2s.turbolinux.com -U Administrator] Administrator's password:<...> Using short domain name -- W2S.TURBOLINUX.COM Joined 'RIKA3' to realm 'W2S.TURBOLINUX.COM' Restarting winbind services: Shutting down winbind services: OK Starting winbind services: OK done. |
authconfig-tui では /etc/samba/smb.conf ファイルの以下部分を例のように編集します。
#--authconfig--start-line-- # Generated by authconfig on 2007/11/29 12:03:00 # DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--) # Any modification may be deleted or altered by authconfig in future workgroup = W2S.TURBOLINUX.COM password server = win2000s.w2s.turbolinux.com realm = W2S.TURBOLINUX.COM security = ads idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 template shell = /bin/bash winbind use default domain = false winbind offline logon = false #--authconfig--end-line-- ; workgroup = MYGROUP ; security = user |
authconfig-tui では /etc/nsswitch.conf ファイルの次の部分を編集しています。
passwd: files nisplus winbind shadow: files nisplus winbind group: files nisplus winbind |
authconfig-tui では /etc/pam.d/system-auth ファイルの次の部分を編集しています。
auth sufficient pam_winbind.so use_first_pass account required pam_unix.so broken_shadow account [default=bad success=ok user_unknown=ignore] pam_winbind.so password sufficient pam_winbind.so use_authtok |
必要に応じて以下のように /etc/samba/smb.conf ファイルを編集してください。
#--authconfig--start-line-- # Generated by authconfig on 2007/11/29 12:03:00 # DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--) # Any modification may be deleted or altered by authconfig in future workgroup = W2S.TURBOLINUX.COM password server = win2000s.w2s.turbolinux.com realm = W2S.TURBOLINUX.COM security = ads idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 template shell = /bin/bash winbind use default domain = true <- 変更 winbind offline logon = false winbind enum groups = yes <- 追加 winbind enum users = yes <- 追加 template homedir = /home/%U #--authconfig--end-line-- ; workgroup = MYGROUP ; security = user |
ログイン時にドメイン名の指定を省略する場合には、次の部分の値を "true" または "yes" に変更します。
winbind use default domain = true |
setpwent()、getpwent() 、endpwent() などのシステムコール群でユーザー一覧を取得する必要がある場合には、次の 2 行を加えます。
winbind enum groups = yes winbind enum users = yes |
Samba を起動します。
# /etc/init.d/smb start |
Winbind を再起動します。
# /etc/init.d/winbind restart |
システム起動時に Winbind が動作するように chkconfig コマンドを実行 しておきます。
# chkconfig winbind on |
次のように実行し Active Directory に登録されているユーザーを取得できるか確認します。
# wbinfo -u Administrator Guest ... taro jiro |
次のように実行し Active Directory に登録されているユーザーでのログイン認証を確認します。次の例は、ユーザー taro、パスワード turbolinux で認証を確認しています。'ユーザー名%パスワード' を ' (シングルクォート)で囲み指定します。
# wbinfo -a 'taro%turbolinux' plaintext password authentication succeeded challenge/response password authentication succeeded |
![]() | smb.conf ファイルの winbind use default domain = の値が false の場合は、次のように ドメイン名\ユーザー名%パスワードのように指定します。
|
Samba サーバーに Active Directory のアカウントでログインをした際に、ホームディレクトリが存在しないため警告が表示されます。ログイン時にホームディレクトリを作成するには、/etc/pam.d/sytem-auth に以下を記述します。
session required pam_mkhomedir.so skel=/etc/skel umask=0022 |
また、設定した場合に /home/ユーザー名 としてホームディレクトリを作成するには、/etc/samba/smb.conf ファイルに以下を追加します。
template homedir = /home/%U |
/etc/samba/smb.conf の設定を変更した場合は、Winbind を再起動します。
# /etc/init.d/winbind restart |
Active Directory のユーザーで Samba サーバーにログインし、存在しない場合にはホームディレクトリが作成されることを確認してください。