LDIFの形式には、2種類あります。
エントリの情報を記述する標準形式
リポジトリに大量のエントリを追加する場合、この形式を使用すると、追加作業が効率化できます。
エントリの変更情報を記述する更新形式
リポジトリ内のエントリ情報を変更する場合、この形式を使用します。
Interstage ディレクトリサービスが提供するサンプルのLDIFファイルが、以下の場所に格納されています。このサンプルのLDIFファイルを流用して、エントリの追加・変更情報を記述することで、簡単にLDIFファイルを作成することができます。
C:\Interstage\IREP\sample\ldif\
/opt/FJSVirep/sample/ldif/
addldif.txt:エントリを追加する場合のLDIFファイルサンプル
delldif.txt:エントリを削除する場合のLDIFファイルサンプル
modldif.txt:エントリを更新する場合のLDIFファイルサンプル
nameldif.txt:エントリの名前を変更する場合のLDIFファイルサンプル
エントリの情報を記述するLDIF標準形式について説明します。
例中に記載のオブジェクトクラス、および属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。
例
2つのエントリを記述した標準形式
version: 1 # 1つ目のエントリ dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson cn: User001 sn: Fujitsu # 2つ目のエントリ dn: cn=User002,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson cn: User002 sn: Fujitsu
version行
LDIFファイルの先頭行には、LDIFのバージョンを指定します。省略された場合は、バージョン1で動作します。リポジトリで使用する場合は、バージョン1を指定します。
1 : RFC2849で規定された機能
0 : michigan大学のldap-3.3で使用されているLDIFの機能
コメント行
先頭行が“#”(シャープ)で始まる行は、コメント行として無視されます。
エントリ情報
1つ以上のエントリ情報から構成され、各エントリ情報の間には空白行を1行挿入して区分します。各エントリ情報は、DN(識別名)、1つ以上のオブジェクトクラス、1つ以上の属性定義から構成されます。次のような書式で記述します。
dn: エントリのDN objectclass: オブジェクトクラス objectclass: オブジェクトクラス 属性型: 属性値 属性型: 属性値
各行の、dn、objectclass、属性型と、値を区切る記号として“:”(コロン)を使用します。“:”(コロン)の前後の空白は無視されます。なお、属性値にバイナリ値を設定する場合は、“:”(コロン)が属性と属性値の区切り文字ではないため、“:”(コロン)の後に空白は指定できません。
空白行
エントリ情報を区分します。
注意
先頭に空白行がある場合はLDIFファイル内のすべての行が無視されます。
空白行が続く場合は以降の行は無視されます。
■行が長い時
DNや属性値が長すぎる場合は、折り返して複数行で記述することができます。この時、継続行であることを示すために、行の先頭1文字を空白とし、2文字目から属性値の続きを記述します。行の先頭が空白の場合、その行は、前の行の継続行とみなされます。
例
長い属性値を折り返す場合
dn: cn=User002,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson cn: User002 sn: Fujitsu description: She is good at English, German, and French. She has experience in overseas assignment.
■属性値を外部ファイルから参照する時
属性値に、外部ファイルの内容を指定するには、以下の形式で記述します。
属性名:< ファイル(注)
注)“:”(コロン)と“<”(小なり)の間には空白を入れないで記述します。“:”(コロン)と“<”(小なり)の間に空白を入れた場合、“:”(コロン)以降に記載した文字列が属性値として登録されます。
DNはファイルからの読み込みはできません。
指定できるファイルはローカルなファイルだけです。また、ファイル名は、リポジトリ内に格納されません。
プラットフォームにより、ファイルの記述形式が違います。description属性にテキストファイルの内容を指定するときを例にとって説明します。
ファイルのコード系をUTF-8に変換し、ファイルをURL形式で指定します。
description:< file:///C:\data\utf8.txt
description:< file:///data/utf8.txt
■バイナリの表記
属性値にバイナリ値を設定するには、以下の形式で記述します。Base64符号化した値を直接記述する場合は、“付録B 属性一覧”で、『「;binary」を付加する必要はありません』と記載されている属性は“Base64符号化した値を直接記述する場合1”の形式で、『「;binary」を付加してください』と記載されているものは、“Base64符号化した値を直接記述する場合2”の形式で、それぞれ記述してください。
属性名:: 属性値(Base64符号化)
属性名;binary:: 属性値(Base64符号化)
属性名:< file:///絶対パス
バイナリ値に外部ファイルが指定された場合は、外部ファイルの内容だけがBase64符号化形式でリポジトリに格納され、ファイル名は格納されません。
例
Base64符号化した値を直接記述する場合
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: User001 sn: Fujitsu jpegPhoto:: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAP////////////////////////// ////////////////////////////////////////////////////////////wAAL CAAIAAgBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAt RAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kxw RVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKzt LW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/ 9oACAEBAAA/ADnA6ds9ucjr15Hf65xxX//Z
■ユーザ定義スキーマで定義した属性、およびオブジェクトクラスを使用する時
ユーザ定義スキーマで定義した属性やオブジェクトクラスを使用する時は、標準スキーマで定義済みの属性、およびオブジェクトクラスと同じ形式で指定できます。
例
ユーザ定義スキーマで定義したオブジェクトクラス、「myPerson」を指定する場合
#myPerson dn: cn=User1001,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: myPerson cn: User1001 sn: Fujitsu employeeNumber: 991001 skill: Interstage Certified Professional
エントリの変更情報を記述するLDIF更新形式について説明します。“5.5.1.1 LDIF標準形式”で述べた形式に、さらに、変更の対象、種別、内容を記述します。
次の順序で記述します。
変更するエントリのDN
変更の種別(changetype行)
変更の種別は、以下の4つの中からどれか1つを指定します。
add
dn行で指定したエントリをリポジトリに追加します。
delete
dn行で指定したエントリをリポジトリから削除します。
modify
dn行で指定したエントリを更新します。
modrdn
dn行で指定したエントリのRDN(相対識別名)を変更します。
changetype行を省略した場合、次のように解釈されます。
ldapmodifyコマンドで-aオプションを指定している場合:add
ldapmodifyコマンドで-aオプションを指定していない場合:modify
変更の内容
注意
下位エントリがあるエントリ(サブツリー)に対して、一度の操作で、削除することはできません。リーフ(最下位)エントリから順に、削除してください。
■エントリの追加
changetype行に“add”を指定し、次行から属性定義を記述します。
例
エントリを追加する場合
dn: cn=User002,ou=User,ou=interstage,o=fujitsu,dc=com
changetype: add
objectclass: top
objectclass: person
objectclass: organizationalPerson
cn: User002
sn: Fujitsu
例中に記載のオブジェクトクラス、属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。
■エントリの削除
changetype行に“delete”を指定します。
例
エントリを削除する場合
version: 1
dn: cn=User003,ou=User,ou=interstage,o=fujitsu,dc=com
changetype: delete
例中に記載のオブジェクトクラス、属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。
■エントリの更新
エントリの属性、属性値に対して、追加、削除、置換えを行うには、changetype行に“modify”を指定します。さらに、次行に変更方法を示す種別を指定します。
属性の変更種別は、以下の3つの中からどれか1つを指定します。
add: 属性名
dn行で指定したエントリに属性を追加します。その属性型がすでにエントリにある場合は、属性値を追加します。
delete: 属性名
dn行で指定したエントリから属性を削除します。その属性型に複数の属性値がある場合は、属性値すべてを削除します。複数の属性値のうち1つだけを削除する場合は、delete行の次の行で、属性名と属性値を記述します。
replace: 属性名
dn行で指定したエントリの属性を、指定した値で置き換えます。指定したエントリが指定した属性を持たない場合、その属性を作成します。
属性の変更種別を省略した場合、次のように解釈されます。
ldapmodifyコマンドで-rオプションを指定している場合:replace
ldapmodifyコマンドで-rオプションを指定していない場合:add
属性の変更種別の次の行には、変更する属性の内容を指定します。続けて複数の変更を記述する場合は、“-”(マイナス)で区切ります。
次の書式で記述します。
dn: エントリのDN changetype: modify 属性の変更種別(add|delete|replace): 属性型 属性型: 属性値 -
■属性値の追加
属性の変更種別に“add”を指定します。
例
mail属性を追加する場合
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modify
add: mail mail: user001@interstage.fujitsu.com
2つのtelephonenumber属性と1つのjpegPhoto属性を追加する場合
JPEGファイル C:\data\photo\user001.jpg
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modify add: telephonenumber telephonenumber: 7777-1234 telephonenumber: 7777-5678 - add: jpegPhoto jpegPhoto:< file:///C:\data\photo\user001.jpg
JPEGファイル /data/photo/user001.jpg
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modify add: telephonenumber telephonenumber: 7777-1234 telephonenumber: 7777-5678 - add: jpegPhoto jpegPhoto:< file:///data/photo/user001.jpg
■属性値の削除
属性の変更種別に“delete”を指定します。
例
description属性を削除する場合
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modify
delete: description
■複数の属性値から特定の属性値の削除
属性の変更種別に“delete”を指定します。
例
User001のエントリ情報が次の状態であるとします。
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson cn: User001 sn: Fujitsu telephonenumber: 7777-1234 telephonenumber: 7777-5678
telephonenumber 7777-1234を削除する場合
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modify
delete: telephonenumber telephonenumber: 7777-1234
この結果、User001のエントリ情報は次のようになります。
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson cn: User001 sn: Fujitsu telephonenumber: 7777-5678
■属性値の置換え
属性の変更種別に“replace”を指定します。
例
mail を user001@interstage.fujitsu.com から user001_Fujitsu@interstage.fujitsu.com に変更する場合
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modify
replace: mail mail: user001_Fujitsu@interstage.fujitsu.com
■複数の属性値から特定の属性値の置換え
対象の属性値を削除してから、置き換える値で追加します。
例
User001のエントリ情報が次の状態であるとします。
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson cn: User001 sn: Fujitsu telephonenumber: 7777-1234 telephonenumber: 7777-5678
telephonenumber 7777-1234 を 7777-9001 で置き換える場合
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modify delete: telephonenumber
telephonenumber: 7777-1234 - add: telephonenumber telephonenumber: 7777-9001
この結果、User001のエントリ情報は次のようになります。
dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com objectclass: top objectclass: person objectclass: organizationalPerson cn: User001 sn: Fujitsu telephonenumber: 7777-5678 telephonenumber: 7777-9001
例中に記載のオブジェクトクラス、属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。
■エントリの識別名変更
changetype行に“modrdn”を指定します。さらに、次行にエントリの識別名変更の詳細方法を指定します。
識別名変更の詳細方法は、以下の3つです。この順序で指定します。
newrdn: 新しいRDN
deleteoldrdn: (1|0)
newsuperior: 新しい親エントリのDN
新しいRDNに変更した後、古いRDNを削除する場合は“deleteoldrdn”に“1”、属性値として残す場合は“0”を指定します。
“deleteoldrdn”、および“newsuperior”は省略できます。“deleteoldrdn”を省略すると古いRDNを削除します。“newsuperior”を省略すると親エントリを変更しません。
次の書式で記述します。
dn: エントリのDN changetype: modrdn newrdn: 新しいRDN deleteoldrdn: (1|0) newsuperior: 新しい親エントリのDN
例
User002のエントリのRDNを、U002に変更する場合
dn: cn=User002,ou=User,ou=interstage,o=fujitsu,dc=com changetype: modrdn newrdn: cn=U002 deleteoldrdn: 1
例中に記載のオブジェクトクラス、属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。
■未サポートのLDIF記述
“RFC2849”(June. 2000) に定義されている以下の機能は、Interstage ディレクトリサービスでは未サポートです。
値を持たない属性への操作
属性値を持たない属性の登録はできません。
空白で終わる属性値の表示形式
空白行で終わる属性値の場合Base64形式での出力を行っていません。
controlの指定
LDIFからのcontrol機能の指定はできません。
OIDの指定
LDIFからOIDで指定される属性の指定はできません。
charasetシンタックス
属性値に使用する言語を指定できません。
以下に記述例を示します。
例
dn:: b3U95Za25qWt6YOoLG89QWlyaXVz # dn:: ou=<JapaneseOU> objectclass: top objectclass: organizationalUnit ou:: 5Za25qWt6Yoo # ou:: <JapaneseOU> ou;lang-ja:: 5Za25qWt6YOo # ou;lang-ja:: <JapaneseOU> ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2 # ou;lang-ja:: <JapaneseOU_in_phonetic_representation> ou;lang-en: User description: Japanese office
以下に、ldapmodifyコマンドとLDIFファイルを使用したエントリデータの登録例を示します。
例
管理者用DN “cn=manager,ou=interstage,o=fujitsu,dc=com”
管理者用DNのパスワード admin
リポジトリのホスト名 hostname
ポート番号 389
LDIFファイル C:\Interstage\IREP\sample\ldif\addldif.txt
ldapmodify -H ldap://hostname:389 -D "cn=manager,ou=interstage,o=fujitsu,dc=com" -w admin -a -f C:\Interstage\IREP\sample\ldif\addldif.txt
LDIFファイル /opt/FJSVirep/sample/ldif/addldif.txt
/opt/FJSVirepc/bin/ldapmodify -H ldap://hostname:389 -D "cn=manager,ou=interstage,o=fujitsu,dc=com" -w admin -a -f /opt/FJSVirep/sample/ldif/addldif.txt
ldapmodifyコマンドの詳細は、“リファレンスマニュアル(コマンド編)”の“Interstage ディレクトリサービス運用コマンド”を参照してください。