SambaをActive Directoryドメインメンバとして構成する

提供: 雑廉堂Wiki

はじめに

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"

もし、sambasmbdnbmd、あるいは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/hosts127.0.1.1というホスト名も表示されますので、sambaをインストールする前にそれを削除してください。
  • 次の行はそのままにして下さい:127.0.0.1 localhost

マシンのホスト名にエイリアスを追加する必要がある場合は、127.0.0.1の行ではなく、マシンのipaddressで始まる行の末尾にエ イリアスを追加します。


NT4ドメインに参加するためのドメインメンバの準備

ホストをNT4ドメインに参加させるには、準備は必要ありません。


Sambaのインストール

詳細はSambaのインストールを参照してください。


Sambaの設定

基本的なsmb.confファイルの設定

UNIXドメインメンバーにsmb.confを設定するときには、いくつかの決定をする必要があります。

  • Samba AD DCを含め、全ての場所でユーザーとグループのIDが同じであることを要求していますか?
  • ユーザーとグループがUnixドメインメンバー上で同じIDを持つことのみを望みますか?

決定をした後、もう一つ決めることがあります。この決定は、あなたがすでに決めた事に対して影響を与える可能性があります。

  • 個々のユーザが異なるログインシェルやUnixホームディレクトリパスを必要としますか?

ユーザーが異なるログインシェルやUnixホームディレクトリパスを持つ必要がある場合、またはそれらのIDがどこにでも同じIDを持つようにするには、winbind 'ad'バックエンドを使用し、RFC2307属性をADに追加する必要があります。


ユーザーが認証に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)


ドメイン管理者アカウントをローカルrootユーザーにマッピングする

Sambaでは、ドメインアカウントをローカルアカウントにマップすることができます。この機能を使用して、ドメインメンバのファイルシステム 上のファイル操作を、クライアント上で操作を要求したアカウントとは異なるユーザーとして実行します。

ドメイン管理者をローカルルートアカウントにマッピングするには:

  • smb.confファイルの[global]セクションに次のパラメータを追加します。
username map = /usr/local/samba/etc/user.map
  • 次の内容の/usr/local/samba/etc/user.mapファイルを作成します。
!root = SAMDOM\Administrator

詳細は、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.

ドメインに参加できない場合は、設定を確認してください。 詳細については、「Sambaドメインメンバのトラブルシューティング」を参照してください。

ネームサービススイッチの設定

ネームサービススイッチ(NSS)ライブラリを有効にして、ドメインユーザとグループをローカルシステムで使用できるようにするには:

  • /etc/nsswitch.confファイルの次のデータベースにwinbindエントリを追加します。
passwd: files winbind
group:  files winbind
  • 2つのデータベースのうち、filesのエントリを最初のソースに指定して下さい。 これにより、NSSはWinbindサービスに照会する前に/etc/passwdおよび/etc/groupファイルからドメインユーザーとグループを検索できます。
  • winbindエントリをNSSshadowデータベースに追加しないでください。 これにより、wbinfoユーティリティが失敗する可能性があります。
  • Sambaをコンパイルした場合は、libnss_winbindライブラリのシンボリックリンクをオペレーティングシステムのライブラリパスに追加します。 詳細については、「Libnss winbindリンク」を参照してください。 もし、Sambaをパッケージからインストールした場合、通常、リンクは自動的に作成されます。


サービスの開始

ドメインメンバーでサービスを開始するには:

  • winbinddサービスを起動して、ネームサービススイッチ(NSS)ライブラリがドメインユーザーとグループを検索できるようにします。
# winbindd
  • ドメインメンバーにファイル共有またはプリンタサービスを設定する場合は、smbdおよびnmbdサービスを追加で開始します。
# smbd
# nmbd

Sambaは、他のinitサービス用のSystem Vのinitスクリプト、systemdupstart、またはその他のinit serviceファイルを提供していません。

  • パッケージを使用してSambaをインストールした場合は、パッケージが提供するスクリプトまたはサービス設定ファイルを使用してSambaを起動します。
  • Sambaをビルドした場合、サービスを開始するスクリプトや設定を作成する方法については、ディストリビューションのドキュメントを参照してください。

Winbinddの接続をテスト

Winbindd 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ドメインメンバのトラブルシューティング」を参照してください。