InfoDirectory使用手引書
目次 索引 前ページ次ページ

第5部 保守編> 第14章 トラブル事例

14.6 LDAPコマンドに関するトラブル

■事例1

【トラブル現象】

 ldapdeleteコマンドで以下の内容が記述されたファイルを指定し、コマンドを実行したところ、Invalid DN syntaxのエラーになる。

 dn: cn=富士通タロウ,o=fujitsu,c=jp

【原因】

 指定方法に誤りがあります。

【対処方法】

 ldapdeleteコマンドで指定されるファイルには、“dn:”の記述は必要ありません。この場合、以下の記述により、エントリの削除が行えます。ldapdeleteコマンドの詳細は、ldapdeleteを参照してください。

 cn=富士通タロウ,o=fujitsu,c=jp

 

■事例2

【トラブル現象】

 ldapmodifyコマンドで以下の内容のLDIFファイルを指定したところ、“invalid ldif format”のエラーになる。[RET]は改行を表しています。

 dn: cn=富士通タロウ,o=tfl,c=jp[RET]
 changetype: modify[RET]
 add: telephonenumber[RET]
 telephonenumber: 1234[RET]
 - [RET]
 add: cn[RET]
 cn: taro[RET]

【原因】

 指定方法に誤りがあります。“-”(ハイフン)行の最後に空白が含まれているために、このエラーになっています。

【対処方法】

 invalid ldif formatのエラーは、LDIFの記述が間違っている場合に表示されます。このエラーが表示された場合は、LDIFの記述形式を見直してください。LDIFの記述形式の詳細は、LDIFを参照してください。

 

■事例3

【トラブル現象】

 LDAPコマンドでエントリの登録/参照を行おうとしたが、文字化けしている。

【原因】

 登録/参照したエントリが文字化けしている場合に、以下の原因が考えられます。

  1. コード変換がサポートされていない他社製のLDAPコマンドを使用している。
  2. 文字コードの指定が正しく行われていない。

【対処方法】

 以下のように対処してください。 

  1. システム環境変数もしくはユーザ環境変数の PATH の設定で、他社製のLDAPコマンドを優先して呼ぶように設定されていないか確認し、PATH の設定に以下のパスを追加して、InfoDirectoryのLDAPコマンドを優先して呼ぶように変更してください。
    “InfoDirectoryのインストールディレクトリ”\ID\Dir\sdk\bin
  2. LDAPコマンドで文字コードの指定を行わない場合に使用される文字コードは、Shift JISコードです。使用するマシンの文字コードの環境を確認して適切な文字コードを指定してください。

  1. 環境変数の PATH の設定で、他社製のLDAPコマンドを優先して呼ぶように設定されていないか確認し、PATH の設定に以下のパスを追加して、InfoDirectoryのLDAPコマンドを優先して呼ぶように変更してください。
    “LDAP SDKのインストールディレクトリ”/C/bin
  2. LDAPコマンドで文字コードの指定を行わない場合に使用される文字コードは、LDAP V3プロトコル指定時でEUCコード、LDAP V2プロトコル指定時でShift JISコードです。使用するマシンの文字コードの環境を確認し、適切な文字コードの指定を行ってください。

     

■事例4

【トラブル現象】

 ldapsearchコマンドでフィルタに“carLicense<=00050”の指定で検索を行ったが、carLicenseに00049の値をもつエントリが検索されなかった。

【原因】

 属性carLicenseのマッチングルール(照合規則)は“caseIgnoreMatch”であるため、“>=”(以上)もしくは“<=”(以下)の指定による検索はできません。

【対処方法】

 マッチングルールが“caseIgnoreMatch”である属性に関しては、完全一致もしくは部分一致による検索フィルタを指定してください。

例:

“carLicense=00049”、“ carLicense=0004*”

 なお、“caseIgnoreOrderingMatch”の属性については、“>=”(以上)、もしくは“<=”(以下)の指定で検索を行うことができます。“caseIgnoreOrderingMatch”の属性を以下に示します。

 "uid","employeenumber","dnQualifier"

 属性のマッチングルールについては、属性一覧を参照してください。

 

■事例5

【トラブル現象】

 特殊文字を含むDNのエントリ登録に失敗した。

【原因】

 特定の特殊文字をDNに使用する場合は、エスケープする必要があります。

【対処方法】

 以下の特殊文字をDNに使用する場合は、エスケープしてください。

 “\”、 “"”、 “,”、 “=”、 “+”、 “<”、 “>”、 “#”、 “;”

 ldapmodifyコマンドの詳細は、ldapmodifyを参照してください。

 

■事例6

【トラブル現象】

 ldapmodifyコマンドでエントリ登録時に発生する、オブジェクトクラス関係のエラーの意味が分からない。

【原因】

 エントリ登録時にエラーが発生する場合、以下の原因によってLDAPのエラーコードに準拠したメッセージが出力されます。

エラー

原因

Object class violation

オブジェクトクラスの必須属性を設定しない場合
オブジェクトクラスに存在しない属性を設定した場合

Naming violation

ネームバインドが設定されていない場合
継承オブジェクトクラスを記述しなかった場合(LDAP V2のみ)

Operations error

存在しないオブジェクトクラス(属性)を設定した場合(LDAP V3のみ)

Invalid syntax

存在しないオブジェクトクラス(属性)を設定した場合(LDAP V2のみ)

Invalid DN syntax

シンタックスに合わない値を設定した場合

Constraint violation

属性値のサイズが規定値を超える場合

【対処方法】

 表のエラー原因について、オブジェクトクラス/属性の定義、ネームバインドの設定を確認してください。

 オブジェクトクラスの定義については、付録A サポートオブジェクトクラスを参照してください。
 属性の定義については、付録B サポート属性を参照してください。
 ネームバインドの設定については、付録C サポートネームバインドを参照してください。

 

■事例7

【トラブル現象】

 ldapmodifyコマンドで以下の内容のLDIFファイルを指定したところ、次のエラーメッセ−ジが出力される。

メッセージ:

 expecting "newrdn:" but saw "deleteoldrdn:" (line 3 of entry dn: cn=富士通タロウ,o=fujitsu,c=jp)

LDIFファイル:

 dn: cn=富士通タロウ,o=fujitsu,c=jp
 changetype: modrdn
 deleteoldrdn:1
 newrdn:cn=富士通ジロウ
 newsuperior: o=fujitsu,c=jp

【原因】

 modrdnで指定されるサブコマンド(new rdn,deleteoldrdn,newsuperior)の指定順序が誤っています。

【対処方法】

 サブコマンド行は、newrdn → deleteoldrdn → newsuperiorの順序で記述してください。

 dn: cn=富士通タロウ,o=fujitsu,c=jp
 changetype: modrdn
 newrdn:cn=富士通ジロウ
 deleteoldrdn:1
 newsuperior: o=fujitsu,c=jp

ldapmodifyコマンドで指定するサブコマンドについては、サブコマンド行を参照してください。

 

■事例8

【トラブル現象】

 LDAP V2プロトコルを指定したldapmodifyコマンドで、jpegphotoの属性をもつエントリを追加したが、管理ツールからそのjpegphotoのデータが見えない。

【原因】

 LDAP V2プロトコルを指定したldapmodifyコマンドでは、LDIFに指定されたバイナリデータは、バイナリとして送信されず、記述されたBase64形式の文字データとして登録されるため、管理ツールからjpegphotoのデータは見ることができません。

【対処方法】

 バイナリデータとして送信する場合は、LDAP V3プロトコルを指定したldapmodifyコマンドを使用してください。ldapmodifyコマンドの詳細は、ldapmodifyを参照してください。

 

■事例9

【トラブル現象】

 ldapmodifyコマンドで、属性値にバイナリデータのファイルから読込むように記述したLDIFを指定したところ、次のメッセージが出力された。

メッセージ:

 Failed to convert charactor code

【原因】

 ldapmodifyコマンドによりバイナリ属性(jpegphoto)の値を指定するときは、以下の対処方法にしたがってください。

【対処方法】

 画像データをバイナリ(JPEG)ファイルで登録する場合は、以下のようにURL形式(file://フルパス)で指定してください。

dn: cn=富士通タロウ,o=fujitsu,c=jp
cn: 富士通タロウ
sn: 富士通
objectclass: inetOrgPerson
objectclass: OrganizationalPerson
objectclass: person
objectclass: top
jpegphoto:< file:///tmp/gazo.jpg

※gazo.jpgはJPEG形式のファイルです。

 画像データをBase64形式のファイルで登録する場合は、以下のようにファイルのパスを直接指定してください。

dn: cn=富士通タロウ,o=fujitsu,c=jp
cn: 富士通タロウ
sn: 富士通
objectclass: inetOrgPerson
objectclass: OrganizationalPerson
objectclass: person
objectclass: top
jpegphoto:< /tmp/gazo.txt

※gazo.txtはBase64形式のファイルです。

 

■事例10

【トラブル現象】

 ldapsearchコマンドで、Base64表記の指定(-e,-E)を行って出力されたBase64形式の属性値をデコードしたが正しく見えなかった。

【原因】

 LDAPコマンドの仕様です。

【対処方法】

 Base64表記の指定で表示されるBase64形式のデータは、UTF-8形式のデータをBase64形式にエンコードしたものです。したがって、Base64形式のデータをUTF-8形式にデコードし、UTF-8形式のデータにした後、再び適切な文字コードに変換する必要があります。

 

■事例11

【トラブル現象】

 ldapsearchコマンドで、文字コードにISO-8859-1を指定したが、0x80以上のコードを含む属性値が、Base64形式で表示される。

【原因】

 LDAPコマンドの仕様です。

【対処方法】

 以下の場合、Base64形式で出力されます。

■事例12

【トラブル現象】

 LDIFファイルに“\”を含む属性値を指定したエントリをldapmodifyコマンドでLDAP V2プロトコルを指定して登録すると、“\”が登録されていなかった。

【原因】

 LDAP V2プロトコルを指定して文字“\”を含む属性を登録するときに、“\”をエスケープしていなかったために登録されていません。

【対処方法】

 LDAP V2プロトコルで、“\”を含む属性値を登録する場合、“\”はエスケープする必要があります。LDAP V3プロトコルではエスケープする必要はありません。

 

■事例13

【トラブル現象】

 ldapmodifyコマンドで、以下のようなエントリに対して、sn属性の値“フジツウ”を“ふじつう”に置換えようとしたところ、属性値”富士通”がなくなってしまった。

 dn: cn=富士通タロウ,o=fujitsu,c=jp
 cn: 富士通タロウ
 sn: 富士通
 sn: フジツウ

 属性値の置換えには、以下のLDIFを使用した。

 dn: cn=富士通タロウ,o=fujitsu,c=jp
 changetype: modify
 replace: sn
 sn: ふじつう

【原因】

 複数の属性値の中から1つだけを置換えようとしているが、処理後に残したい値“富士通”を記述していないため。

【対処方法】

 複数の属性値の中から1つだけを置換える場合、置換えない他の属性値も同時に指定する必要があります。このような場合、以下のような指定を行います。

 dn: cn=富士通タロウ,o=fujitsu,c=jp
 changetype: modify
 replace: sn
 sn: 富士通
 sn: ふじつう

 

■事例14

【トラブル現象】

 ldapmodifyコマンドで、ファイルから内容を読込む記述があるLDIFファイルを指定して実行したところ、違うデータが登録されている。

【原因】

 LDIFファイルで属性値に指定するファイルが、Base64形式にエンコードされていない可能性があります。

 LDAP V3プロトコルを指定したldapmodifyコマンドでは、そのファイルの内容をデコードして登録します。この場合、指定したファイルの内容が違うデータにデコードされて登録されている可能性があります。

 なお、LDAP V2プロトコルの場合は、Base64からデコードされずにBase64データとして登録されます。

【対処方法】

 LDIFファイルで属性値をファイルから読込んで指定する場合は、Base64形式にエンコードされたファイルを指定してください。LDIFファイルの属性値の指定方法については、属性値指定行を参照してください。

 

■事例15

【トラブル現象】

 ldapsearchコマンドで、以下の指定を行って検索したところ、cn属性が登録されているが結果が通知されない。

 ldapsearch -p 10001 -b c=jp "cn=富士通太郎,o=tfl,c=jp" "cn=*"

【原因】

 パラメタの指定方法に誤りがあります。

【対処方法】

 ユーザ名の指定が誤っています。ユーザ名は、“-D ユーザ名”で指定してください。

 

■事例16

【トラブル現象】

 ldapmodifyコマンドで以下の内容のLDIFファイルを指定したところ、invalid ldif formatのエラーになる。

 dn: cn=富士通タロウ,o=tfl,c=jp
 objectclass: person
 cn: 太郎
 sn: 富士通
 telephonenumber:

【原因】

 指定方法に誤りがあります。telephonenumber行の属性値がないために、このエラーになっています。属性値をもたない属性を含むエントリを登録することはできません。

【対処方法】

 invalid ldif formatのエラーは、LDIFの記述が間違っている場合に表示されます。このエラーが表示された場合は、LDIFの記述形式を見直してください。LDIFの記述形式の詳細は、LDIFを参照してください。

 

■事例17

【トラブル現象】

 ldapsearchコマンドでroot DSEの検索ができない。

【原因】

 指定方法を以下に示します。

【対処方法】

 ldapsearchコマンドのパラメタとして、basednに“null”(ヌル)、検索の範囲にbase、返すroot DSEの属性を指定する必要があります。ldapsearchコマンドの詳細は、ldapsearchを参照してください。

 ldapsearch.exe -b "" -D "cn=admin" -w manager -s base "objectClass=*" subschemasubentry

 

■事例18

【トラブル現象】

 ldapsearchコマンドでチェンジログの検索方法ができない。

【原因】

 指定方法に以下に示します。

【対処方法】

 ldapsearchコマンドのパラメタとして、basednに“cn=changelog”、検索の範囲にbaseを指定する必要があります。ldapsearchコマンドの詳細は、ldapsearchを参照してください。

 ldapsearch -s base -b "cn=changelog" -D "cn=admin" -w manager "objectclass=*"


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2004