前へ     目次     索引     DocHome     次へ     
iPlanet Directory Server 5.1 管理者ガイド



付録 A   LDIF (LDAP Data Interchange Format)


Directory Serverでは、ディレクトリとディレクトリエントリをテキスト形式で記述する場合に、LDIF (LDAP Data Interchange Format) が使用されます。LDIF は、初期ディレクトリデータベースを構築したり、一度に大量のエントリをディレクトリに追加したりするために使用されます。また、ディレクトリエントリに対する変更を記述するためにも使用されます。このため、Directory Server のコマンド行ユーティリティの大部分では、入出力を LDIF に頼っています。

LDIF ファイルはテキスト形式なので、どのような言語でも LDIF ファイルを作成することができます。ディレクトリデータはすべて、Unicode の UTF-8 エンコードを使用して格納されます。したがって、作成する LDIF ファイルも UTF-8 でエンコードされている必要があります。

この章では、LDIF について、次の項目ごとに説明します。

LDIF を使用したディレクトリエントリの修正については、第 2 章「ディレクトリエントリの作成」 を参照してください。



LDIF ファイル形式



LDIF は、1 つ以上のディレクトリエントリから構成され、エントリ間は空白行で区切られています。LDIF エントリはそれぞれ、エントリ ID (省略可能)、識別名 (必須)、1 つ以上のオブジェクトクラス、および複数の属性定義から構成されます。

LDIF 形式は RFC 2849 The LDAP Data Interchange Format (LDIF) で定義されています。iPlanet Directory Server は、この標準に準拠しています。

LDIF で表されるディレクトリエントリの基本形式は次のとおりです。

dn: distinguished_name
objectClass: object_class
objectClass: object_class
...
attribute_type[;subtype]:attribute_value
attribute_type
[;subtype]:attribute_value
...

DN と、少なくとも 1 つのオブジェクトクラス定義を指定する必要があります。さらに、エントリに対して定義するオブジェクトクラスで必要とされる属性もすべて指定します。その他の属性やオブジェクトは省略可能です。オブジェクトクラスや属性は任意の順序で指定できます。また、コロンのあとの空白も省略可能です。標準オブジェクトクラスと属性については、『iPlanet Directory Server スキーマリファレンス』を参照してください。

表 A-1 に、前述の定義で示されている LDIF フィールドについてまとめます。


表 A-1 LDIF フィールド 

フィールド

定義

[id]  

省略可能。エントリ ID を表す正の 10 進数値。この ID は、データベース作成ツールによって自動的に生成される。この値を追加したり、編集したりしてはならない  

dn: distinguished_name  

エントリの識別名を指定する。識別名に関する詳細は、『iPlanet Directory Server 導入ガイド』を参照  

objectClass: object_class  

このエントリで使用されるオブジェクトクラスを指定する。オブジェクトクラスは、エントリで使用可能かつ必要な属性のタイプ (スキーマ) を識別する。標準オブジェクトクラスのリストについては『iPlanet Directory Server スキーマリファレンス』、スキーマのカスタマイズについては第 9 章「ディレクトリスキーマの拡張」を参照  

attribute_type  

このエントリで使用される属性の種類を指定する。属性はスキーマで定義する必要がある。標準属性のリストについては『iPlanet Directory Server スキーマリファレンス』、スキーマのカスタマイズについては第 9 章「ディレクトリスキーマの拡張」を参照  

[subtype]  

省略可能。言語、バイナリ、発音などのサブタイプを指定する。このタグを使用して、対応する属性値を表現している言語や、属性値がバイナリであるか発音であるかを識別する。属性のサブタイプについては、「属性のサブタイプの追加」を参照。サポートされているサブタイプタグのリストについては、表 D-2を参照  

attribute_value  

属性タイプとともに使用される属性値を指定する  

ディレクトリのエントリに対する変更を表す LDIF 構文は、前述の構文とは異なります。LDIF を使用したディレクトリエントリの修正については、第 2 章「ディレクトリエントリの作成」 を参照してください。


LDIF での断続行

LDIF を指定するときに、行を改行または継続させたり、折り返したりするには、行の継続する部分を 1 スペース分だけインデントします。たとえば、次の 2 つの文は同じものです。

dn: cn=Jake Lupinski,dc=siroe,dc=com

dn: cn=Jake Lup
 inski, dc=sir
 oe,dc=comcom

LDIF 行を改行したり、継続させたりすることは必須ではありません。ただし、これによって、LDIF ファイルが読みやすくなります。


バイナリデータの表記

JPEG 画像のような バイナリデータを LDIF で表すには、次のいずれかの方法を使用します。

  • LDIF の標準表記法、小なり記号 (<)。

  • パラメタ -b をともなったコマンド行ユーティリティ ldapmodify

  • Base 64 エンコード


LDIF の標準表記法を使用

たとえば、次のようにします。

jpegphoto:< file:/path/to/photo

この標準の表記法を使用した場合は、ldapmodify -b パラメタを指定する必要がありません。ただし、使用する LDIF ファイルまたは LDIF 更新文の初めに次の行を追加する必要があります。

version:1

たとえば、次の ldapmodify コマンドを使用できます。

prompt% ldapmodify -D userDN -w user_passwd

>version: 1
>dn: cn=Barney Fife,ou=People,dc=siroe,dc=com
>changetype: modify
>add: userCertificate
>userCertificate;binary:< file: BarneysCert


ldapmodify -b の使用

可能な場合は、前述の標準表記法を使用するべきです。ここで説明する方法は、Directory Server の以前のバージョンとの下位互換性をサポートするためのものです。

iPlanet Directory Server は、パラメタ -b をともなった ldapmodify コマンドと次の LDIF 表記を受け取ります:

jpegphoto: /path/to/photo

この表記法は、属性値がスラッシュで始まる場合に、ldapmodify がバイナリ値の参照ファイルを読み取る必要があることを示します。



  このような動作は、Directory Console ではサポートされていません。Console で、スラッシュで始まる値は、文字通りディレクトリに追加されます。

 




Base 64 符号化の使用

Base64 で符号化されたデータは、:: 記号を使用して識別します。たとえば、次のようにします。

jpegPhoto:: encoded_data

バイナリデータ以外に、Base 64 エンコードで処理する必要のある値は、次のとおりです。

  • セミコロン (;) や空白で始まる値

  • 新しい行を含む、ASCII 以外のデータが入った値

ldif コマンド行ユーティリティに -b パラメタを指定して、バイナリデータを LDIF 形式に変換します。

Solaris 9 プラットフォーム

# /usr/sbin/directoryserver ldif -b attributeName

その他のプラットフォーム

# installDir/bin/slapd/server/ldif -b attributeName

ここで、attributeName は バイナリデータを与える属性名です。バイナリデータは標準入力から読み込まれ、その結果は標準出力に書き込まれます。したがって、リダイレクト演算子を使用して、入力ファイルと出力ファイルを選択する必要があります。

ldif コマンド行ユーティリティは任意の入力を受け取り、断続行処理を行い、適切な属性情報を追加して LDIF 形式に変換します。ldif ユーティリティを使用して、入力で Base 64 エンコードが必要であるかどうかを確認することもできます。たとえば、次のようにします。

ldif -b jpegPhoto < mark.jpg > out.ldif

この例では、JPEG 形式を含むバイナリファイルが取得され、このファイルが jpegPhoto という属性のために LDIF 形式に変換されます。出力は out.ldif に保存されます。

オプション -b は、ldif ユーティリティによって、入力全体が 1 つのバイナリ値として解釈されることを表します。-b を指定しない場合は、各行が異なる入力値とみなされます。

次に出力ファイルを編集して、バイナリ値を含むディレクトリエントリの作成または修正に必要な LDIF 文を追加できます。たとえば、テキストエディタで out.ldif ファイルを開き、ファイルの最初に次の行 (太字で表示) を追加します。

dn:cn=Barney Fife,ou=People,dc=siroe,dc=com
changetype: modify
add: jpegPhoto
jpegPhoto::
encoded_data

この例では、encoded_data は、ldif コマンドによって作成された out.ldif ファイルの内容を表しています。



LDIF を使用したディレクトリエントリの指定



ディレクトリには、さまざまなタイプのエントリを格納できます。ここでは、ディレクトリで使用される最も一般的な 3 つのタイプのエントリである組織エントリ、組織単位エントリ、および組織メンバーエントリについて、重点的に説明します。

エントリに対して定義されるオブジェクトクラスは、エントリが組織、組織単位、組織メンバー、またはその他のタイプのエントリのいずれを表しているかを示しています。ディレクトリで作成可能なエントリのタイプについては、『iPlanet Directory Server 導入ガイド』を参照してください。デフォルトで、ディレクトリで使用できるオブジェクトクラスすべてのリスト、およびもっとも一般的に使用される属性のリストについては、『iPlanet Directory Server スキーマリファレンス』を参照してください。


組織エントリの指定

ディレクトリが、少なくとも 1 つの組織エントリを持つことはよくあります。一般に、ディレクトリの最初のエントリ、または一番上のエントリは組織エントリです。多くの場合、組織エントリはディレクトリに対して設定されている接尾辞に対応します。たとえば、ディレクトリで接尾辞 dc=siroe,dc=com が使用されるように定義されていて、ディレクトリ dc=siroe,dc=com に組織エントリを持つ予定であるとします。

組織エントリを定義するには、次のように LDIF を指定します。

dn: distinguished_name
objectClass: top
objectClass:organization
o: organization_name
list_of_optional_attributes
...

LDIF 形式で表した組織エントリの例は次のとおりです。

dn:dc=siroe,dc=com
objectclass: top
objectclass:organization
o: siroe.com Corporation
description: Fictional company for example purposes
telephonenumber: 555-5555

次の例にある組織名では、コンマが使用されています。

dn: o="siroe.com Chile\\, S.A."
objectclass: top
objectclass:organization
o: "siroe.com Chile\\, S.A."
description: Fictional company for example purposes
telephonenumber: 555-5556

表 A-2 に、LDIF 形式の組織エントリの各要素についてまとめます。


表 A-2 組織エントリの LDIF 要素 

LDIF 要素

内容

dn: distinguished_name  

エントリの 識別名 (distinguished name) を指定する。DN については、『iPlanet Directory Server 導入ガイド』を参照。DN は必須  

objectClass: top  

必須。top オブジェクトクラスを指定する  

objectClass:
 organization
 

organization オブジェクトクラスを指定する。この行では、エントリが組織として定義される。このオブジェクトクラスで使用できる属性のリストについては、『iPlanet Directory Server スキーマリファレンス』を参照  

o: organization_name  

組織名を表す属性。組織名にコンマが含まれている場合は、\ を 1 つ使用してコンマをエスケープし、組織引数全体を引用符で囲む必要がある。ただし、UNIX シェルで作業している場合は、この \ を 2 つ使用してエスケープする必要がある。たとえば、接尾辞を siroe.com Bolivia, S.A. に設定するには、UNIX マシンでは「"o: siroe.com Bolivia\\, S.A." 」、Windows NT では「"o: siroe.com Bolivia\, S.A." 」と入力する  

list_of_attributes  

エントリで管理する必要のあるオプション属性のリストを指定する。このオブジェクトクラスで使用できる属性のリストについては、『iPlanet Directory Server スキーマリファレンス』を参照  


組織単位エントリの指定

組織単位エントリは、ディレクトリツリーに含まれる主要な分岐点、つまりサブディレクトリを表すのによく使用されます。このエントリは、ユーザを含むサブツリーやグループを含むサブツリーなど、企業内の主要で適度に静的なエンティティに対応します。ただし、エントリに含まれる組織単位の属性は、マーケティングやエンジニアリングのような、企業の主要な組織も表すことがあります。

ディレクトリツリーには通常、複数の組織単位、つまり分岐点が存在します。ディレクトリツリーの設計方法については、『iPlanet Directory Server 導入ガイド』を参照してください。

組織単位エントリを定義するには、次のように LDIF を指定します。

dn: distinguished_name
objectClass: top
objectClass:organizationalUnit
ou: organizational_unit_name
list_of_optional_attributes
...

LDIF 形式で表した組織単位エントリの例は次のとおりです。

dn: ou=people, dc=siroe,dc=com
objectclass: top
objectclass:organizationalUnit
ou: people
description: Fictional organizational unit for example purposes

表 A-3 に、LDIF 形式の組織単位エントリの各要素についてまとめます。


表 A-3 組織単位エントリの LDIF 要素 

LDIF 要素

内容

dn: distinguished_name  

エントリの識別名 (distinguished name) を指定する。DN は必須。DN にコンマが含まれる場合は、コンマの前にエスケープ文字のバックスラッシュ (\) を付けて区別する必要がある。たとえば、次のようにする

dn: ou=people,o=siroe.com Bolivia\,S.A.  

objectClass: top  

必須。top オブジェクトクラスを指定する  

objectClass:
 organizationalUnit
 

organizationalUnit オブジェクトクラスを指定する。この行では、エントリが organizationalUnit として定義される。このオブジェクトクラスで使用できる属性のリストについては、『iPlanet Directory Server スキーマリファレンス』を参照  

ou: organizational_unit_name  

組織単位の名前を識別する属性  

list_of_attributes  

エントリで管理する必要のあるオプション属性のリストを指定する。このオブジェクトクラスで使用できる属性のリストについては、『iPlanet Directory Server スキーマリファレンス』を参照  


組織ユーザのエントリの指定

ディレクトリにあるエントリの大部分は、組織メンバーを表します。

LDIF では、組織メンバーは次のように定義されます。

dn: distinguished_name
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: common_name
sn: surname
list_of_optional_attributes

LDIF 形式で表した組織ユーザエントリの例は次のとおりです。

dn: uid=bjensen,ou=people,dc=siroe,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Babs Jensen
sn: Jensen
givenname: Babs
uid: bjensen
ou: Marketing
ou: people
description: Fictional person for example purposes
telephonenumber: 555-5557
userpassword: {sha}dkfljlk34r2kljdsfk9

表 A-4 に、LDIF 形式の組織ユーザエントリの各要素についてまとめます。


表 A-4 組織ユーザエントリの LDIF 要素 

LDIF 要素

内容

dn: distinguished_name  

エントリの 識別名 (distinguished name) を指定する。DN は必須。DN にコンマが含まれる場合は、コンマの前にエスケープ文字のバックスラッシュ (\) を付けて区別する必要がある。
例: dn:uid=bjensen,ou=people,o=siroe.com Bolivia\,S.A.
 

objectClass: top  

必須。top オブジェクトクラスを指定する  

objectClass: person  

person オブジェクトクラスを指定する。このオブジェクトクラスは、個人や組織メンバーに対する検索操作を行うときに、多くの LDAP クライアントで必要とされるので、必ず指定する必要がある  

objectClass:
organizationalPerson
 

organizationalPerson オブジェクトクラスを指定する。このオブジェクトクラスは、組織メンバーに対する検索操作を行うときに、LDAP クライアントの一部で必要とされるので、必ず指定する必要がある  

objectClass: inetOrgPerson  

inetOrgPerson オブジェクトクラスを指定する。inetOrgPerson オブジェクトクラスには、もっとも広い範囲の属性が含まれるので、組織ユーザエントリの作成に適している。このオブジェクトクラスでは、uid 属性が必要とされるので、このオブジェクトクラスが含まれるエントリには uid 属性値に基づく名前が付けられる。このオブジェクトクラスで使用できる属性のリストについては、『iPlanet Directory Server スキーマリファレンス』を参照  

cn: common_name  

ある個人が通常使用しているフルネームである、共通名を指定する。例:cn: Bill Anderson。少なくとも 1 つの共通名が必要である  

sn: surname  

個人の姓を指定する。例:sn: Anderson。姓は必須  

list_of_attributes  

エントリで管理する必要のあるオプション属性のリストを指定する。このオブジェクトクラスで使用できる属性のリストについては、『iPlanet Directory Server スキーマリファレンス』を参照  



LDIF を使用したディレクトリの定義



LDIF を使用して、ディレクトリ全体のコンテンツを定義することができます。ディレクトリに追加するエントリが大量にある場合、LDIF の使用によって、ディレクトリの作成作業を効率化できます。

LDIF を使用してディレクトリを作成するには、次の手順を実行します。

  1. 追加するエントリを含む ASCII ファイルを LDIF 形式で作成します。

    各エントリを分割できるように、各エントリ間に空白行を挿入してください。1 行だけを使用すべきで、ファイルの先頭行は空行であってはなりません。そうでない場合 ldapmodify Utility は終了します。詳細は、「LDIF を使用したディレクトリエントリの指定」を参照してください。

  2. ファイルは、データベースの先頭エントリ、つまりルートエントリで始めます。

    このルートエントリは、データベースに含まれる接尾辞またはサブ接尾辞を表している必要があります。たとえば、データベースに接尾辞 dc=siroedc=com がある場合は、ディレクトリの最初のエントリは次のようにならなければなりません。

    dn: dc=siroe,dc=com

    接尾辞については、『iPlanet Directory Server 構成、コマンド、およびファイルのリファレンス』の 「Suffix」パラメタを参照してください。

  3. LDIF ファイルで、分岐点を表すエントリがその分岐の下に作成するエントリの前に置かれていることを確認します。

    たとえば、people サブツリーと group サブツリーにエントリを配置する場合は、これらのサブツリー内にエントリを作成する前に、これらのサブツリーの分岐点を作成します。

  4. 次のいずれかの方法を使用して、LDIF ファイルからディレクトリを作成します。

    • Directory Server Console

      インポートするデータベースが小さい (1000 エントリ未満) 場合は、この方法を使用します。「Console を使用したインポートの実行」を参照

    • ldif2db コマンド行ユーティリティ

      インポートするデータベースが大きい (1000 エントリ以上) 場合は、この方法を使用します。「ldif2db コマンドを使用したインポート」を参照

    • -a パラメタともなった ldapmodify コマンド行ユーティリティ

      現在、ディレクトリデータベースを使用していて、このデータベースに新しいサブツリーを追加する場合は、この方法を使用します。LDIF ファイルからディレクトリを作成するその他の方法と異なり、ldapmodify を使用してサブツリーを追加する前に Directory Server を実行しておく必要があります。「ldapmodify を使用したエントリの追加と修正」を参照してください。


LDIF ファイルの例

次に、組織エントリ 1 つ、組織単位エントリ 2 つ、および組織メンバーエントリ 3 つを含む LDIF ファイルの例を示します。

dn: o=siroe.com Corp,dc=siroe,dc=com
objectclass: top
objectclass: organization
o: siroe.com Corp
description: Fictional organization for example purposes

dn: ou=People,o=siroe.com Corp,dc=siroe,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Fictional organizational unit for example purposes
tel: 555-5559

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

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

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

dn: ou=Groups,o=siroe.com Corp,dc=siroe,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
description: Fictional organizational unit for example purposes



複数言語での情報の保存



ディレクトリに言語が 1 つだけ含まれている場合は、ディレクトリに新しいエントリを追加するために、特別な操作を実行する必要はありません。ただし、多国籍組織の場合は、情報をさまざまな言語で格納し、異なるロケールのユーザが母国語でディレクトリ情報を表示できるようにしておく必要があります。

ディレクトリ内の情報に複数の言語が含まれている場合、言語タグが属性値と関連付けられます。新しいエントリを追加する場合は、相対識別名 (RDN) で使用されている属性値を、言語コードを指定せずに設定する必要があります。

1 つの属性に複数の言語を格納することもできます。1 つの属性に複数の言語を格納すると、属性のタイプは同じになりますが、値には異なる言語コードが指定されます。

Directory Server でサポートされている言語と、関連付けられている言語タグのリストについては、「サポートされているロケールの特定」を参照してください。



 

ディレクトリ内への文字列の格納方法は言語タグには影響しません。オブジェクトクラスと属性文字列は、すべて UTF-8 を使用して格納されます。  



たとえば、siroe.com Corporation はアメリカとフランスにオフィスがあるので、従業員が母国語でディレクトリ情報を参照できるようにする必要があるとします。ディレクトリエントリを追加するときに、ディレクトリ管理者は英語とフランス語の両方の属性値の設定を選択します。新入社員 Babs Jensen のためにディレクトリエントリを追加する場合は、管理者は次のような LDIF エントリを作成します。

dn: uid=bjensen,ou=people,dc=siroe,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
name: Babs Jensen
cn: Babs Jensen
sn: Jensen
uid: bjensen
streetAddress: 1 University Street
streetAddress;lang-en: 1 University Street
streetAddress;lang-fr: 1\, rue de l'Université
preferredLanguage: fr

このディレクトリエントリに対して、優先言語が英語に設定された LDAP クライアントからアクセスした場合、住所は 1 University Street と表示されます。ただし、LDAP クライアントの優先言語がフランス語に設定されている場合には、住所は 1 rue de l'Université と表示されます。


前へ     目次     索引     DocHome     次へ     
Copyright © 2001 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.

Last Updated February 26, 2002