NetIQインポート/エクスポート変換ユーティリティを使用すると、eDirectoryとの間でのLDIFファイルのインポートおよびエクスポートが簡単になります。詳細については、『NetIQ eDirectory管理ガイド
』の「NetIQインポート/エクスポート変換ユーティリティ」を参照してください。
LDIFインポートを正しく機能させるには、NetIQインポート/エクスポート変換ユーティリティが読み込み、および処理できるLDIFファイルを最初に作成する必要があります。このセクションでは、LDIFファイル形式および構文について説明し、正しいLDIFファイルの例を示します。
LDIFは、広く一般的に使用されているファイル形式で、ディレクトリ情報およびディレクトリで実行可能な変更操作について記述します。LDIFは、実際のディレクトリ内で使用されている記憶フォーマットとは完全に独立していて、通常は、LDAPサーバとの間でディレクトリ情報をエクスポートまたはインポートするために使用します。
一般的に、LDIFは簡単に生成できます。そのため、awkやperlなどのツールを使用して、固有の形式のデータをLDAPディレクトリに移動できます。また、LDIF形式でテストデータを生成するスクリプトを作成することもできます。
NetIQインポート/エクスポート変換ユーティリティを使用してインポートするファイルの形式は、LDIF 1である必要があります。次にLDIF 1形式のファイルの基本ルールを示します。
コメント行以外の第1行目には、「version: 1」と記述します。
バージョンの指定の後に、1つ以上のレコードを定義します。
各レコードは、フィールドで構成されます。1行に1フィールドずつ指定します。
各行は、改行またはキャリッジリターンと改行の組み合わせのどちらかで区切られます。
レコードは、1行以上の空白行で区切られます。
LDIFレコードには、内容レコードと変更レコードの2つのタイプがあります。LDIFファイルに記述するレコード数に制限はありませんが、記述されたすべてのレコードのタイプが一致している必要があります。同じLDIFファイル内に、内容レコードと変更レコードの両方を記述することはできません。
シャープ記号(#)で始まる行はコメント行です。この行は、LDIFファイルの処理時には無視されます。
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ファイルの第1行目にはバージョンが記述されます。コロンとバージョン番号(現在の定義は1)の間には、1つ以上のスペースを指定できますが、スペースを指定しなくても問題はありません。 バージョンを指定した行がない場合、LDIFファイルを処理するアプリケーションはそのファイルのバージョンを0とみなすことができます。また、構文エラーとしてLDIFファイルが拒否される可能性もあります。LDIFを処理するNetIQのユーティリティは、バージョンを指定する行がない場合、ファイルのバージョンを0とみなします。 |
|
識別名指定子 |
各内容レコードの先頭の行(この例では、2、6、11、および16行目)には、そのレコードが表すエントリのDN(識別名)を指定します。 DN指定子は、次の2つのどちらかの形式をとる必要があります。
|
|
行区切り記号 |
行区切り記号としては、改行、またはキャリッジリターンと改行の組み合わせのどちらかを使用できます。これにより、行区切りとして改行を使用するLinuxおよびSolarisテキストファイルと、キャリッジリターンと改行の組み合わせを使用するMS-DOS*およびWindowsテキストファイルとの間の非互換性を解決できます。 |
|
レコード区切り記号 |
レコード区切りとしては、空白行(この例では5、10、15および26行目)を使用します。 LDIFファイル内の各レコード(最後のレコードも含む)の終わりには、レコード区切り記号として1行以上の空白行を挿入する必要があります。一部のアプリケーションでは、レコード区切りを指定していないLDIFファイルもそのまま受け入れられますが、LDIFの仕様ではレコード区切りは必須です。 |
|
属性値指定子 |
内容レコード内のその他すべての行は、値指定子です。値指定子は、次の3つの形式のいずれかをとる必要があります。
|
LDIF変更レコードには、ディレクトリに加えられる変更が記述されます。LDAPの更新操作(追加、削除、変更、およびDNの変更)はすべて、LDIF変更レコードに記述できます。
LDIF変更レコードでは、LDIF内容レコードと同じ形式の識別名指定子、属性値指定子、およびレコード区切り記号を使用します。(詳細については、LDIF内容レコードを参照してください。)LDIF内容レコードとの違いは、LDIF変更レコードにはchangetypeフィールドがあることです。changetypeフィールドは、変更レコードが指定する操作を識別します。
changetypeフィールドは、次の5つの形式のいずれかである必要があります。
|
フォーム |
説明 |
|---|---|
|
changetype: add |
この変更レコードでLDAPの追加操作が指定されていることを示すキーワードです。 |
|
changetype: delete |
この変更レコードでLDAPの削除操作が指定されていることを示すキーワードです。 |
|
changetype: moddn |
この変更レコードで、LDIFプロセッサがバージョン3クライアントとしてLDAPサーバにバインドされている場合はLDAPのDN変更操作が、バージョン2クライアントとしてLDAPサーバにバインドされている場合はRDN変更操作が指定されていることを示すキーワードです。 |
|
changetype: modrdn |
moddn変更タイプと同義です。 |
|
changetype: modify |
この変更レコードでLDAPの変更操作が指定されていることを示すキーワードです。 |
追加変更レコードは、内容変更レコード(「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つの形式のいずれかをとる必要があります。
|
要素 |
説明 |
|---|---|
|
add: 属性タイプ |
この属性タイプに対する後続の属性値指定子がエントリに追加されるように指定する必要があることを示すキーワードです。 |
|
delete: 属性タイプ |
この属性タイプの値が削除されることを示すキーワードです。deleteフィールドの後に属性値指定子が続く場合は、その指定された値が削除されます。 deleteフィールドの後に属性値指定子がない場合は、すべての値が削除されます。属性に値がない場合、この操作は失敗しますが、属性には削除する値がないので結果的にはこの操作が成功したときと同じです。 |
|
replace: 属性タイプ |
属性タイプの値が置き換えられることを示すキーワードです。replaceフィールドに続く属性値指定子が、その属性タイプの新しい値になります。 replaceフィールドの後に属性値指定子がない場合は、現在の値のセットが空の値のセットに置き換えられます(結果的に、属性が削除されます)。delete変更指定子とは異なり、属性に値が設定されていない場合でもreplaceは成功します。どちらの場合も実際に得られる結果は同じです。 |
次の「変更」変更タイプの例では、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つのオプションフィールドで構成されます。
|
フィールド |
説明 |
|---|---|
|
newrdn (必須) |
このレコードの処理の実行中にエントリに割り当てられる新しい名前を指定します。新規RDN(newrdn)指定子は、次の2つのどちらかの形式をとる必要があります。
新規RDN指定子は、「DN変更」変更タイプが指定されたすべてのLDIFレコードで指定されている必要があります。 |
|
deleteoldrdn (必須) |
旧RDN削除(deleteoldrdn)指定子は、古いRDNをnewrdn(新規RDN)に置き換えるか、残しておくかを指定するフラグです。これは、次の2つのどちらかの形式をとります。
|
|
newsuperior (オプション) |
新規スーペリア(newsuperior)指定子は、このDN変更レコードの処理時にエントリに割り当てる新しいペアレントの名前を指定します。新規スーペリア指定子は、次の2つのどちらかの形式をとります。
新規スーペリア指定子は、「DN変更」変更タイプが指定されたLDIFレコードでオプションとして使用できます。これは、エントリのペアレントを変更する場合のみ指定します。 |
次の「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
LDIFファイルで問題が発生した場合、次のことを考慮してください。
LDIFファイルで、あるエントリを追加するレコードを、そのエントリのペアレントを追加するレコードの前に記述してしまう場合があります。この場合、LDAPサーバが新しいエントリを追加しようとすると、そのエントリのペアレントが存在しないためエラーが発生します。
この問題は、前方参照の使用を有効にするだけで解決できます。前方参照の作成を有効にすると、エントリを作成するときにそのペアレントがまだ存在していない場合でも、このペアレント用に前方参照というプレースホルダが作成されるため、エントリを正常に作成できます。以後の操作で親が作成されると、前方向参照は通常のエントリに変更されます。
LDIFのインポートが完了した後でも、1つ以上の前方参照が残っている場合があります(たとえば、LDIFファイルでエントリのペアレントが作成されなかった場合など)。この場合、前方向参照はiManagerで不明オブジェクトとして表示されます。前方参照エントリを検索することはできますが、前方参照エントリには属性も属性値もないため、objectClass以外の属性を読み込むことはできません。ただし、前方参照の下に位置する実オブジェクトエントリ上では、すべてのLDAP操作が正常に機能します。
前方参照エントリは「不明」のオブジェクトクラスを持ち、また、内部NDS EF_REFERENCEエントリにフラグが設定されています。iManagerでは、「不明」のオブジェクトクラスを持つエントリは、中央に疑問符が表示される丸い黄色いアイコンで示されます。LDAPを使用して不明オブジェクトクラスのオブジェクトを検索することもできますが、現時点ではLDAPからエントリフラグの設定にアクセスしてそれが前方参照エントリであることを確認する方法はありません。
(LDIFファイルまたはLDAPクライアント要求などを使用して)オブジェクトを作成するだけで、前方参照エントリを通常のオブジェクトに変更できます。eDirectoryで作成するように指定したエントリが前方参照としてすでに存在する場合、eDirectoryでは既存の前方参照エントリが、作成を指定したオブジェクトに変換されます。
LDIFのインポート時に前方参照を有効にするには、次の手順に従ってください。
NetIQ iManagerで、[役割およびタスク]をクリックします。
[eDirectoryの保守]>[インポート/エクスポート変換ウィザード]の順にクリックします。
[ディスク上のファイルからデータをインポート]をクリックし、[次へ]をクリックします。
インポートするファイルのタイプに[LDIF]を指定します。
インポートするデータが含まれているファイルの名前を指定し、適切なオプションを指定してから[次へ]をクリックします。
データのインポート先になるLDAPサーバを指定します。
次の表の説明を参照して、適切なオプションを追加します。
|
オプション |
説明 |
|---|---|
|
サーバのDNS名/IPアドレス |
相手LDAPサーバのDNS名またはIPアドレス |
|
ポート |
相手LDAPサーバのポート番号(整数) |
|
DERファイル |
SSL認証に使用するサーバキーが格納されているDERファイルの名前 |
|
ログイン方法 |
[認証ログイン]または[匿名ログイン]([ユーザDN]フィールドに指定したエントリのログイン方法) |
|
ユーザDN |
サーバで指定されたバインド操作に使用されるエントリの識別名 |
|
パスワード |
[ユーザDN]フィールドで指定したエントリのパスワード属性 |
[詳細設定]で、[前方参照を許可する]をクリックします。
[次へ]をクリックし、[終了]をクリックします。
データをデータサーバへ移行するときに前方参照を有効にするには、次の手順に従ってください。
NetIQ iManagerで、[役割およびタスク]をクリックします。
[eDirectoryの保守]>[インポート/エクスポート変換ウィザード]の順にクリックします。
[サーバ間でデータを移行]>[次へ]の順にクリックします。
移行するエントリが格納されているLDAPサーバを指定します。
次の表の説明を参照して、適切なオプションを追加します。
|
オプション |
説明 |
|---|---|
|
サーバのDNS名/IPアドレス |
ソースLDAPサーバのDNS名またはIPアドレス |
|
ポート |
ソースLDAPサーバのポート番号(整数) |
|
DERファイル |
SSL認証に使用するサーバキーが格納されているDERファイルの名前 |
|
ログイン方法 |
[認証ログイン]または[匿名ログイン]([ユーザDN]フィールドに指定したエントリのログイン方法) |
|
ユーザDN |
サーバで指定されたバインド操作に使用されるエントリの識別名 |
|
パスワード |
[ユーザDN]フィールドで指定したエントリのパスワード属性 |
[詳細設定]で、[前方参照を許可する]をクリックします。
[次へ]をクリックします。
移行するエントリの検索条件を次のように指定します。
|
オプション |
説明 |
|---|---|
|
ベースDN |
検索要求のベース識別名 このフィールドを指定しなかった場合、デフォルトのベースDNである""(空の文字列)が使用されます。 |
|
スコープ |
検索要求のスコープ |
|
フィルタ |
RFC 2254準拠の検索フィルタ デフォルトは「objectclass=*」です。 |
|
属性 |
検索エントリごとに取得する属性 |
[次へ]をクリックします。
データを移行するLDAPサーバを指定します。
[次へ]をクリックし、[終了]をクリックします。
メモ:スキーマが各LDAPサービスで整合性を保っていることを確認します。
コマンドラインインタフェースで前方参照を有効にするには、‑F LDAPターゲットハンドラオプションを使用します。
詳細については、『NetIQ eDirectory管理ガイド
』のLDIFターゲットハンドラのオプションを参照してください。
ファイル内のレコードを処理する前に、[操作を表示するが実行しない]LDIFソースハンドラオプションを使用してLDIFファイルの構文をチェックできます。
LDIFソースハンドラは、LDIFファイル内のレコードを処理するときに常に構文をチェックします。このオプションを使用すると、レコードの処理を無効にして、構文を検証できます。
NetIQ iManagerで、[役割およびタスク]をクリックします。
[eDirectoryの保守]>[インポート/エクスポート変換ウィザード]の順にクリックします。
[ディスク上のファイルからデータをインポート]をクリックし、[次へ]をクリックします。
インポートするファイルのタイプに[LDIF]を指定します。
インポートするデータが含まれているファイルの名前を指定し、適切なオプションを指定します。
[詳細設定]で、[操作を実行せずに表示]をクリックし、[次へ]をクリックします。
データのインポート先になるLDAPサーバを指定します。
次の表の説明を参照して、適切なオプションを追加します。
|
オプション |
説明 |
|---|---|
|
サーバのDNS名/IPアドレス |
相手LDAPサーバのDNS名またはIPアドレス |
|
ポート |
相手LDAPサーバのポート番号(整数) |
|
DERファイル |
SSL認証に使用するサーバキーが格納されているDERファイルの名前 |
|
ログイン方法 |
[認証ログイン]または[匿名ログイン]([ユーザDN]フィールドに指定したエントリのログイン方法) |
|
ユーザDN |
サーバで指定されたバインド操作に使用されるエントリの識別名 |
|
パスワード |
[ユーザDN]フィールドで指定したエントリのパスワード属性 |
[次へ]をクリックし、[終了]をクリックします。
コマンドラインインタフェースでLDIFファイルの構文をチェックするには、‑n LDIFソースハンドラオプションを使用します。
詳細については、『NetIQ eDirectory管理ガイド
』の「LDIFソースハンドラのオプション」を参照してください。
NetIQインポート/エクスポート変換ユーティリティは、ターゲットハンドラによる処理に失敗したレコードをすべてリストしたLDIFファイルを自動的に作成します。ユーティリティによって生成されたLDIFエラーファイルを編集してエラーを修正し、サーバに再適用することで、失敗したレコードに含まれているインポートまたはデータの移行を完了できます。
NetIQ iManagerで、[役割およびタスク]をクリックします。
[eDirectoryの保守]>[インポート/エクスポート変換ウィザード]の順にクリックします。
[ディスク上のファイルからデータをインポート]をクリックし、[次へ]をクリックします。
[詳細設定]で、[失敗したレコードをログに記録]オプションを選択し、[次へ]をクリックします。
インポートするファイルのタイプに[LDIF]を指定します。
インポートするデータが含まれているファイルの名前を指定し、適切なオプションを指定してから[次へ]をクリックします。
データのインポート先になるLDAPサーバを指定します。
前の表で説明されているように、適切なオプションを追加します。
[次へ]をクリックします。ice.logファイルが作成され、そのファイルに出力メッセージ(エラーメッセージを含む)が記録され、失敗したエントリがLDIFフォーマットで出力されます。
完了をクリックします。
コマンドラインユーティリティでエラーログオプションを設定するには、‑l一般オプションを使用します。
詳細については、『NetIQ eDirectory管理ガイド
』の「全般オプション」を参照してください。
一部のLDIFの問題を理解するには、LDAPクライアントSDKがどのように機能するかを理解する必要があります。LDAPソースハンドラ、LDAPターゲットハンドラ、またはその両方に、次のデバッギングフラグを設定できます。
|
値 |
説明 |
|---|---|
|
0x0001 |
LDAPファンクションコールをトレースします。 |
|
0x0002 |
パケットに関する情報を出力します。 |
|
0x0004 |
引数に関する情報を出力します。 |
|
0x0008 |
接続情報を出力します。 |
|
0x0010 |
BERのエンコーディングおよびデコーディング情報を出力します。 |
|
0x0020 |
検索フィルタ情報を出力します。 |
|
0x0040 |
設定情報を出力します。 |
|
0x0080 |
ACL情報を出力します。 |
|
0x0100 |
統計情報を出力します。 |
|
0x0200 |
追加の統計情報を出力します。 |
|
0x0400 |
シェル情報を出力します。 |
|
0x0800 |
解析情報を出力します。 |
|
0xFFFF (10進数では、-1) |
すべてのデバッギングオプションを有効にします。 |
この機能を有効にするには、LDAPソースハンドラおよびターゲットハンドラで‑eオプションを使用します。-eオプションに指定する整数の値は、LDAP SDKでさまざまな種類のデバッグ情報を有効にするビットマスクです。
詳細については、『NetIQ eDirectory管理ガイド
』の「LDAPソースハンドラのオプション
」および「LDAPターゲットハンドラのオプション」を参照してください。
LDIFではLDAP更新操作を表すことができるので、LDIFを使用してスキーマを変更できます。
クラスを追加するには、単に、NDSObjectClassDescriptionの仕様に従った属性値をsubschemaSubentryのobjectClasses属性に追加します。
NDSObjectClassDescription = "(" whsp
numericoid whsp
[ "NAME" qdescrs ]
[ "DESC" qdstring ]
[ "OBSOLETE" whsp ]
[ "SUP" oids ]
[ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp ]
[ "MUST" oids ]
[ "MAY" oids ]
[ "X-NDS_NOT_CONTAINER" qdstrings ]
[ "X-NDS_NONREMOVABLE" qdstrings ]
[ "X-NDS_CONTAINMENT" qdstrings ]
[ "X-NDS_NAMING" qdstrings ]
[ "X-NDS_NAME" qdstrings ]
whsp ")"
次のLDIFファイルの例では、person objectClassをスキーマに追加します。
1 version: 1
2 dn: cn=schema
3 changetype: add
4 objectClasses: ( 2.5.6.6 NAME 'person' DESC 'Standard
5 ObjectClass' SUP ndsLoginProperties STRUCTURAL MUST
6 (cn $ sn) MAY (description $ seeAlso $ telephoneNum
7 ber $ fullName $ givenName $ initials $ uid $ userPa
8 ssword) X-NDS_NAMING ('cn' 'uid') X-NDS_CONTAINMENT
9 ('organization' 'organizationalUnit' 'domain') X-NDS
10 _NAME 'Person' X-NDS_NOT_CONTAINER '1' X-NDS_NONREMO
11 VABLE '1')
12
必須属性は、オブジェクトクラス記述のMUSTセクションにリストします。personオブジェクトクラスの場合、必須属性はcnとsnです。
オプション属性のリストは、オブジェクトクラス記述のMAYセクションに記述します。personオブジェクトクラスのオプション属性は、description、seeAlso、telephoneNumber、fullName、givenName、initials、uid、およびuserPasswordです。
メモ:userPassword属性は、オプション(MAY)属性には使用できません。このLDIF形式を使用して、新しいobjectClassでこの属性を必須(MUST)属性に使用してスキーマを拡張しようとしても、操作は失敗します。
定義されているオブジェクトクラスを包含するオブジェクトクラスは、オブジェクトクラス記述のX-NDS_CONTAINMENTセクションで指定します。personオブジェクトクラスを包含するオブジェクトクラスは、organization、organizationalUnit、およびdomainです。
属性を追加するには、NDSAttributeTypeDescriptionの仕様に従って属性値をsubschemaSubentryのattributes属性に追加します。
NDSAttributeTypeDescription = "(" whsp
numericoid whsp ; AttributeType identifier
[ "NAME" qdescrs ] ; name used in AttributeType
[ "DESC" qdstring ] ; description
[ "OBSOLETE" whsp ]
[ "SUP" woid ] ; derived from this other AttributeType
[ "EQUALITY" woid] ; Matching Rule name
[ "ORDERING" woid] ; Matching Rule name
[ "SUBSTR" woid ] ; Matching Rule name
[ "SYNTAX" whsp noidlen whsp ] ; Syntax OID
[ "SINGLE-VALUE" whsp ] ; default multi-valued
[ "COLLECTIVE" whsp ] ; default not collective
[ "NO-USER-MODIFICATION" whsp ] ; default user modifiable
[ "USAGE" whsp AttributeUsage ] ; default userApplications
[ "X-NDS_PUBLIC_READ" qdstrings ]
; default not public read ('0')
[ "X-NDS_SERVER_READ" qdstrings ]
; default not server read ('0')
[ "X-NDS_NEVER_SYNC" qdstrings ]
; default not never sync ('0')
[ "X-NDS_NOT_SCHED_SYNC_IMMEDIATE" qdstrings ]
; default sched sync immediate ('0')
[ "X-NDS_SCHED_SYNC_NEVER" qdstrings ]
; default schedule sync ('0')
[ "X-NDS_LOWER_BOUND" qdstrings ]
; default no lower bound('0')
;(upper is specified in SYNTAX)
[ "X-NDS_NAME_VALUE_ACCESS" qdstrings ]
; default not name value access ('0')
[ "X-NDS_NAME" qdstrings ] ; legacy NDS name
whsp ")"
次のLDIFファイルの例では、title属性タイプをスキーマに追加します。
1 version: 1
2 dn: cn=schema
3 changetype: add
4 attributeTypes: ( 2.5.4.12 NAME 'title' DESC 'Standa
5 rd Attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{
6 64} X-NDS_NAME 'Title' X-NDS_NOT_SCHED_SYNC_IMMEDIA
7 TE '1' X-NDS_LOWER_BOUND '1')
8
属性は、明示的に単一値として定義されない限り、デフォルトでは複数値です。次のLDIFファイルの例では、SYNTAXセクションの後にSINGLE-VALUEキーワードを追加することによって、titleを単一値として定義しています。
1 version: 1
2 dn: cn=schema
3 changetype: add
4 attributeTypes: ( 2.5.4.12 NAME 'title' DESC 'Standa
5 rd Attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{
6 64} SINGLE-VALUE X-NDS_NAME 'Title' X-NDS_NOT_SCHED
7 _SYNC_IMMEDIATE '1' X-NDS_LOWER_BOUND '1')
8
新しいスキーマエレメントを追加する場合は問題ありませんが、通常、既存のスキーマエレメントを変更または拡張する場合には注意が必要です。すべてのスキーマエレメントはOIDによって固有に識別されるため、標準スキーマエレメントを拡張すると、元のOIDを使用する場合でも実際にはそのエレメントに対して2つめの定義が作成されます。このため、不整合が発生することがあります。
スキーマエレメントの変更が必要な場合もあります。たとえば、開発しながらスキーマエレメントを洗練していくときに、新しいスキーマエレメントの拡張または修正が必要な場合があります。次のような場合は、クラスに直接新しい属性を追加せずに、通常は補助クラスのみを使用します。
既存のオブジェクトクラスに新しい属性を追加する場合。
既存のオブジェクトクラスのサブクラスを作成する場合。
次のサンプルLDIFファイルは、2つの新しい属性、およびこの新しい属性に付随する補助クラスを作成してから、inetOrgPersonエントリをエントリのオブジェクトクラスとしてauxiliaryクラスとauxiliaryクラスの属性値に追加します。
version: 1 # Add an attribute to track a bear's hair. The attribute is # multi-valued, uses a case ignore string syntax, # and has public read rights # Values may include: long hair, short, curly, straight, # none, black, and brown # X-NDS_PUBLIC_READ '1' The 1 allows public read, # 0 denies public read dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( 2.16.840.1.113719.1.186.4.10 NAME 'bearHair' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-NDS_PUBLIC_READ '1' ) # add an attribute to store a bear's picture dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( 2.16.840.1.113719.1.186.4.11 NAME 'bearPicture' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE ) # create an Auxiliary class for the bearfeatures dn: cn=schema changetype: modify add: objectclasses objectclasses: (2.16.840.1.113719.1.186.6.101 NAME 'bearFeatures' MAY (bearHair $ bearPicture) AUXILIARY) # now create a user named bobby dn: cn=bobby,o=bearcave changetype: add cn: bobby sn: bear givenName: bobby bearHair: Short bearHair: Brown bearHair: Curly bearPicture:< file:///c:/tmp/alien.jpg objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: bearFeatures # now create a person named john that will later be changed # into a bear when bearFeatures is added to its objectClass # list dn: cn=john,o=bearcave changetype: add cn: John sn: bear givenName: john objectClass: top objectClass: person objectClass: inetOrgPerson # now morph john into a bear by adding bearFeatures dn: cn=john,o=bearcave changetype: modify add: objectClass objectClass: bearFeatures - add: bearHair bearHair: long bearHair: black #bearPicture:< file:///c:/tmp/john.jpg> - # to morph john back to a person, simply delete the # objectClass bearFeatures dn: cn=john,o=bearcave changetype: modify delete: objectClass objectClass: bearFeatures
補助クラスの削除にあたって、objectClassリストからauxiliaryクラスを削除する場合には、auxiliaryクラスに関連するすべての値を削除する必要はありません。この処理はeDirectoryによって自動的に行われます。
auxiliaryクラスにMUST属性がある場合、auxiliaryクラスをobjectClassリストへ追加する変更操作でもこれらの属性を指定する必要があります。これらの属性が指定されていない場合、変更は失敗します。
個々のレコードがXMLファイルで指定されたすべてのXMLルールを遵守していない場合、LDIFレコード(LDAPサーバで生成されたLDIF形式またはレコード)のXML処理は成功しません。
Windowsでは、簡易パスワードを持つLDIFをアップロードするときに、systemフォルダおよびAdministratorフォルダに格納されているNICIキーが同期されていない場合、ldif2dibが失敗することがあります。
この問題を回避するには、次の手順でnici/systemフォルダ内のキーにアクセスします。
C:\Windows\system32\novell\nici\フォルダに移動します(32ビットNICIの場合)。
または
C:\Windows\SysWOW64\novell\nici\フォルダに移動します(64ビットNICIの場合)。
Administratorフォルダのファイルをバックアップします。
Systemフォルダの[プロパティ]ウィンドウにある[セキュリティ]タブに移動します。
[詳細設定]を選択し、[所有者]タブに移動します。
Administratorを選択します。
[セキュリティ]タブに戻り、Administratorを一覧に追加します。
手順ステップ 3~ステップ 6を繰り返し、systemフォルダ内にあるすべてのファイルに対して読み取りアクセス権を取得します。
Administratorフォルダのファイルをsystemフォルダのファイルで上書きします。
アップロードした後に、バックアップファイルをAdministratorフォルダにコピーします。
systemフォルダおよびフォルダ内のファイルへのAdministratorのアクセス権を変更します。
LDIFファイルには、エントリが属するすべてのオブジェクトクラスを記述する必要があります。また、クラスの継承によってエントリが属することになるクラスも記述する必要があります。たとえば、inetOrgPersonタイプのエントリの構文はLDIFファイルでは次のようになります。
objectclass: inetorgperson
objectclass: organizationalPerson
objectclass: person
objectclass: top
ldif2dibユーティリティを使用してバルクロード処理を行ったオブジェクトは、指定されたACLと一緒にオブジェクトのオブジェクトクラス用のACLテンプレートには追加されません。
sキーまたはSキーを押すと、オフラインのバルクロード処理を一時的に停止することができます。バルクロード処理を停止する際はエスケープキー(Esc)を使用することができます。