第4章 LDAP 検索 (ldapsearch) の例


以下に、ディレクトリー内の検索に使用される一般的な `ldapsearch` の例を示します。

前提条件

  • ディレクトリー内のすべてのエントリーの検索を実行する。
  • 検索および読み取り操作に対する匿名アクセスをサポートするようにディレクトリーを設定している。したがって、コマンドで -W および -D オプションを使用してバインド情報を指定する必要はありません。For more information on anonymous access, see Granting anonymous access.
  • サーバーがデフォルトのポート番号 389 を使用している。ポート番号を検索要求で指定する必要はありません。
  • サーバーのホスト名が、server.example.com である。
  • デフォルトの LDAPS ポート番号であるポート 636 でサーバーの TLS を有効にしている。
  • Directory Server が、すべてのデータを dc=example,dc=com 接尾辞の下に保存している。

すべてのエントリーを返す検索

次の LDAP 検索では、ディレクトリー内のすべてのエントリーが返されます。

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)"
Copy to Clipboard Toggle word wrap

(objectclass=*) 検索フィルターを使用すると、ディレクトリー内のすべてのエントリーが返されます。各エントリーにはオブジェクトクラスが必要で、objectclass 属性には常にインデックスが付けられます。

コマンドラインでの検索フィルターの指定

フィルターを引用符で囲む ("filter") ことにより、検索フィルターをコマンドで直接指定できます。コマンドでフィルターを指定する場合は、-f オプションを指定しないでください。たとえば、"cn=babs jensen" を指定するには、次のように入力します。

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "cn=babs jensen"
Copy to Clipboard Toggle word wrap

ルート DSE エントリーの検索

ルート DSE は、ローカルの Directory Server がサポートするすべての接尾辞を含む、ディレクトリーサーバーのインスタンスに関する情報が含まれる特別なエントリーです。このエントリーを検索するには、検索ベース ""、検索範囲 base、およびフィルター "objectclass=*" を指定します。次に例を示します。

# ldapsearch -H ldap://server.example.com -x -b "" -s base "objectclass=*"
Copy to Clipboard Toggle word wrap

スキーマエントリーの検索

cn=schema エントリーは、オブジェクトクラスや属性タイプなどのディレクトリースキーマに関する情報が含まれる特別なエントリーです。

cn=schema エントリーの内容をリスト表示するには、次のコマンドのいずれかを入力します。

# ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub objectClasses attributeTypes matchingRules \ matchingRuleUse dITStructureRules nameForms ITContentRules ldapSyntaxes
Copy to Clipboard Toggle word wrap

または

# ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub "+"
Copy to Clipboard Toggle word wrap

LDAP_BASEDN 変数の使用

検索を簡略化するために、LDAP_BASEDN 環境変数を使用して検索ベースを設定できます。ldapsearch コマンドで -b オプションを使用する代わりに、LDAP_BASEDN を設定できます。環境変数の設定の詳細は、オペレーティングシステムのドキュメントを参照してください。

LDAP_BASEDN をディレクトリーの接尾辞の値に設定します。ディレクトリーの接尾辞はディレクトリーのルートエントリーと等しいため、すべての検索はディレクトリーのルートエントリーから始まります。

たとえば、LDAP_BASEDN 変数を dc=example,dc=com に設定し、ディレクトリー内の cn=babs jensen を検索するには、次のように入力します。

# export LDAP_BASEDN="dc=example,dc=com"

# ldapsearch -H ldap://server.example.com -x "cn=babs jensen"
Copy to Clipboard Toggle word wrap

スコープを指定する -s オプションが指定されていないため、このコマンドはデフォルトのスコープである sub を使用します。

属性のサブセットの表示

ldapsearch コマンドは、すべての検索結果を LDIF 形式で返します。デフォルトでは、ldapsearch はエントリーの識別名 (DN) と、ユーザーが読み取りを許可されているすべての属性を返します。ディレクトリーアクセス制御は、指定したディレクトリーエントリーの属性のサブセットのみをユーザーが読み取ることができるように設定できます。

Directory Server は、デフォルトでは操作属性を返しません。検索操作の結果として操作属性を返すには、検索コマンドでこれらの属性を明示的に指定するか、すべての操作属性を返すように + 引数を使用します。詳細は、操作属性の検索 を参照してください。

コマンドラインで検索フィルターの後に必要な属性を指定することで、返される属性をいくつかの特定の属性に限定できます。

たとえば、ディレクトリー内のすべてのエントリーの cn 属性と sn 属性を表示するには、次のように入力します。

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" sn cn 
Copy to Clipboard Toggle word wrap

操作属性の検索

操作属性は、Directory Server 自体が設定する特別な属性です。Directory Server は、操作属性を使用して、アクセス制御命令の処理などのメンテナンスタスクを実行します。これらの属性は、エントリーが最初に作成された時刻や作成したユーザーの名前など、エントリーに関する特定の情報を示します。

属性がエントリーのオブジェクトクラスに対して特別に定義されている場合でも、ディレクトリー内のすべてのエントリーで操作属性を使用できます。

通常の ldapsearch コマンドは操作属性を返しません。RFC3673 に従って、+ を使用して検索要求の操作属性をすべて返します。

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" '+' 
Copy to Clipboard Toggle word wrap

定義された特定の操作属性のみを返すには、ldapsearch リクエストに明示的に指定します。

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" creatorsName createTimestamp modifiersName modifyTimestamp 
Copy to Clipboard Toggle word wrap

操作属性の完全なリストについては、操作属性とオブジェクトクラス を参照してください。

注記

指定した操作属性とともにすべての通常のエントリー属性を返すには、指定した操作属性に加えて、特別な検索属性 "*" を使用してください。

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" "*" aci
Copy to Clipboard Toggle word wrap

シェルがアスタリスク (*) を解釈できないように、アスタリスク (*) を引用符で囲む必要があることに注意してください。

ファイルを使用した検索フィルターの指定

検索フィルターは、コマンドラインに入力する代わりに、ファイルで指定できます。

ファイル内の個別の行に各検索フィルターを指定します。ldapsearch コマンドは、ファイルに表示される順序で各検索を実行します。

たとえば、ファイルには以下のフィルターが含まれます。

sn=example
givenname=user
Copy to Clipboard Toggle word wrap

ldapsearch コマンドは、最初に、surnameexample に設定されているすべてのエントリーを検索し、次に、givennameuser に設定されているすべてのエントリーを検索します。検索要求で両方の検索基準に一致するエントリーが見つかった場合、そのエントリーは 2 回返されます。

次の検索では、フィルターは searchdb という名前のファイルで指定されます。

# ldapsearch -H ldap://server.example.com -x -f searchdb 
Copy to Clipboard Toggle word wrap

検索行の末尾に属性名を指定することで、返される属性のセットを制限できます。たとえば、以下の ldapsearch コマンドは両方の検索を実行しますが、各エントリーの DN、givenname および sn 属性のみが返されます。

# ldapsearch -H ldap://server.example.com -x -f searchdb sn givenname
Copy to Clipboard Toggle word wrap

検索フィルターでコンマを含む DN の指定

検索フィルター内の DN の値の一部としてコンマが含まれている場合、検索コマンドはバックスラッシュ (\) でコンマをエスケープする必要があります。たとえば、example.com Bolivia, S.A. サブツリー内で全員を検索するには、次のように入力します。

# ldapsearch -H ldap://server.example.com -x -s base -b "l=Bolivia\, S.A.,dc=example,dc=com" "objectclass=*"
Copy to Clipboard Toggle word wrap

フィルターでの nsRole 仮想属性の使用

次の例では、ldapsearch コマンドは、managed_role 値に設定された nsrole 属性を含むすべてのユーザーエントリーの DN を検索します。

# ldapsearch -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsrole=cn=managed_role,dc=example,dc=com)" dn
Copy to Clipboard Toggle word wrap

クライアント証明書の Directory Server へのバインド

証明書ベースの認証の詳細は、証明書ベースの認証の設定 を参照してください。

言語マッチングルールでの検索

検索フィルターでマッチングルールを明示的に送信するには、属性の後にマッチングルールを挿入します。

attr:matchingRule:=value
Copy to Clipboard Toggle word wrap

マッチングルールは、国際化されたディレクトリーの検索に頻繁に使用されます。次のコマンドは、スウェーデン語 (2.16.840.1.113730.3.3.2.46.1) のマッチングルールで N4709 以降の部署番号を検索します。

departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
Copy to Clipboard Toggle word wrap

国際化された検索を実行するその他の例については、国際化されたディレクトリーの検索 を参照してください。

ユーザーが所属するグループを検索する

ユーザー uid=jdoe,ou=people,dc=example,dc=com がメンバーであるすべての直接または間接グループを検索するには、次のように入力します。

# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(member:1.2.840.113556.1.4.1941:=uid=jdoe,ou=people,dc=example,dc=com)" dn
Copy to Clipboard Toggle word wrap

inchainMatch マッチングルールを使用した検索では、匿名アクセスはサポート されませんinchainMatch マッチングルールの使用の詳細は、inchainMatch マッチングルールを使用して LDAP エントリーの祖先を検索する を参照してください。

グループのメンバーを見つける

marketing グループの直接または間接のメンバーをすべて検索するには、次のように入力します。

# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(memberof:1.2.840.113556.1.4.1941:=cn=marketing,ou=groups,dc=example,dc=com)" dn
Copy to Clipboard Toggle word wrap

inchainMatch マッチングルールを使用した検索では、匿名アクセスはサポート されませんinchainMatch マッチングルールの使用の詳細は、inchainMatch マッチングルールを使用して LDAP エントリーの祖先を検索する を参照してください。

ビットフィールドの値での属性の検索

ビット単位の検索では、ビットフィールドの値を持つ属性に対して、ビット単位の AND またはビット単位の OR のマッチングルールを使用してビット単位の検索操作を行います。

注記

ビットフィールドの値が含まれる属性は LDAP で一般的ではありません。デフォルトの Directory Server スキーマは、ビットフィールドを属性構文として使用しません。ただし、複数の LDAP 構文は整数形式の値をサポートします。カスタム属性を定義してビットフィールド値を使用できます。アプリケーションはカスタム属性を使用して、ビットフィールド値に対してビット単位の操作を実行できます。

ビット単位 AND マッチングルール (1.2.840.113556.1.4.803) は、アサーション値に指定されたビットがビットフィールド属性値に設定されていることを確認します。これは等価検索に類似しています。次の例では、userAccountControl 値を 2 を表すビットに設定します。

"(UserAccountControl:1.2.840.113556.1.4.803:=2)"
Copy to Clipboard Toggle word wrap

次の例は、userAccountControl 値には、値 6 (ビット 2 および 4) に設定されるすべてのビットが必要であることを示します。

"(UserAccountControl:1.2.840.113556.1.4.803:=6)”
Copy to Clipboard Toggle word wrap

ビット単位 OR マッチングルール (1.2.840.113556.1.4.804) は、アサーション文字列のビットのいずれかが属性値で表されるかどうかを確認します。これは部分文字列検索に類似しています。この例では、UserAccountControl の値には、6 のビットフィールドに設定されるビットのいずれかが必要です。つまり、属性値は 24、または 6 のいずれかになります。

"(UserAccountControl:1.2.840.113556.1.4.804:=6)"
Copy to Clipboard Toggle word wrap

ビット単位検索は、Samba ファイルサーバーの使用など、Windows と Linux の統合で使用できます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat