LDAPシステムは、検索、読み取り、および検索操作用に最適化されています。LDAPディレクトリを使用している場合、操作の大部分はおそらく検索または検索です。DITの情報を照会および表示するために使用されます。サーバーの命名とサーバーへの接続を担当する構文の一部については、次のように説明しました。-Wこれにより、サーバー上で実行されているLDAPインスタンスに接続して認証するために必要な最低限のものが得られますが、実際には何も検索していません。詳細については、検索ベースと検索範囲の概念について説明する必要があります。検索ベースとスコープLDAPでは、検索を開始する場所は*検索ベース*と呼ばれます。これは、DIT内のエントリであり、そこから操作が開始され、アンカーとして機能します。+`フラグを渡して、検索ベースを指定します。DITのルートから開始するには、次のように検索ベースとして使用できます。+`エントリの下にすべてのエントリを作成する必要があります。別のエントリを使用すると、ツリーの別のセクションが取得されます。管理エントリから開始する場合、管理エントリ自体のみを取得できます。1これらの例でベースを指定しましたが、検索スコープを指定することで、ツールが結果を検索する方法をさらに形作ることができます。+」オプションによって設定され、次のいずれかです。*:他に指定がない場合のデフォルトの検索範囲。これは、ベースエントリ自体とすべての子孫をツリー全体で検索します。これが最大のスコープです。*:検索ベース自体のみを検索します。検索ベースで指定され、検索よりもルックアップとしてより適切に定義されたエントリを返すために使用されます。*:検索ベース(検索ベースの下の単一の階層レベル)の直接の子孫/子のみを検索します。これには、検索ベース自体は含まれず、これらのエントリの下にサブツリーは含まれません。+`スコープと同じように機能しますが、検索ベース自体を結果に含めません(下のすべてのエントリを検索しますが、検索ベースは含めません)。`フラグを使用して、ツールで調べたいDITの領域の形成を開始できます。+`スコープを使用して、ベースエントリの第1レベルの子をすべて表示できます。これについては、この記事の後半で詳しく説明します。ツリーにさらにいくつかのエントリを追加した場合、これは次のような結果を返した可能性があります。+`スコープを使用できます。dn検索ベースと検索範囲を微調整することにより、関心のあるDITの部分のみを操作できます。これにより、ツリーのセクションを検索するだけでクエリのパフォーマンスが向上し、関心のあるエントリのみが返されます。+`が生成する余分な出力の一部を削除する方法について話しましょう。+」フラグで制御されます。」フラグを使用できます。+」フラグが多いほど、多くの情報が抑制されます。学習またはトラブルシューティングの際に出力を抑制することは控えることをお勧めしますが、通常の操作中は、3つのレベルをすべて使用すると、おそらくより良いエクスペリエンスにつながります。」フラグを追加で使用できます。これにより、SASLクワイエットモードが有効になり、SASL関連の出力が削除されます。+`メソッドを使用する場合は問題ありませんが、資格情報を要求するメカニズムを使用している場合は注意してください(認証失敗につながる)。検索範囲全体を単に出力するのではなく、実際に検索を実行するには、検索フィルターを指定する必要があります。これらは行末に配置でき、属性タイプ、比較演算子、および値の形式を取ります。多くの場合、シェルによる解釈を防ぐために引用符で囲まれています。括弧は、あるフィルターと別のフィルターの境界を示すために使用されます。これらは、単純な単一属性検索ではオプションですが、より複雑な複合フィルターでは必須です。ここでそれらを使用して、検索フィルターの場所をより適切に示します。DIT内にエントリがあるかどうかを確認できます。これにより、検索スコープ内の各エントリで、その値に設定された属性が検索されます。"(uid=jsmith)"上記の例では、属性値の完全一致をテストする等値演算子を使用しました。他にもさまざまな演算子があり、期待どおりに機能します。値セットを気にせずに属性を「含む」エントリを検索するには、「存在」演算子を使用できます。これは、比較の右側にワイルドカードが付いた単純な等号です。次のように入力して、パスワードを含むエントリを検索できます。"(userPassword=*)"便利な検索フィルターは次のとおりです。+`演算子を使用して、正確な属性値と一致させます。+`を使用して、値に関係なく属性の存在を確認します。+`演算子を使用して、指定された値以上の値をチェックします。+`演算子を使用して、指定された値以下の値をチェックします。探している値の一部を指定するために使用されます。+`演算子を使用して、右側にあるものとほぼ一致させます。これは、LDAPサーバーで常にサポートされているわけではありません(この場合、代わりに等価検索または部分文字列検索が実行されます)。「!」否定記号を前に付けた括弧の追加セットで検索フィルターをラップすることにより、ほとんどの検索を否定することもできます。すべての組織単位エントリを検索するには、次のフィルターを使用できます。"(ou=*)"組織単位のエントリではない_すべてのエントリを検索するには、次のフィルタを使用できます。"(!(ou=*)"否定修飾子は、後続の検索フィルターの意味を逆にします。フィルター仕様に従って、属性出力フィルターを追加することもできます。これは、一致した各エントリから表示する属性のリストです。デフォルトでは、資格情報に読み取りアクセス権があるすべての属性が、一致した各エントリに表示されます。属性出力フィルターを設定すると、表示する出力のタイプを正確に指定できます。ユーザーIDを持つすべてのエントリを検索できますが、次のように入力することで、各エントリに関連付けられた「共通名」のみを表示できます。cnこれにより、次のようなリストが生成されます。Brownエントリの説明も表示する場合は、表示する属性のリストにそれを追加するだけです。description代わりに次のようなものが表示されます。design.属性フィルターが指定されていない場合、すべての属性が返されます。これは、「*」文字を使用して明示できます。操作属性(各エントリのバックグラウンドで管理されている特別なメタデータ属性)を返すには、特別な「+」記号を使用できます。rootDNの操作属性を表示するには、次のように入力できます。"+"結果は次のようになります。2つ以上の個別の検索フィルターを組み合わせて、より正確な結果を取得します。検索フィルターは、最初の項目として関係演算子を使用して別の括弧のセットでラップすることにより結合されます。これは、説明するよりも簡単に説明できます。関係演算子は、論理ANDとして機能する「&」文字と、論理ORを表す「|」文字です。これらは、外側の括弧のセット内で関係を定義するフィルターに先行します。したがって、ドメインに説明とメールアドレスの両方があるエントリを検索するには、次のようなフィルターを作成できます。"(&(description=*)(mail=*@example.com))"エントリが返されるには、これらの属性の両方が定義されている必要があります。サブフィルターのいずれかが真の場合、ORシンボルは結果を返します。連絡先情報があるエントリを出力する場合は、次のようなフィルターを試してください。"(|(telephoneNumber=*)(mail=*)(street=*))"ここでは、演算子が3つ以上のサブフィルターに適用できることがわかります。必要に応じてこれらの論理構造をネストして、非常に複雑なパターンを作成することもできます。+」コマンドのみに焦点を当ててきました。これは、ユーザーの読み取り専用要件の大部分を満たしますが、DITのオブジェクトを変更する場合は別のツールが必要です。+`コマンドは、LDIFファイルを使用してDITを操作します。LDIFファイルの詳細と、これらを使用してエントリを変更または追加する方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-use-ldif-files-to-makeを参照してください。-openldap-systemへの変更[このガイド]。+`構文にほぼ一致しています。LDIFファイルからの変更の適用これらのボイラープレートオプションを提供した後、最も一般的なアクションは、LDIFファイルを読み込んでDITに適用することです。+`オプションを使用しない場合は、コマンドラインでLDIF形式を使用して変更を入力する必要があります)。上記にリンクされているガイドで説明されている構文を使用して、LDIFファイルを自分で作成する必要があります。-fこれにより、LDIFファイルが読み取られ、指定された変更が適用されます。`を指定する必要があります。+`コマンドは、DIT操作コマンドの最も一般的な形式です。」コマンドを使用できますこの動作をエイリアスします。+`を_includes_するLDIFファイルは次のようになります。+」コマンドを使用する必要があります。+)にも同様のコマンドを使用できます。+`を明示的に指定する必要がなくなります。これらのそれぞれについて、どのフォーマットを使用するかはあなた次第です(LDIFファイルまたはコマンドラインで変更を指定するかどうか)。+」フラグを使用できます。これにより、実際のDITを変更せずに実行される変更がわかります。-f通常、LDIFファイルの処理中にエラーが発生した場合、操作はすぐに停止します。多くの場合、ファイルの後半にある変更要求は、以前の変更が正しく適用されたという前提でDITを変更するため、これは一般的に最も安全なことです。`フラグを使用できます。+`フラグを使用することもできます。-fこのように、操作後に評価するログ(問題のあるエントリを示すコメントを含む)があります。その他のさまざまなLDAPコマンド既に説明したコマンドは、日常的に使用する最も一般的なLDAP操作を実行します。知っておくと便利ですが、さらにいくつかのコマンドがあります。+`コマンドを使用できます。これは、問題のアカウントまたは管理アカウントを使用して認証し、新しいパスワード(およびオプションで古いパスワード)を提供することで機能します。`フラグ(次の項目として指定されたファイルから古いパスワードが読み取られます)。これは一部のLDAP実装ではオプションですが、他の実装では必須であるため、含めることをお勧めします。`フラグ(新しいパスワードは、次の項目として指定されたファイルから読み取られます)。したがって、典型的な変更は次のようになります。-sエントリが指定されていない場合、バインドに使用されているエントリが変更されます。管理エントリにバインドしている場合は、コマンドの後に入力することにより、書き込みアクセス権がある他のエントリを変更できます。[このガイド]をご覧ください。+`コマンドは、認証後にLDAPサーバーがどのように見えるかを教えてくれます。匿名認証または単純認証を使用している場合、結果はおそらくあまり有用ではありません(それぞれ「匿名」またはバインドしている正確なエントリ)。SASL認証の場合、これにより、認証メカニズムがどのように見えるかについての洞察が得られます。+`で認証DNを確認できます。-Qldapwhoamiの出力dn:gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authこれはDITの実際のエントリではなく、LDAPが理解できる形式にSASL認証が変換される方法です。認証DNを参照してマッピングとアクセス制限を作成することもできるため、この情報を取得する方法を知っておくと便利です。URLを構築できます。URLは、標準化されたURLを介してLDAPサーバーからリソースを要求できる方法です。これらは認証されていない接続であり、読み取り専用です。URLをサポートしなくなったため、使用しているソフトウェアによってはその使用が制限される場合があります。URLは、次の構文を使用してフォーマットされます。ldap://:/????コンポーネントは次のとおりです。+:検索を開始するベースDN。+:興味のある一致するエンティティの属性。これらはコンマで区切る必要があります。base、sub、one、またはchildrenのいずれか。+:返されるエントリを選択するために使用される検索フィルター。extension:+`指定するLDAP拡張。ここでは取り上げません。URL内の各アイテムは疑問符で区切られています。使用していないアイテムを提供する必要はありませんが、アイテムタイプは文字列内の位置によって識別されるため、そのアイテムの「スロット」を空のままにしておく必要があります。情報を追加したらすぐにURLを停止できます(最後に疑問符を付けなくても、未使用の「スロット」を表すことができます)。URLは次のようになります。+`フラグを使用してURLを引用符で囲みます。URLのさまざまなコンポーネントをミラーリングします。+`スキームはデフォルトです。+:LDAPサーバーのポート。デフォルト値はスキームによって異なります。+:指定するLDAP拡張これらを使用して、次のように入力できます。"(ou=*)"このコマンドは、構築されたURLを返します。これは次のようになります。ldapurlの出力ldap://localhost:389/dc=example,dc=com?dn,ou?sub?(ou=*)これを使用して、この形式を使用して通信できるLDAPクライアントで使用できるURLを作成できます。+`ツールを使用して、エントリの属性を値と比較できます。これは、単純なアサーションチェックを実行してデータを検証するために使用されます。このプロセスには、通常、クエリ対象のデータに応じてバインドを行い、エントリDNと確認するアサーションを提供します。アサーションは、1つまたは2つのコロンで区切られた属性と値を指定することにより与えられます。単純な文字列値の場合、単一のコロンを使用する必要があります。二重コロンは、base64エンコード値が指定されたことを示します。したがって、Johnは次のような「パワーユーザー」グループのメンバーであると断言できます。FALSE`を返します。これは、要求されたアクションを実行する前にグループメンバーシップを確認することにより、承認システムの基礎として使用できます。結論これで、LDAPユーティリティのいくつかを使用して、LDAPサーバーに接続、管理、および使用する方法を十分に理解できたはずです。他のクライアントは、日々の管理のためにLDAPシステムにより使いやすいインターフェースを提供する場合がありますが、これらのツールは、ロープを学習し、DITのデータおよび構造への適切な低レベルアクセスを提供するのに役立ちます。