SambaをActive Directoryドメインメンバとして構成する
はじめに
Sambaドメインメンバは、Sambaを実行しているドメインに参加しているLinuxマシンで、NT4プライマリドメインコントローラ(PDC)またはActive Directory(AD)ドメインコントローラ(DC)などのドメインサービスを提供しません。
Sambaドメインメンバーでは、次のことができます。
- ファイルとディレクトリのローカルACLでドメインユーザーとグループを使用します。
 - ファイルサーバーとして機能するように共有を設定します。
 - プリントサービスをプリントサーバーとして機能させるように設定します。
 - ドメインユーザがローカルにインストールされたサービスにローカルでログオンするか、または認証することができるようにPAMを設定します
 
。
Samba NT4ドメインまたはSamba ADの設定の詳細については、「svradmin/samba4/transdoc/domain_control」を参照してください。
インストールの準備
一般的な準備
- Sambaプロセスが実行中でないことを確認します
 
# ps ax | egrep "samba|smbd|nmbd|winbindd"
もし、samba、smbd、nbmd、あるいはwinbinddなどのプロセスが出力された場合は、そ
のプロセスを停止させて下さい。
- 以前にこのホストでSambaインストールを実行していた場合:
 - 既存の
smb.confファイルを削除してください。ファイルへのパスを一覧表示するには、次のように入力して下さい。 
# smbd -b | grep "CONFIGFILE" CONFIGFILE: /usr/local/samba/etc/samba/smb.conf
- 全ての
*.tdbや*.ldbなどのSambaデータベースファイルを削除して下さい。Sambaデータベースを含むフォルダを一覧表示するには: 
# smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR" LOCKDIR: /usr/local/samba/var/lock/ STATEDIR: /usr/local/samba/var/locks/ CACHEDIR: /usr/local/samba/var/cache/ PRIVATE_DIR: /usr/local/samba/private/
クリーンな環境から始めて、混乱を防ぐのに役立ちます。以前のSambaインストールのファイルは、新しいドメインメンバのインストールと混在 することはありません。
Active Directoryドメインに参加するためのドメインメンバーの準備
DNSの設定
詳細は、「[[./linux_and_unix_dns_configuration|./linux_and_unix_dns_configuration]]」を参照して下さい。
Kerberosの設定
SambaはHeimdalとMIT Kerberosバックエンドをサポートしています。ドメインメンバーにKerberosを設定するには、/etc/krb5.confファイルで次のように設定します。
[libdefaults]
    default_realm = SAMDOM.EXAMPLE.COM
    dns_lookup_realm = false
    dns_lookup_kdc = true
前の例では、SAMDOM.EXAMPLE.COMレルムのKerberosを構成しています。
Sambaチームは/etc/krb5.confファイルにさらなるパラメータを設定しないことを推奨しています。
時間同期の設定
Kerberosでは、すべてのドメインメンバーに時刻同期が必要です。したがって、NTPクライアントを設定することをお勧めします。詳細について は、Unixドメインメンバでの時刻同期の設定を参照してください。
ローカルホスト名の解決
ホストをドメインに参加させると、SambaはAD DNSゾーンにホスト名を登録しようとします。このため、netユーティリティは、DNSを使用するか
、/etc/hostsファイルの正しいエントリを使用してホスト名を解決できる必要があります。
ホスト名が正しく解決されることを確認するには、getent hostsコマンドを使用します。例えば:
# getent hosts M1 10.99.0.5 M1.samdom.example.com M1
ホスト名とFQDNは、127.0.0.1のIPアドレス、またはドメインメンバーのLANインターフェイスで使用されているIPアドレス以外のIPアドレスに解決してはなりません。
出力が表示されないか、ホストが間違ったIPアドレスに解決され、dhcpを使用していない場合は、/etc/hostsファイルに正しいエ
ントリを設定します。例えば:
127.0.0.1 localhost 10.99.0.5 M1.samdom.example.com M1
dhcpを使用している場合は、/etc/hostsに上記の '127.0.0.1'行しか含まれていないことを確認してください。引き続き問題が発
生する場合は、DHCPサーバーを制御しているシステム管理者に連絡してください。
- Debian関連のシステムでは、
/etc/hostsに127.0.1.1というホスト名も表示されますので、sambaをインストールする前にそれを削除してください。 - 次の行はそのままにして下さい:
127.0.0.1 localhost 
マシンのホスト名にエイリアスを追加する必要がある場合は、127.0.0.1の行ではなく、マシンのipaddressで始まる行の末尾にエ
イリアスを追加します。
NT4ドメインに参加するためのドメインメンバの準備
ホストをNT4ドメインに参加させるには、準備は必要ありません。
Sambaのインストール
詳細はSambaのインストールを参照してください。
{{#invoke:Message box|imbox}}
Sambaの設定
基本的なsmb.confファイルの設定
UNIXドメインメンバーにsmb.confを設定するときには、いくつかの決定をする必要があります。
- Samba AD DCを含め、全ての場所でユーザーとグループのIDが同じであることを要求していますか?
 - ユーザーとグループがUnixドメインメンバー上で同じIDを持つことのみを望みますか?
 
決定をした後、もう一つ決めることがあります。この決定は、あなたがすでに決めた事に対して影響を与える可能性があります。
- 個々のユーザが異なるログインシェルやUnixホームディレクトリパスを必要としますか?
 
ユーザーが異なるログインシェルやUnixホームディレクトリパスを持つ必要がある場合、またはそれらのIDがどこにでも同じIDを持つようにするには、winbind 'ad'バックエンドを使用し、RFC2307属性をADに追加する必要があります。
{{#invoke:Message box|imbox}}
{{#invoke:Message box|imbox}}
ユーザーが認証にSamba AD DCのみを使用し、そのアカウントにデータを格納したりログインしたりしない場合は、winbind 'rid'バックエンドを使用できます。これはWindows RIDからのユーザーIDとグループIDを計算します。もし、すべてのUnixドメインメンバーのsmb.confの[global]を同じにすれば、同じIDを取得します。 'rid'バックエンドを使用する場合、ADに何も追加する必要はなく、実際にはRFC2307の属性は無視されます。 'rid'バックエンドを使用する場合、smb.confに 'template shell'と 'template homedir'パラメータを設定する必要があります。これらはグローバル設定であり、RFC2307の属性とは異なり、誰もが同じログインシェルとUnixホームディレクトリパスを取得します。個々のUNIXホームディレクトリのパスとシェルを設定します。
Sambaを設定するもう1つの方法があります。これは、ユーザとグループが同じIDをどこにでも持つことを要求しますが、ユーザが同じログインシェルを持ち、同じUnixホームディレクトリパスを使用するだけです。 winbind 'ad'バックエンドを使用し、smb.confのテンプレート行を使用す ることで、これを行うことができます。この方法では、uidNumber属性とgidNumbers属性をADに追加するだけで済みます。
どのwinbindバックエンドを使用するか決定したら、smb.confの 'idmap config'で使用する範囲をさらに決定する必要があります。デフォルトでは、Unixドメインのメンバーには、複数のブロックのユーザーとグループがあります。