LDIFは、広く一般的に使用されているファイル形式で、ディレクトリ情報およびディレクトリで実行可能な変更操作について記述します。LDIFは、実際のディレクトリ内で使用されている記憶フォーマットとは完全に独立していて、通常は、LDAPサーバとの間でディレクトリ情報をエクスポートまたはインポートするために使用します。
一般的に、LDIFは簡単に生成できます。そのため、awkやperlなどのツールを使用して、固有の形式のデータをLDAPディレクトリに移動できます。また、LDIF形式でテストデータを生成するスクリプトを作成することもできます。
Novellインポート/エクスポート変換ユーティリティを使用してインポートするファイルの形式は、LDIF 1である必要があります。次にLDIF 1形式のファイルの基本ルールを示します。
LDIF内容レコードは、エントリ全体の内容を表します。次に、4つの内容レコードが定義されたLDIFファイルの例を示します。
1 version:1
2 dn:c=US
3 objectClass:top
4 objectClass:country
5
6 dn:l=San Francisco, c=US
7 objectClass:top
8 objectClass:locality
9 st:San Francisco
10
11 dn:ou=Artists, l=San Francisco, c=US
12 objectClass:top
13 objectClass:organizationalUnit
14 telephoneNumber:+1 415 555 0000
15
16 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
17 sn:Michaels
18 givenname:Peter
19 objectClass:top
20 objectClass:person
21 objectClass:organizationalPerson
22 objectClass:iNetOrgPerson
23 telephonenumber:+1 415 555 0001
24 mail:Peter.Michaels@aaa.com
25 userpassword:Peter123
26
このLDIFファイルは、次の部分から構成されています。
LDIF変更レコードには、ディレクトリに加えられる変更が記述されます。LDAPの更新操作(追加、削除、変更、およびDNの変更)はすべて、LDIF変更レコードに記述できます。
LDIF変更レコードでは、LDIF内容レコードと同じ形式の識別名指定子、属性値指定子、およびレコード区切り記号を使用します(詳細については、LDIF内容レコードを参照してください)。LDIF内容レコードとの違いは、LDIF変更レコードにはchangetypeフィールドがあることです。changetypeフィールドは、変更レコードが指定する操作を識別します。
changetypeフィールドは、次の5つの形式のいずれかをとる必要があります。
追加変更レコードは、内容変更レコード(「LDIF内容レコード」を参照)に、changetype: addフィールドを属性値フィールドの直前に追加したものと同じです。
すべてのレコードのタイプが一致している必要があります。内容レコードと変更レコードを同じファイルに記述することはできません。
1 version:1
2 dn:c=US
3 changetype:add
4 objectClass:top
5 objectClass:country
6
7 dn:l=San Francisco, c=US
8 changetype:add
9 objectClass:top
10 objectClass:locality
11 st:San Francisco
12
14 dn:ou=Artists, l=San Francisco, c=US
15 changetype:add
16 objectClass:top
17 objectClass:organizationalUnit
18 telephoneNumber:+1 415 555 0000
19
20 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
21 changetype:add
22 sn:Michaels
23 givenname:Peter
24 objectClass:top
25 objectClass:person
26 objectClass:organizationalPerson
27 objectClass:iNetOrgPerson
28 telephonenumber:+1 415 555 0001
29 mail:Peter.Michaels@aaa.com
30 userpassword:Peter123
31
削除変更レコードはエントリの削除を指定するので、削除変更レコードに必要なフィールドは識別名指定子と「削除」変更タイプだけです。
次に、「「追加」変更タイプ」のLDIFファイルで作成した4つのエントリを削除するLDIFファイルの例を示します。
重要: 以前に追加したエントリを削除するには、エントリの指定順序を逆にする必要があります。順序を逆にしないと、コンテナ内のエントリが空でないため削除操作が失敗します。
1 version:1
2 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
3 changetype:delete
4
5 dn:ou=Artists, l=San Francisco, c=US
8 changetype:delete
9
10 dn:l=San Francisco, c=US
11 changetype:delete
12
13 dn:c=US
14 changetype:delete
15
「変更」変更タイプでは、すでに存在するエントリに対して属性値の追加、削除、および置換を指定できます。変更指定子は、次の3つの形式のいずれかをとる必要があります。
次の「変更」変更タイプの例では、cn=Peter Michaelsエントリに別の電話番号を追加します。
1 version:1
2 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
3 changetype:modify
4 # add the telephone number to cn=Peter Michaels
4 add:telephonenumber
5 telephonenumber: +1 415 555 0002
6
1つのLDAP変更要求にさまざまな変更を組み合わせて指定できるのと同じように、1つのLDIFレコードに複数の変更指定子を指定できます。ハイフン(-)だけが記述されている行は、各変更指定子に対する属性値指定の終わりを示します。
次のLDIFファイルの例では、複数の変更を組み合わせて指定しています。
1 version:1
2
3 # An empty line to demonstrate that one or more
4 # line separators between the version identifier
5 # and the first record is legal.
6
7 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
8 changetype:modify
9 # Add an additional telephone number value.
10 add:telephonenumber
11 telephonenumber:+1 415 555 0002
12 -
13 # Delete the entire fascimiletelephonenumber attribute.
14 delete:facsimileTelephoneNumber
15 -
16 # Replace the existing description (if any exists)
17 # with two new values.
18 replace:description
19 description:guitar player
20 description:solo performer
21 -
22 # Delete a specific value from the telephonenumber
23 # attribute.
24 delete:telephonenumber
25 telephonenumber:+1 415 555 0001
26 -
27 # Replace the existing title attribute with an empty
28 # set of values, thereby causing the title attribute to
29 # be removed.
30 replace:title
31 -
32
「DN変更」変更タイプでは、エントリのリネーム、移動、またはその両方ができます。この変更タイプは、2つの必須フィールドと1つのオプションフィールドで構成されます。
次の「DN変更」変更タイプの例で、エントリの名前を変更する方法を示します。
1 version:1
2
3 # Rename ou=Artists to ou=West Coast Artists, and leave
4 # its old RDN value.
5 dn:ou=Artists,l=San Francisco,c=US
6 changetype:moddn
7 newrdn:ou=West Coast Artists
8 deleteoldrdn: 1
9
次の「DN変更」変更タイプの例で、エントリを移動する方法を示します。
1 version:1
2
3 # Move cn=Peter Michaels from
4 # ou=Artists,l=San Francisco,c=US to
5 # ou=Promotion,l=New York,c=US and delete the old RDN.
5 dn:cn=Peter Michaels,ou=Artists,l=San Francisco,c=US
6 changetype:moddn
7 newrdn:cn=Peter Michaels
8 deleteoldrdn:1
9 newsuperior:ou=Promotion,l=New York,c=US
10
次の「DN変更」変更タイプの例では、エントリを移動し、同時に名前を変更する方法を示します。
1 version:1
2
3 # Move ou=Promotion from l=New York,c=US to
4 # l=San Francisco,c=US and rename it to
5 # ou=National Promotion.
5 dn:ou=Promotion,l=New York,c=US
6 changetype:moddn
7 newrdn:ou=National Promotion
8 deleteoldrdn:1
9 newsuperior:l=San Francisco,c=US
10
重要: LDAP 2のRDN変更操作では、エントリの移動はサポートされません。LDAP 2クライアントでLDIF newsuperior構文を使用してエントリを移動しようとすると、その要求は失敗します。
LDIFファイル内で行を折り返すには、行を折り返したい場所で単に行区切り記号(改行、またはキャリッジリターンと改行の組み合わせ)を挿入し、その後にスペースを追加します。行の先頭にスペースがある場合、LDIFパーサではスペースの後のデータとその前の行のデータを結合して解析します。したがって、先頭のスペースは無視されます。
マルチバイトのUTF-8文字の途中では、行を折り返さないでください。
次に、行の折り返しを含む(13および14行目)LDIFファイルの例を示します。
1 version:1
2 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
3 sn:Michaels
4 givenname:Peter
5 objectClass:top
6 objectClass:person
7 objectClass:organizationalPerson
8 objectClass:iNetOrgPerson
9 telephonenumber:+1 415 555 0001
10 mail:Peter.Michaels@aaa.com
11 userpassword:Peter123
12 description:Peter is one of the most popular music
13 ians recording on our label.He's a big concert dr
14 aw, and his fans adore him.
15
LDIFファイル内では、ハッシュ化パスワードはBase64データとして表記されます。属性名userpasswordに続けて、パスワードをハッシュ化するために使用される暗号化方式の名前を記述する必要があります。この名前は、次に示すように中カッコ「{}」で囲んで記述します。
SHAハッシュ化パスワードの場合:
1 version:1 2 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 sn:Michaels 4 userpassword:{SHA}xcbdh46ngh37jsd0naSFDedjAS30dm5 objectclass:inetOrgPerson
SSHAハッシュ化パスワードの場合:
1 version:1 2 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 sn:Michaels 4 userpassword:{SSHA}sGs948DFGkakdfkasdDF34DF4dS3skl5DFS5 objectclass:inetOrgPerson
Digest MD5ハッシュ化パスワードの場合:
1 version:1 2 dn:cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 sn:Michaels 4 userpassword:{MD5}a45lkSDF234SDFG62dsfsf2DG2QEvgdmnk4305 objectclass:inetOrgPerson