17.7. Active Directory への参加

Samba 3.0 では、Kerberos 認証を使用して Windows で構築された Active Directory へメンバーサーバーとして参加することが可能です。ただし、Active Directory のドメインコントローラの機能はサポートされていません。実際に Samba を Active Directory ドメインに参加させるには以下の手順で行います。

時刻同期の設定

Kerberos 認証を機能させるためにはサーバーとクライアント間で時刻が同期している必要があります。あらかじめ、設定を始める前に時刻を同期しておいてください。

/etc/hosts の確認

/etc/hosts ファイルに Samba サーバー自身のエントリがあることを確認します。ない場合には、次のように指定しておきます。例は、ホスト名が musasabi ドメイン名が w2s.turbolinux.com です。

192.168.1.0         musasabi.w2s.turbolinux.com         musasabi
/etc/resolv.conf の確認

/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 の編集

/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 チケットの取得

次のように実行をして 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 認証に関する設定ファイルの編集と Active Directory ドメインへの参加

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 ファイルの編集

必要に応じて以下のように /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 の起動

Samba を起動します。

# /etc/init.d/smb start
Winbind の起動

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 の場合は、次のように ドメイン名\ユーザー名%パスワードのように指定します。

# wbinfo -a 'W2S.TURBOLINUX.COM\taro%turbolinux'
Samba サーバーへのログイン時にホームディレクトリを作成する

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 サーバーにログインし、存在しない場合にはホームディレクトリが作成されることを確認してください。