第14章 ディレクトリーエントリーの検索
ディレクトリー内のエントリーは、コマンドラインまたは Web コンソールを使用して検索および検出できます。
14.1. コマンドラインを使用したディレクトリーエントリーの検索
ldapsearch コマンドラインユーティリティーを使用して、ディレクトリーエントリーを検索できます。このユーティリティーは、指定した ID および認証情報を使用して指定のサーバーへの接続を開き、指定の検索フィルターに基づいてエントリーを見つけます。検索範囲には以下を含めることができます。
- 1 つのエントリー (
-s base
) - エントリーの直接のサブエントリー (
-s one
) - ツリー全体またはサブツリー全体 (
-s sub
)
注記
一般的な間違いは、識別名で使用される属性に基づいてディレクトリーを検索することを仮定することです。識別名はディレクトリーエントリーの一意の識別子であり、検索キーとして使用できません。代わりに、エントリー自体に保存されている属性とデータのペアに基づいてエントリーを検索します。したがって、エントリーの識別名が uid=bjensen,ou=People,dc=example,dc=com の場合、dc=example の検索は、そのエントリーの属性として dc:example が明示的に追加されない限り、そのエントリーと一致しません。
検索結果は LDIF 形式で返されます。LDIF は RFC 2849 に定義されており、付録B LDAP データ交換形式で詳細に説明されています。
このセクションには、以下のトピックに関する情報が含まれます。
14.1.1. ldapsearch コマンドライン形式
ldapsearch コマンドは、次の形式を使用する必要があります。
# ldapsearch [-x | -Y mechanism] [options] [search_filter] [list_of_attributes]
-x
(簡単なバインドを使用するため) または-Y
(SASL メカニズムを設定するため) は、接続の種類を設定するために使用されます。- オプション は、一連のコマンドラインオプションです。これが存在する場合は、検索フィルターの前に指定する必要があります。
- search_filter は、「LDAP 検索フィルター」 で説明されているように、LDAP 検索フィルターです。-f オプションを使用して、検索フィルターがファイルで指定されている場合には、別の検索フィルターを指定しないでください。
- list_of_attributes は、スペースで区切られた属性のリストです。属性のリストを指定すると、検索結果で返される属性の数を減らすことができます。この属性のリストは、検索フィルターの後に表示されなければなりません。例は、「属性のサブセットの表示」を参照してください。属性の一覧が指定されていない場合、検索はディレクトリーで設定されているアクセスコントロールで許可されているすべての属性の値を返しますが、操作属性は例外となります。操作属性を検索結果として返すためには、検索コマンドの中で明示的に指定する必要があります。オブジェクトのすべての操作属性を返すには、
+
を指定します。明示的に指定した操作属性に加えて通常の属性を取得するには、ldapsearch コマンドの属性一覧でアスタリスク (*) を使用します。一致する DN の一覧のみを取得するには、特別な属性 1.1 を使用します。以下に例を示します。# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com \ -b "dc=example,dc=com" -x "(objectclass=inetorgperson)" 1.1
14.1.2. 一般的に使用される ldapsearch オプション
以下の表は、最も一般的に使用される ldapsearch コマンドラインオプションを示しています。指定した値に空白 ( ) が含まれる場合、値は -b "cn=My Special Group,ou=groups,dc=example,dc=com" などの単一引用符または二重引用符で囲む必要があります。
重要
OpenLDAP の ldapsearch ユーティリティーは、デフォルトで SASL 接続を使用します。簡単なバインドを実行するか、TLS を使用するには、
-x
引数を使用して SASL を無効にし、他の接続方法を許可します。
オプション | 説明 | |||
---|---|---|---|---|
-b | 検索の開始点を指定します。ここで指定する値は、現在データベースに存在する識別名である必要があります。これは、LDAP_BASEDN 環境変数がベース DN に設定されている場合は任意です。このオプションで指定する値は、単一引用符または二重引用符で指定する必要があります。以下に例を示します。
-b "cn=user,ou=Product Development,dc=example,dc=com"ルート DSE エントリーを検索するには、ここで -b "" などの空の文字列を指定します。 | |||
-D | サーバーへの認証に使用する識別名を指定します。これは、サーバーによって匿名アクセスに対応している場合はオプションです。指定している場合、この値は Directory Server が認識する DN である必要があります。また、エントリーを検索する権限も必要です、例: -D "uid=user_name,dc=example,dc=com" | |||
-H |
サーバーへの接続に使用する LDAP URL を指定します。従来の LDAP URL の場合は、以下の形式になります。
ldap[s]://hostname[:port]ポート は任意です。ポートを使用しないと、LDAP ポートの場合は 389、LDAPS ポートの場合は 636 がデフォルトで使用されます。
これは LDAPI URL を使用することもできます。各要素は、スラッシュ (/) ではなく、HTML の 16 進コード %2F で区切られています。
ldapi://%2Ffull%2Fpath%2Fto%2Fslapd-example.socketLDAPI の場合は、サーバーがリッスンする LDAPI ソケットの完全パスおよびファイル名を指定します。この値は LDAP URL として解釈されるため、パスおよびファイル名のスラッシュ (/) をエスケープ処理して、URL エスケープ値 %2F としてエスケープする必要があります。 -h および -p の代わりに -H オプションが使用されます。
| |||
-h | Directory Server がインストールされているマシンのホスト名または IP アドレスを指定します。たとえば、-h server.example.com です。ホストが指定されない場合、ldapsearch は localhost を使用します。
注記
Directory Server は、IPv4 アドレスと IPv6 アドレスの両方に対応します。
| |||
-l | 検索要求が完了するまで待つ最大秒数を指定します。たとえば、-l 300 です。nsslapd-timelimit 属性のデフォルト値は 3600 秒です。指定された値に関係なく、ldapsearch はサーバーの nsslapd-timelimit 属性によって許可されるよりも長く待機します。 | |||
-p | Directory Server が使用する TCP ポート番号を指定します。たとえば、-p 1049 です。デフォルトは 389 です。
-h が指定されている場合は、デフォルト値が指定されていても -p も指定する必要があります。
| |||
-s scope | 検索の範囲を指定します。範囲は以下のいずれかになります。
| |||
-W |
パスワードの入力を要求します。このオプションが設定されていない場合は、匿名アクセスが使用されます。
あるいは、
-w オプションを使用して、パスワードをそのユーティリティーに渡します。他のユーザーのプロセスリストにパスワードが表示され、シェルの履歴に保存されていることに注意してください。
| |||
-x | 単純なバインドを許可するためにデフォルトの SASL 接続を無効にします。 | |||
-Y SASL_mechanism |
認証に使用する SASL メカニズムを設定します。メカニズムが設定されていない場合、
ldapsearch はサーバーがサポートする最適なメカニズムを選択します。
-x を使用しない場合は、-Y オプションを使用する必要があります。
| |||
-z number | 検索要求への応答で返すエントリーの最大数を設定します。この値は、ルート DN を使用してバインディングする際にサーバー側の nsslapd-sizelimit パラメーターを上書きします。 |
14.1.3. 特殊文字の使用
ldapsearch コマンドラインユーティリティーを使用する場合は、スペース ( )、アスタリスク (*)、バックスラッシュ (\) などのコマンドラインインタープリターに対して特別な意味を持つ文字を含む値を指定する必要がある場合があります。引用符 ("") で特殊文字が含まれる値を囲みます。以下に例を示します。
-D "cn=user_name,ou=Product Development,dc=example,dc=com"
コマンドラインインタープリターに応じて、一重引用符または二重引用符を使用します。通常、単一引用符 (') を使用して値を囲みます。シェル変数がある場合は、二重引用符 (") を使用して変数挿入を許可します。詳細は、オペレーティングシステムのドキュメントを参照してください。