ldapsearchを使用してLDAPを検索する方法(例付き)

中規模から大企業で働いている場合は、おそらくLDAPと日常的に

これがWindowsドメインコントローラ上であろうと、Linux OpenLDAPサーバ上であろうと、LDAPプロトコルは認証を一元化するのに非常に便利です。

ただし、LDAPディレクトリが大きくなると、管理する必要があるすべてのエントリが失われる可能性があります。

幸いなことに、LDAPディレクトリツリー内のエントリを検索するのに役立つコマンドがあります。ldapsearch。このチュートリアルでは、ldapsearchを使用してLDAPを簡単に検索する方法を説明します。

高度なLDAP検索を実行するために、コマンドによって提供されるオプションも確認します。

目次

ldapsearchを使用してLDAPを検索

LDAPを検索する最も簡単な方法は、単純な認証のためにldapsearchを”-x”オプションで使用し、検索ベースを”-b”で指定することです。LDAPサーバーで直接検索を実行していない場合は、”-H”オプションを使用してホストを指定する必要があります。

LDAPサーバーで直接検索を実行していない場合は、”-H”例として、ネットワークの192.168.178.29ホストにOpenLDAPサーバーがインストールされて実行されているとします。

サーバーが匿名認証を受け入れている場合は、管理者アカウントにバインドせずにLDAP検索クエリを実行できます。p>

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
ldap検索基本クエリ

ご覧のように、フィルタを指定しない場合、LDAPクライディレクトリツリーのすべてのオブジェクトクラスを検索します。結果として、あなたは多くの情報を提示されます。

結果として、あなたは多くの情報を提示されます。

提示される情報を制限したい場合は、次の章でLDAPフィルタについて説明します。場合によっては、追加の情報を表示するために、管理者アカウントとしてLDAPクエリを実行することができます。

Search LDAP with admin account

これを実現するには、LDAPツリーの管理者アカウントを使用してバインド要求を行う必要があります。adminアカウントを使用してLDAPを検索するには、パスワードの入力を求めるために、バインドDNの”-D”オプションと”-W”を指定して”ldapsearch”クエリを実行する必要があり例として、管理者アカウントに”cn=admin,dc=devconnected,dc=com”という識別名があるとします。このアカウントとしてLDAP検索を実行するには、次のクエリを実行する必要があります

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W 
管理者アカウ管理者アカウントとして検索すると、ユーザーの暗号化されたパスワードにさらされる可能性があるため、クエリを非公開で実行するようにしてくださ

フィルタを使用してLDAP検索を実行する

フィルタを使用せずに単純なLDAP検索クエリを実行すると、時間とリソースの無駄になる可能性があ

ほとんどの場合、LDAPディレクトリツリー内の特定のオブジェクトを検索するためにLDAP検索クエリを実行したいと考えています。

フィルタを使用してLDAPエントリを検索するには、ldapsearchコマンドの最後にフィルタを追加することができます。

オプションで、オブジェクトから返される属性(ユーザー名、ユーザーパスワードなど)を指定できます。)

$ ldapsearch <previous_options> "(object_type)=(object_value)" <optional_attributes>

ディレクトリツリー内のすべてのオブジェクトの検索

LDAPツリーで使用可能なすべてのオブジェクトを返すために、”objectclass”フィル

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"

このクエリを実行すると、ツリーで使用可能なすべてのオブジェクトとすべての属性が表示されます。

ldapsearchを使用したユーザーアカウントの検索

たとえば、LDAPディレクトリツリー上のすべてのユーザーアカウントを検索するとします。

デフォルトでは、ユーザーアカウントには”account”構造オブジェクトクラスがある可能性が高く、すべてのユーザーアカウントを絞り込むために使用できます。

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account"

デフォルトでは、クエリは指定されたオブジェクトクラスで使用可能なすべての属性を返します。

ldapsearchを使用してldap内のすべてのユーザーを検索

前のセクションで指定したように、検索を絞り込む場合たとえば、ユーザー CN、UID、およびホームディレクトリのみに関心がある場合は、次のLDAP検索を実行します。

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
ldapsearchでldap属性を指定します。

“文字を記述する必要があります。&”たとえば、すべてのエントリに”account”と等しい”objectclass”と”john”と等しい”uid”があることを確認したいとしましょう。

$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"

or operator using ldapsearch

複数のフィルタを”or”演算子で区切るには、すべての条件を角かっこで囲み、クエリの先頭に”/”文字を

$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"

たとえば、タイプ”account”またはタイプ”organizationalRole”のオブジェクトクラスを持つすべてのエントリを検索する場合は、次のクエリを実行します。

$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"

ldapsearchを使用した否定フィルタ

場合によっては、LDAPディレクトリツリー内のエントリの一部を否定的に一致させたい場合があります。

負の一致フィルタを使用するには、条件を”!”で囲む必要があります。

負の一致フィルタを使用するには、条件を”!”で囲む必要があります。”文字と括弧を囲むことによって分離された条件を持っています。

$ ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"

たとえば、値”john”の”cn”属性を持たないすべてのエントリを一致させたい場合は、次のクエリを記述します。

$ ldapsearch <previous_options> "(!(cn=john))"

ldapsearchを使用したLDAPサーバー設定の検索

ldapsearchコマンドの高度な使用法の一つは、LDAPツリーの設定を取得することです。OpenLDAPに精通している場合は、LDAP階層の最上位にあるグローバル設定オブジェクトがあることがわかります。場合によっては、アクセス制御を変更したり、ルート管理者パスワードを変更したりするために、LDAP設定の属性を確認する必要がある場合があります。LDAP設定を検索するには、”ldapsearch”コマンドを使用し、LDAPツリーの検索ベースとして”cn=config”を指定します。 この検索を実行するには、”-Y”オプションを使用し、認証メカニズムとして”EXTERNAL”を指定する必要があります。注:このコマンドは、LDAPクライアントのいずれかからではなく、サーバー上で直接実行する必要があります。

ldap構成オブジェクトの検索

デフォルトでは、このコマンドはバックエンド、スキーマ、モジュー検索をデータベース構成に制限する場合は、ldapsearchで”olcDatabaseConfig”オブジェクトクラスを指定できます。

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"

LDAP検索でワイルドカードを使用する

LDAPエントリのリストを検索するもう一つの強力な方法は、アスタリスク(“*”)などのワイルドカード文字ワイルドカード文字は、正規表現で使用するアスタリスクと同じ機能を持ち、指定された部分文字列で開始または終了する属性と一致するために使用されます。例として、文字”j”で始まる属性”uid”を持つすべてのエントリを検索するとします。

$ ldapsearch <previous_options> "uid=jo*"
ldap検索クエリでワイルドカードを使用する

Ldapsearch Advanced Options

このチュートリアルでは、基本的なldapsearchオプションが、あなたに興味があるかもしれない他の多くがあります。

LDAP Extensible Match Filters

Extensible LDAP match filtersは、実行する比較のタイプを指定することによって、既存の演算子(等価演算子など)を過給するために使用されます。

デフォルト演算子の過給

LDAP演算子を過給するには、”:=”構文を使用する必要があります。

$ ldapsearch <previous_options> "<object_type>:=<object_value>"

たとえば、すべてのエントリが”john”に等しい”cn”を持っていることを検索する場合は、次のコマンドを実行します

$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"

お気付きのように、”john”または”JOHN”で検索を実行すると、同じ正確な結果が返されます。結果として、結果を”john”完全一致に制約して、検索の大文字と小文字を区別することができます。ldapsearchを使用すると、”:”文字で区切られた追加のフィルタを追加できます。

$ ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"

たとえば、大文字と小文字を区別する検索を行うには、次のコマンドを実行します

$ ldapsearch <previous_options> "cn:caseExactMatch:=john"

LDAP一致フィルタに慣れていない場合は、使用可能なすべての演算子のリストを次に示します。

結論

このチュートリアルでは、ldapsearchコマンドを使用してLDAPディレクトリツリーを検索する方法を学びました。

基本的なエントリと属性の検索の基本と、演算子(and、or、および負の演算子)を使用した複雑な一致フィルターの構築について説明しました。また、拡張可能なmatchオプションを使用し、使用するカスタム演算子を指定することで、既存の演算子を過給することができることも学びました。あなたは高度なLinuxシステム管理に興味がある場合は、我々はウェブサイト上でそれに専用の完全なセクションを持っているので、それをチェックアウp>

ldap

Related Posts

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です