Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

B.5. LDIF を使用したディレクトリーの定義

ディレクトリー全体の内容は、LDIF を使用して定義できます。LDIF の使用は、ディレクトリーに追加するエントリーが多数ある場合に、ディレクトリー作成の効率的な方法です。
LDIF を使用してディレクトリーを作成するには、以下を実行します。
  1. LDIF 形式に追加するエントリーを含む ASCII ファイルを作成します。
    各エントリーは、空の行で次のエントリーと区切られていることを確認してください。エントリーの間に 1 行のみを使用し、ファイルの最初の行が空白ではないことを確認します。そうでない場合は、ldapmodify ユーティリティーが終了します。詳細は「LDIF を使用したディレクトリーエントリーの指定」を参照してください。
  2. 各ファイルは、データベースの一番上のエントリー (ルート) から始めます。
    root エントリーは、データベースに含まれる接尾辞または部分接尾辞を表す必要があります。たとえば、データベースに dc=example,dc=com の接尾辞がある場合、ディレクトリーの最初のエントリーは dn: dc=example,dc=com でなければなりません。
    接尾辞の詳細は、『Red Hat Directory Server の設定、コマンド、およびファイルリファレンス』 に記載されている「Suffix」パラメーターを参照してください。
  3. LDIF ファイルのブランチポイントを表すエントリーが、そのブランチで作成するエントリーの前に配置されていることを確認します。
    たとえば、エントリーをユーザーやグループのサブツリーに置くには、それらのサブツリー内にエントリーを作成する前に、そのサブツリーの分岐点を作成します。
    注記
    LDIF ファイルは順番に読み込まれるため、親エントリーが子エントリーの前にある必要があります。
  4. 以下の方法のいずれかを使用して、LDIF ファイルからディレクトリーを作成します。
    • Directory Server コンソールでデータベースの初期化インポートするデータベースの規模が小さい (10,000 エントリーより少ない) 場合は、この方法を使用します。「コンソールからのデータベースのインポート」 を参照してください。
      警告
      このメソッドは破壊的で、接尾辞の既存のデータを削除します。
    • ldif2db または ldif2db.pl コマンドラインユーティリティー。インポートするデータベースの規模が大きい (10,000 エントリーより多い) 場合は、この方法を使用します。「ldif2db コマンドラインユーティリティーを使用したインポート」 を参照してください。
      • ldif2db サーバーが実行している場合のみ使用できます。
      • ldif2db.pl サーバーが実行されている場合のみ使用できます。
      警告
      このメソッドは破壊的で、接尾辞の既存のデータを削除します。
    • ldapmodify コマンドラインユーティリティーに -a パラメータをつけたものです。この方法は、既存のデータベースに新しいサブツリーを追加する場合や、削除してはいけない既存のデータが接尾辞にある場合に使用します。LDIF ファイルからディレクトリーを作成する他の方法とは異なり、ldapmodify を使用してサブツリーを追加する前に Directory Server を実行する必要があります。「エントリーの追加」を参照してください。

例B.1 LDIF ファイルの例

この LDIF ファイルには、1 つのドメイン、2 つの組織単位、および 3 つの組織人のエントリーが含まれます。
dn: dc=example,dc=com
objectclass: top
objectclass: domain
dc: example
description: Fictional example domain

dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Fictional example organizational unit
tel: 555-5559

dn: cn=June Rossi,ou=People,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: June Rossi
sn: Rossi
givenName: June
mail: rossi@example.com
userPassword: {sha}KDIE3AL9DK
ou: Accounting
ou: people
telephoneNumber: 2616
roomNumber: 220

dn: cn=Marc Chambers,ou=People,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Marc Chambers
sn: Chambers
givenname: Marc
mail: chambers@example.com
userPassword: {sha}jdl2alem87dlacz1
telephoneNumber: 2652
ou: Manufacturing
ou: People
roomNumber: 167

dn: cn=Robert Wong,ou=People,example.com Corp,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Robert Wong
cn: Bob Wong
sn: Wong
givenname: Robert
givenname: Bob
mail: bwong@example.com
userPassword: {sha}nn2msx761
telephoneNumber: 2881
roomNumber: 211
ou: Manufacturing
ou: people

dn: ou=Groups,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
description: Fictional example organizational unit