第2章 ディレクトリーデータベースの設定
ディレクトリーはデータベースに保存され、ディレクトリーツリーはデータベース全体に分散されます。本章では、接尾辞 の作成、ディレクトリーツリーの分岐点、および各接尾辞に関連付けられたデータベースの作成方法を説明します。本章では、リモートサーバーでデータベースを参照するデータベースリンクを作成する方法と、参照を使用してクライアントにディレクトリーデータの外部ソースを指定する方法も説明します。
2.1. 接尾辞の作成および維持
ディレクトリーツリーのさまざまな部分をさまざまなデータベースに保存でき、そのデータベースを複数のサーバーに分散できます。ディレクトリーツリーには、ノード と呼ばれる分岐点が含まれます。このノードはデータベースに関連付けられている可能性があります。接尾辞は、特定のデータベースに関連するディレクトリーツリーのノードです。たとえば、簡単なディレクトリーツリーは、図2.1「1 つのルート接尾辞があるディレクトリーツリー」 のように表示されます。
図2.1 1 つのルート接尾辞があるディレクトリーツリー

ou=people
接尾辞と、その下のすべてのエントリーおよびノードは 1 つのデータベースに保存され、ou=groups
接尾辞は別のデータベースに保存され、ou=contractors 接尾辞はまた別のデータベースに保存される可能性があります。
2.1.1. 接尾辞の作成
root 接尾辞は、 サブ接尾辞の親です。これは、Directory Server 用に設計された大規模なツリーの一部になります。サブ接尾辞は、root 接尾辞の下にあるブランチです。root 接尾辞とサブ接尾辞はどちらも、ディレクトリーツリーのコンテンツを整理するために使用されます。root 接尾辞およびサブ接尾辞のデータはデータベースに含まれます。
ディレクトリーには、複数のルート接尾辞が含まれる場合があります。たとえば、ISP は複数の Web サイト(example.com 用)と
redhat .com
用など
、複数の Web サイトをホストする場合があります。ここでは、2 つのルート接尾辞が必要です。1 つは dc=example,dc=com
命名コンテキストに対応し、図2.2「2 つのルート接尾辞があるディレクトリーツリー」 のように、dc =redhat,dc=com
命名コンテキストに対応するものになります。
図2.2 2 つのルート接尾辞があるディレクトリーツリー

また、検索操作からディレクトリーツリーの一部を除外するために、ルート接尾辞を作成することもできます。たとえば、Example Corporation は、一般的な Example Corporation ディレクトリーの検索から、ヨーロッパのオフィスを除外します。これを実行するには、2 つのルート接尾辞を作成します。1 つのルート接尾辞は、一般的な Example Corporation ディレクトリーツリー
dc=example,dc=com
に対応します。また、1 つのルート接尾辞は、ディレクトリーツリーのヨーロッパブランチ l=europe,dc=example,dc=com
に対応します。クライアントアプリケーションの観点では、ディレクトリーツリーは 図2.3「検索操作に対するルート接尾辞の Off 制限があるディレクトリーツリー」 で説明されています。
図2.3 検索操作に対するルート接尾辞の Off 制限があるディレクトリーツリー

クライアントアプリケーションがディレクトリーの
dc=example,dc=com
ブランチで検索を実行すると、ディレクトリーの l=europe,dc=example,dc=com
ブランチは別のルート接尾辞となるため、エントリーを返しません。
一般的な検索で、ディレクトリーツリーのヨーロッパブランチにエントリーを含める場合は、ヨーロッパのブランチに、一般的なブランチのサブ接尾辞を指定します。これには、Example Corporation、dc
=example,dc=com
のルート接尾辞を作成し、ヨーロッパのディレクトリーエントリー l=europe,dc=example,dc=com
の下にサブ接尾辞を作成します。クライアントアプリケーションの観点からは、ディレクトリーツリーは 図2.4「従属接尾辞が含まれるディレクトリーツリー」 に示されるように表示されます。
図2.4 従属接尾辞が含まれるディレクトリーツリー

本セクションでは、Directory Server Console またはコマンドラインのいずれかを使用して、ディレクトリーの root およびサブ接尾辞を作成する方法を説明します。
2.1.1.1. コンソールを使用した新規ルート接尾辞の作成
- Directory Server コンソールで、Configuration タブを選択します。
- 左側のナビゲーションペインで Data を右クリックし、ポップアップメニューから New Root Suffix を選択します。
- New suffix フィールドに一意の接尾辞 を入力します。接尾辞は、dc
=example,dc=com などの
。dc
命名規則を持つ行に指定する必要があります - Create associated database automatically を選択して、新しいルート接尾辞と同時にデータベースを作成し、
example2
などの Database name フィールドに新規データベースの一意の名前を入力します。名前は、英数字、ダッシュ(-)、およびアンダースコア(_)
の組み合わせになります。
他の文字は使用できません。チェックボックスの選択を解除して、後で新しいルート接尾辞のデータベースを作成します。このオプションは、データベースが作成されるディレクトリーを指定します。新しいルート接尾辞は、データベースが作成されるまで無効になります。
新しいルート接尾辞が Data フォルダーに表示されます。

2.1.1.2. コンソールを使用した新しい従属接尾辞の作成
- Directory Server コンソールで、Configuration タブを選択します。
- 左側のナビゲーションペインの Data で、新しいサブ接尾辞を追加する接尾辞を選択します。接尾辞を右クリックし、ポップアップメニューから New Sub Suffix を選択します。Create new sub suffix ダイアログボックスが表示されます。
- New suffix フィールドに一意の接尾辞名を入力します。接尾辞の名前は、dc の命名規則 (例:
ou=groups)を持つ行に指定する必要があります
。root 接尾辞は名前に自動的に追加されます。たとえば、サブ接尾辞ou=groups
がdc=example,dc=com
接尾辞の下に作成される場合、コンソールにはou=groups,dc=example,dc=com という名前が自動的に付けられます
。 - Create associated database automatically チェックボックスを選択し、新しいサブ接尾辞と同時にデータベースを作成し、
example2
などの Database name フィールドに新規データベースの一意の名前を入力します。名前は、英数字、ダッシュ(-)、およびアンダースコア(_)
の組み合わせになります。
他の文字は使用できません。このチェックボックスを選択しないと、新しいサブ接尾辞のデータベースよりも後で作成する必要があります。データベースが作成されるまで、新しいサブ接尾辞が無効になります。
接尾辞は、左側のナビゲーションペインの Data ツリーのルート接尾辞の下に自動的に表示されます。

2.1.1.3. コマンドラインでのルート接尾辞およびサブ接尾辞の作成
接尾辞の設定情報は
cn=mapping tree,cn=config
エントリーに保存されます。ldapmodify ユーティリティーを使用して、新しい接尾辞をディレクトリーに追加します。
接尾辞の作成時に設定できるすべてのパラメーターの一覧は、『Red Hat Directory Server の設定、コマンド、およびファイルリファレンスの該当するセクションを参照してください』。
ルート接尾辞の作成
たとえば、dc =example,dc=com のルート接尾辞を追加するには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn="dc=example,dc=com",cn=mapping tree,cn=config changetype: add cn: dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: nsMappingTree nsslapd-state: backend nsslapd-backend: UserData
従属接尾辞の作成
サブ接尾辞の作成は、root 接尾辞の作成と同様です。違いは、
nsslapd-parent-suffix
に親接尾辞を設定する点です。
たとえば、dc= example,dc =com ルート接尾辞の下に ou= groups サブ接尾辞を作成するには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: cn="ou=groups,dc=example,dc=com",cn=mapping tree,cn=config
changetype: add
cn: ou=groups,dc=example,dc=com
objectclass: top
objectclass: extensibleObject
objectclass: nsMappingTree
nsslapd-state: backend
nsslapd-backend: GroupData
nsslapd-parent-suffix: dc=example,dc=com
2.1.2. 接尾辞の維持
2.1.2.1. デフォルトの命名コンテキストの表示
命名コンテキストは接尾辞に類似しており、命名ディレクトリーエントリーのルート構造です。ディレクトリーとデータ構造によっては、複数の命名コンテキストが存在する場合があります。たとえば、標準の Directory Server 設定には、dc =example,dc=com、cn=config の設定接尾辞である o=netscaperoot などのユーザー接尾辞があります。
多くのディレクトリーツリーには複数の命名コンテキストがあり、異なるタイプのエントリーや論理データ分割で使用されます。Directory Server にアクセスするクライアントは、使用する必要がある命名コンテキストを認識しない場合があります。Directory Server には、デフォルトの命名コンテキストが他に認識されていない場合に、デフォルトの命名コンテキストがクライアントに通知するサーバー設定属性があります。
デフォルトの命名コンテキストは、cn=config の
nsslapd-defaultnamingcontext
属性に設定されます。この値はルート DSE (Directory Server Agent Service Entry) に伝播され、ルート DSE の defaultnamingcontext
属性を確認してクライアントが匿名でクエリーできます。
# ldapsearch -p 389 -h server.example.com -x -b "" -s base | egrep namingcontext
namingContexts: dc=example,dc=com
namingContexts: dc=example,dc=net
namingContexts: dc=redhat,dc=com
defaultnamingcontext: dc=example,dc=com
重要
設定の整合性を維持するには、
nsslapd-allowed-to-delete-attrs
一覧から nsslapd-defaultnamingcontext
属性を削除しないでください。
デフォルトでは、
nsslapd-defaultnamingcontext
属性は、nsslapd-allowed-to-delete-attrs
属性に削除 できる 属性の一覧に含まれます。これにより、現在のデフォルトの接尾辞を削除してから、適切にサーバー設定を更新できます。
何らかの理由で削除可能な設定属性の一覧から
nsslapd-defaultnamingcontext
属性を削除すると、その属性への変更は保持されません。デフォルトの接尾辞を削除すると、その変更はサーバー設定に伝播できません。つまり、nsslapd-defaultnamingcontext
属性は、空白 (削除) ではなく古い情報を保持することを意味します。これは正しい現在の設定です。
2.1.2.2. 接尾辞の無効化
特定の状況では、ディレクトリーの接尾辞を無効にする必要があります。接尾辞が無効になっていると、その接尾辞に関連するデータベースのコンテンツは、クライアントがアクセスできなくなります。
2.1.2.2.1. コマンドラインでの接尾辞の無効化
コマンドラインで接尾辞を無効にするには、対応する接尾辞エントリーの
nsslapd-state
属性を disabled に設定します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=suffix_DN,cn=mapping tree,cn=config changetype: modify replace: nsslapd-state nsslapd-state: disabled
2.1.2.2.2. コンソールを使用した接尾辞の無効化
コンソールを使用して接尾辞を無効にするには、以下を実行します。
- Directory Server コンソールで、Configuration タブを選択します。
- 左側のナビゲーションペインで Data で、接尾辞をクリックして無効にします。
- Suffix Setting タブをクリックし、Enable this suffix チェックボックスの選択を解除します。
2.1.2.3. 接尾辞の削除
接尾辞が不要になった場合は、その接尾辞をデータベースから削除します。
警告
接尾辞を削除すると、その接尾辞に関連するデータベースエントリーおよびレプリケーション情報もすべて削除されます。
2.1.2.3.1. コマンドラインを使用した接尾辞の削除
コマンドラインで接尾辞を削除するには、以下を実行します。
- マッピングツリーから接尾辞を削除します。
# ldapdelete -D "cn=Directory Manager" -W -p 389 -h server.example.com -x "cn="suffix_DN",cn=mapping tree,cn=config"
- 接尾辞が別のデータベースを使用する場合は、データベースを削除します。
# ldapdelete -D "cn=Directory Manager" -W -p 389 -h server.example.com -x "cn=database_name,cn=ldbm database,cn=plugins,cn=config"
2.1.2.3.2. コンソールを使用した接尾辞の削除
コンソールを使用して接尾辞を削除するには、以下を行います。
- Directory Server コンソールで、Configuration タブを選択します。
- 左側のナビゲーションペインで Data の下で、削除する接尾辞を選択します。
- 接尾辞を右クリックし、メニューから Delete を選択します。
- Delete this suffix およびそのサブ接尾辞のすべてを選択 するか 、この接尾辞のみを削除します。