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ドメインのメンバーには、複数のブロックのユーザーとグループがあります。
- ローカルシステムのユーザーとグループ:これらは0~999になります
- ローカルUnixユーザーとグループ:1000から始まります
- 「よく知られているSID」:????
- DOMAINのユーザーとグループ:ADUCでは、デフォルトで10000で開始します
- 信頼できるドメイン:????
- 「よく知られているSID」ではないもの、またはDOMAINまたは信頼できるドメインのメンバーであるもの:????
上記からわかるように、 '*
'または 'DOMAIN'の範囲は、ローカルシステムのユーザーとグループを妨害するため、999以下で開始
するように設定しないでください。また、ローカルのUnixユーザとグループのためのスペースを残しておく必要があります。したがって、 'idmap config'の範囲を3000に設定することは良い妥協案と思われます。
あなたは、あなたの「DOMAIN」がどれほど大きく成長するかを決める必要があります。また、信頼できるドメインがあるかどうか、将来的にドメインを持っている必要があるかどうかを知る必要があります。
上記の情報を念頭に置いて、 'idmap config'の範囲を次のように設定できます:
ドメイン 範囲 *
3000-7999 DOMAIN
10000-999999
次の範囲から始まる信頼できるドメインをもつこともできます。
ドメイン 範囲 TRUSTED
1000000-9999999
'*
'の範囲を 'DOMAIN
'の範囲より上に設定すると、 'DOMAIN
'が '*
'の範囲の開始IDと
同じIDになると範囲が競合します。
上記の推奨範囲では、範囲が重複したり、別の範囲を妨げたりすることはありません。
'*
'の範囲の例がすべてに使用されているのを見たことがあるかもしれませんが、これは推奨されておらず、使用すべきではありません。
ドメインに参加する前に、ドメインメンバのsmb.confファイルを設定します。
- ファイルを見つけるには、次のように入力します。
# smbd -b | grep CONFIGFILE CONFIGFILE: /usr/local/samba/etc/smb.conf
このwikipageを読んだら、smb.conf
ファイルを編集し、この設定例をあなたの設定の基礎として使用してください。単にそれを切
り取り&ペーストしないでください:
[global] security = ADS workgroup = SAMDOM realm = SAMDOM.EXAMPLE.COM log file = /var/log/samba/%m.log log level = 1 # Default ID mapping configuration for local BUILTIN accounts # and groups on a domain member. The default (*) domain: # - must not overlap with any domain ID mapping configuration! # - must use a read-write-enabled back end, such as tdb. # - Adding just this is not enough # - You must set a DOMAIN backend configuration, see below idmap config * : backend = tdb idmap config * : range = 3000-7999
パラメータの詳細については、smb.conf(5)のマニュアルページを参照してください。
- Sambaに認識させたいドメインごとに、smb.confファイルの[global]セクションにIDマッピング設定を追加する必要があります。
- Sambaドメインのバックエンドに関する情報を見つけるには、次のハイパーリンクのいずれかをクリックする必要があります。
バックエンド | ドキュメント | マニュアルページ |
---|---|---|
ad
|
idmap config ad | idmap_ad(8)
|
rid
|
idmap config rid | idmap_rid(8)
|
autorid
|
idmap config autorid | idmap_autorid(8)
|
hash
|
idmap config hash | idmap_hash(8)
|
ldap
|
idmap config ldap | idmap_ldap(8)
|
nss
|
idmap config nss | idmap_nss(8)
|
{{#invoke:Message box|imbox}}
ドメイン管理者アカウントをローカルrootユーザーにマッピングする
Sambaでは、ドメインアカウントをローカルアカウントにマップすることができます。この機能を使用して、ドメインメンバのファイルシステム 上のファイル操作を、クライアント上で操作を要求したアカウントとは異なるユーザーとして実行します。
{{#invoke:Message box|imbox}}
ドメイン管理者をローカルルートアカウントにマッピングするには:
smb.conf
ファイルの[global]
セクションに次のパラメータを追加します。
username map = /usr/local/samba/etc/user.map
- 次の内容の/usr/local/samba/etc/user.mapファイルを作成します。
!root = SAMDOM\Administrator
{{#invoke:Message box|imbox}}
詳細は、smb.conf(5)
のマニュアルページのusername map
パラメータを参照してください。
ドメインへの参加
- ホストをActive Directory(AD)に参加させるには、次のように入力します。
# net ads join -U administrator Enter administrator's password: Passw0rd Using short domain name -- SAMDOM Joined 'M1' to dns domain 'samdom.example.com'
- ホストをNT4ドメインに参加させるには、次のように入力します。
# net rpc join -U administrator Enter administrator's password: Passw0rd Joined domain SAMDOM.
{{#invoke:Message box|imbox}}
ドメインに参加できない場合は、設定を確認してください。 詳細については、「Sambaドメインメンバのトラブルシューティング」を参照してください。
ネームサービススイッチの設定
ネームサービススイッチ(NSS)ライブラリを有効にして、ドメインユーザとグループをローカルシステムで使用できるようにするには:
/etc/nsswitch.conf
ファイルの次のデータベースにwinbind
エントリを追加します。
passwd: files winbind group: files winbind
- 2つのデータベースのうち、
files
のエントリを最初のソースに指定して下さい。 これにより、NSSはWinbind
サービスに照会する前に/etc/passwd
および/etc/group
ファイルからドメインユーザーとグループを検索できます。 winbind
エントリをNSSshadow
データベースに追加しないでください。 これにより、wbinfo
ユーティリティが失敗する可能性があります。
- 2つのデータベースのうち、
{{#invoke:Message box|imbox}}
- Sambaをコンパイルした場合は、
libnss_winbind
ライブラリのシンボリックリンクをオペレーティングシステムのライブラリパスに追加します。 詳細については、「Libnss winbindリンク」を参照してください。 もし、Sambaをパッケージからインストールした場合、通常、リンクは自動的に作成されます。
サービスの開始
ドメインメンバーでサービスを開始するには:
winbindd
サービスを起動して、ネームサービススイッチ(NSS)ライブラリがドメインユーザーとグループを検索できるようにします。
# winbindd
- ドメインメンバーにファイル共有またはプリンタサービスを設定する場合は、smbdおよびnmbdサービスを追加で開始します。
# smbd # nmbd
{{#invoke:Message box|imbox}}
Sambaは、他のinitサービス用のSystem Vのinitスクリプト、systemd
、upstart
、またはその他のinit serviceファイルを提供していません。
- パッケージを使用してSambaをインストールした場合は、パッケージが提供するスクリプトまたはサービス設定ファイルを使用してSambaを起動します。
- Sambaをビルドした場合、サービスを開始するスクリプトや設定を作成する方法については、ディストリビューションのドキュメントを参照してください。
Winbind接続のテスト
Winbind Ping の送信
Winbindd
サービスがアクティブディレクトリ (AD) ドメインコントローラ (DC) または、プライマリドメインコントローラ(PDC)
にセう属できるかどうかを確認するには、次のようにします。
# wbinfo --ping-dc checking the NETLOGON for domain[SAMDOM] dc connection to "DC.SAMDOM.EXAMPLE.COM" succeeded
このコマンドが失敗した場合は、次のことを確認します。
winbindd
サービスが起動されていること。smb.conf
ファイルが正しく設定されていること。
オペレーティングシステムコマンドでのドメインアカウントとグループの使用
ドメインユーザーとグループを検索する
libnss_winbind
ライブラリを使用すると、ドメインユーザーとグループを検索できます。例えば:
- ドメインユーザー
SAMDOM\demo01
を検索するには:
# getent passwd SAMDOM\\demo01 SAMDOM\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash
Domain Users
を検索するには:
# getent group "SAMDOM\\Domain Users" SAMDOM\domain users:x:10000:
ドメインユーザーとグループへのファイルアクセス許可の割り当て
ネームサービススイッチ(NSS)ライブラリを使用すると、コマンドでドメインユーザーアカウントとグループを使用できます。たとえば、ファ
イルの所有者をdemo01
ドメインユーザーに、グループをDomain Users
ドメイングループに設定するには、次のように入力します。
# chown "SAMDOM\\demo01:SAMDOM\\domain users" file.txt
ドメインメンバの追加サービスの設定
Sambaドメインメンバでは、以下を追加で設定できます。
- ファイル共有はファイルサーバーとして機能します。詳細は、「Sambaファイルサーバ」を参照してください。
- 印刷サーバーとして機能するサービスを印刷します。詳細については、「プリントサーバーサポート」を参照してください。
- ローカルサービスのドメインユーザーのPAM認証詳細については、「PAMを使用したドメインユーザーの認証」を参照してください。
トラブルシューティング
詳細については、「Sambaドメインメンバのトラブルシューティング」を参照してください。