13.3 LinuxでのLDAPツールの使用

eDirectoryには、/opt/novell/eDirectory/binに格納されている、LDAPツールがあり、これらはLDAPディレクトリサーバを管理するのに役立ちます。

メモ:eDirectory 9.0以降、PEM証明書は特定のTLS変数経由で渡されます。これらの変数は/etc/opt/novell/eDirectory/conf/openldap/ldap.confファイルで定義するか、個別にエクスポートできます。詳細については、OpenLdapマニュアルのWebサイトおよびマニュアルページを参照してください。

ツール

説明

ice

エントリをファイルからLDAPディレクトリにインポートし、ファイルのディレクトリ内のエントリを変更し、エントリをファイルにエクスポートし、ファイルの属性とクラス定義を追加します。

ldapadd

LDAPディレクトリに新しいエントリを追加します。

ldapdelete

LDAPディレクトリサーバからエントリを削除します。ldapdeleteツールは、LDAPサーバとの接続を開始し、エントリのバインドと削除を行います。

ldapmodify

LDAPサーバとの接続を開始し、エントリのバインド、変更、追加を行います。

ldapmodrdn

LDAPディレクトリサーバ内のエントリの相対識別名(RDN)を変更します。LDAPサーバとの接続を開始し、エントリのRDNのバインドと変更を行います。

ldapsearch

LDAPディレクトリサーバでエントリを検索します。LDAPサーバとの接続を開始し、バインドを行い、指定されたフィルタを使用して検索を実行します。フィルタは、RFC 2254で定義されたLDAPフィルタの文字列表現に準拠している必要があります。

ndsindex

インデックスの作成、一覧表示、一時停止、再開、削除を行います。

詳細については、『LDAP Libraries for C Doc』の「LDAP Tools」を参照してください。

LDAPツールを安全に実行するには、「Linuxコンピュータ上のeDirectory操作をセキュリティで保護する」を参照し、安全にeDirectoryとLDAPを接続するためのコマンドラインによるLDAP操作にPEMファイルを指定します。

13.3.1 LDAPツール

LDAPユーティリティは、エントリの削除、変更、追加、スキーマの拡張、相対識別名の変更、エントリの新規コンテナへの異動、検索インデックスの作成、検索の実行に使用できます。

メモ:RFC 2256に準拠するため、eDirectoryのLDAPインタフェースでは、パスワードの長さが128文字以下の場合にのみ、バインドが許可されます。また、パスワードをLDAPから設定する場合、最大128文字のパスワードのみ設定できます。

ldapadd

ldapaddユーティリティを使用して、新しいエントリを追加します。構文は次のとおりです。

ldapadd [-c] [-C] [-l] [-M] [-P] [-r] [-n] [-v] [-F] [-l limit] [-M[M]] [-d  debuglevel] [-D  binddn] [[-W]| [-w passwd]] [-h  ldaphost] [-p ldapport] [-P version] [-Z[Z]] [-f file]

-fオプションが指定されていると、ldpaddは変更をファイルから読み出します。-fオプションが指定されていないと、ldpaddは変更をstdinから読み出します。

ヒント:LDAPユーティリティからの出力はstdoutに送られます。出力を見る前にユーティリティが終了する場合は、出力をファイルにリダイレクトしてください。例: ldapadd [options] > out.txt

オプション

説明

-a

新しいエントリを追加します。ldapmodifyのデフォルトは、既存エントリの変更です。ldapaddとして呼び出されると、このフラグは常にオンになります。

-r

デフォルトでは既存の値を置換します。

-c

連続操作モード。エラーが通知されても、ldapmodifyは変更動作を継続します。デフォルトでは、エラーが通知されると終了します。

-f file

エントリ情報を標準入力ではなくLDIFファイルから読み出します。レコードの最大長は4096行です。

-F

replica:で始まる入力行の内容に関わりなく、すべての変更を強制的に適用します。デフォルトでは、replica:行が使用中のLDAPサーバホストおよびポートと照らして比較され、replogレコードを実際に適用するべきかどうかが判断されます。

すべてのLDAPツールの共通オプション

すべてのLDAPツールに共通するオプションがいくつかあります。次の表は、これらのオプションを表示したものです。

オプション

説明

-C

後に続く参照(匿名バインド)を有効にします。

-d debuglevel

LDAPデバッグレベルをdebuglevelに設定します。このオプションを有効にするには、ldapmodifyをコンパイルするときにLDAP_DEBUGの定義が必要です。

-D binddn

binddnを使用してLDAPディレクトリにバインドします。binddnには、RFC 1779に定義されている文字列表現のDNを指定します。

-f file

ファイルから行を読み取り、1行ごとにLDAP検索を実行します。この場合、コマンドラインで指定したフィルタは、%sが最初に出現した個所がファイルの行に置換されるというパターンとして機能します。1つのハイフン(-)文字がファイルとして指定された場合には、標準入力から行が読み取られます。

-h ldaphost

LDAPサーバの実行場所となっている代替ホストを指定します。

-l limit

接続タイムアウト(秒)を指定します。

-M

Manage DSA ITコントロール(非クリティカル)を有効にします。

-MM

Manage DSA ITコントロール(クリティカル)を有効にします。

-n

完了した場合の結果を表示しますが、実際にはエントリを変更しません。-vと組み合わせて使用すると、デバッグ時に便利です。

-p ldapport

LDAPサーバがリスンする代替TCP™ポートを指定します。

-P version

LDAPのバージョン(2または3)を指定します。

-v

冗長モードが設定され、多くの診断メッセージが標準出力に書き込まれます。

-w passwd

簡易認証のパスワードとして、passwdを使用します。

-W

簡易認証のプロンプトです。コマンドラインにパスワードを指定するかわりに、このオプションが使用されます。

-Z

操作をバインドして実行する前に、TLSを開始します。TLSを開始する操作の途中でエラーが発生すると、エラーは無視され操作は続行されます。エラーが発生した場合に操作を中止するには、このオプションではなく-ZZオプションの使用をお勧めします。

このオプションでポートが指定されている場合、そのポートはクリアテキスト接続を受信する必要があります。

サーバの識別情報を確認するには、このオプションを-eオプションと組み合わせて使用し、サーバ証明書ファイルを指定する必要があります。TLSを開始すると、これによりサーバのルート認証局証明書が確認されます。-eオプションが指定されていない場合、サーバからのすべての証明書が許可されます。

-ZZ

操作をバインドして実行する前に、TLSを開始します。TLSを開始する操作の途中でエラーが発生すると、操作は中止されます。

このオプションでポートが指定されている場合、そのポートはクリアテキスト接続を受信する必要があります。

サーバの識別情報を確認するには、このオプションを-eオプションと組み合わせて使用し、サーバ証明書ファイルを指定する必要があります。TLSを開始すると、これによりサーバのルート認証局証明書が確認されます。-eオプションが指定されていない場合、サーバからのすべての証明書が許可されます。

/tmp/entrymodsファイルが存在し、その内容が次のようであると仮定します。

dn: cn=Modify Me, o=University of Michigan, c=US
changetype: modify
replace: mail
mail: modme@terminator.rs.itd.umich.edu
-
add: title
title: Manager
-
add: jpegPhoto
jpegPhoto: /tmp/modme.jpeg
-
delete: description
-

この場合、コマンドldapmodify -b -r -f /tmp/entrymodsは、Modify Meエントリのmail属性の中身をmodme@terminator.rs.itd.umich.eduの値に置き換え、Managerというタイトルを追加し、/tmp/modme.jpegファイルの内容をjpegPhotoとして追加し、description属性を完全に削除します。

このような変更は、以下のようにldapmodifyの古い入力規則を使用して実行することもできます。

cn=Modify Me, o=University of Michigan, c=US
mail=modme@terminator.rs.itd.umich.edu
+title=Manager
+jpegPhoto=/tmp/modme.jpeg
-description

コマンドは次のようになります。

ldapmodify -b -r -f /tmp/entrymods

/tmp/newentryファイルが存在し、その内容が次のようであると仮定します。

dn: cn=Barbara Jensen, o=University of Michigan, c=US
objectClass: person
cn: Barbara Jensen
cn: B Jensen
sn: Jensen
title: Manager
mail: bjensen@terminator.rs.itd.umich.edu
uid: bjensen

この場合、/tmp/newentryファイルの値を使用して、コマンドldapadd -f /tmp/entrymodsはB Jensenの新しいエントリを追加します。

/tmp/newentryファイルが存在し、その内容が次のようであると仮定します。

dn: cn=Barbara Jensen, o=University of Michigan, c=US
changetype: delete

この場合、コマンドldapmodify -f /tmp/entrymodsはB Jensenのエントリを削除します。

ldapdelete

ldapdeleteユーティリティは、指定したインデックスを削除します。LDAPサーバとの接続を開始し、バインドしてから削除します。構文は次のとおりです。

ldapdelete [-n] [-v] [-c] [-r] [-l] [-C] [-M] [-d debuglevel] [-f file] [-D binddn] [[-W]| [-w passwd]] [-h ldaphost] [-p ldapport] [-Z[Z]] [dn]...

dnパラメータは、削除するエントリの識別名のリストです。

これは、-fオプションと次の方法でやり取りします。

  • コマンドラインに-fオプションがなく、コマンドラインでDNが指定されている場合、ユーティリティにより指定したエントリが削除されます。

  • コマンドラインにdn-fの両方がある場合、ユーティリティは削除するDNをファイルから読み込んで、コマンドラインのDNは無視します。

  • コマンドラインにdn-fオプションがない場合、ユーティリティはstdinからdnを読み込みます。

ヒント:LDAPユーティリティからの出力はstdoutに送られます。出力を見る前にユーティリティが終了する場合は、出力をファイルにリダイレクトしてください。例: ldapdelete [options] > out.txt

オプション

説明

-c

連続操作モード。エラーが通知されても、ldapdeleteは削除動作を継続します。デフォルトでは、エラーが通知されると終了します。

-f file

ファイルから行を読み取り、1行ごとにLDAP検索を実行します。この場合、コマンドラインで指定したフィルタは、%sが最初に出現した個所がファイルの行に置換されるというパターンとして機能します。

-r

再起的に削除します。

メモ:共通オプションについての詳細は、すべてのLDAPツールの共通オプションを参照してください。

ldapdeleteのコマンド「cn=Delete Me, o=University of Michigan, c=US」では、「University of Michigan」組織のエントリの真下にあるcommonName「Delete Me」で指定されたエントリを削除します。この場合、削除が許可されるためにはbinddnおよびpasswdを指定する必要があります(-Dオプションおよび-wオプションを参照)。

ldapmodify

ldapmodifyユーティリティを使用すると、既存エントリの属性を変更したり、新規エントリを追加することができます。構文は次のとおりです。

ldapmodify [-a] [-c] [-C] [-M] [-P] [-r] [-n] [-v] [-F] [-l limit] [-M[M]] [-d debuglevel] [-D binddn] [[-W]|[-w passwd]] [-h ldaphost] [-p ldap-port] [-P version] [-Z[Z]] [-f file]

-fオプションを指定すると、ldapmodifyにより変更がファイルから読み出されます。-fオプションを指定しない場合、変更はstdinから読み出されます。

ヒント:LDAPユーティリティからの出力はstdoutに送られます。出力を見る前にユーティリティが終了する場合は、出力をファイルにリダイレクトしてください。例: ldapmodify [options] > out.txt

オプション

説明

-a

新しいエントリを追加します。ldapmodifyのデフォルトは、既存エントリの変更です。ldapaddとして呼び出されると、このフラグは常にオンになります。

-r

デフォルトでは既存の値を置換します。

-c

連続操作モード。エラーが通知されても、ldapmodifyは変更動作を継続します。デフォルトでは、エラーが通知されると終了します。

-f file

エントリ情報を標準入力ではなくLDIFファイルから読み出します。レコードの最大長は4096行です。

-F

replica:で始まる入力行の内容に関わりなく、すべての変更を強制的に適用します。デフォルトでは、replica:行が使用中のLDAPサーバホストおよびポートと照らして比較され、replogレコードを実際に適用するべきかどうかが判断されます。

メモ:共通オプションについての詳細は、「すべてのLDAPツールの共通オプション」を参照してください。

ldapmodrdn

ldapmodrdnを使用すると、エントリの相対識別名を変更できます。また、エントリを新しいコンテナに移動することもできます。構文は次のとおりです。

ldapmodrdn [-r] [-n] [-v] [-c] [-C] [-l] [-M] [-s newsuperior] [-d debuglevel] [-D binddn] [[-W]|[-w  passwd]]  [-h ldaphost] [-p ldapport] [-Z[Z]] [-f file] [dn newrdn]

メモ:LDAPユーティリティからの出力はstdoutに送られます。出力を見る前にユーティリティが終了する場合は、出力をファイルにリダイレクトしてください。例: ldapmodrdn [options] > out.txt

オプション

説明

-c

連続操作モード。エラーが通知されても、ldapmodifyは変更動作を継続します。デフォルトでは、エラーが通知されると終了します。

-f file

エントリ変更情報を標準入力やコマンドラインではなくファイルから読み出します。古いRDNと新規RDNの間に空白行がないことを確認します。空白行があると、-fオプションは失敗します。

-r

エントリから旧RDN値を削除します。デフォルトでは、以前の値が保持されます。

-s newsuperior

エントリの移動先のコンテナの識別名を指定します。

メモ:共通オプションについての詳細は、すべてのLDAPツールの共通オプションを参照してください。

/tmp/entrymodsファイルが存在すると仮定すると、次のような内容になります。

cn=Modify Me, o=University of Michigan, c=US
cn=The New Me

ldapsearch

ldapsearchユーティリティは、指定された属性とオブジェクトクラスのディレクトリを検索します。構文は次のとおりです。

ldapsearch [-n] [-u] [-v] [-t] [-A] [-T] [-C] [-V] [-M] [-P] [-L] [-d debuglevel] [-f file] [-D binddn] [[-W]| [-w bindpasswd]] [-h ldaphost] [-p ldapport] [-b searchbase] [-s scope] [-a deref] [-l time limit] [-z size limit] [-Z[Z]] filter [attrs....]

ldapsearchツールはLDAPサーバとの接続を開始し、バインドを行い、フィルタを使用して検索を実行します。フィルタは、RFC 2254で定義されたLDAPフィルタの文字列表現に準拠している必要があります。

ldapsearchが1つ以上のエントリを検出すると、attrsで指定された属性が取得され、エントリと値が標準出力に書き込まれます。属性がリストされない場合、すべての属性が戻ります。

ヒント:LDAPユーティリティからの出力はstdoutに送られます。出力を見る前にユーティリティが終了する場合は、出力をファイルにリダイレクトしてください。例: ldapsearch [options] filter [attribute list] > out.txt

オプション

説明

-a deref

別名の逆参照の処理方法を指定します。次の値を使用します。

  • [Never]: ベースオブジェクトを探すときと検索するときの両方で、別名の逆参照は行われません。

  • [Always]: ベースオブジェクトを探すときと検索するときの両方で、別名の逆参照を常に行います。

  • [Search]: ベースオブジェクトの従属を検索するときは別名の逆参照を行いますが、ベースオブジェクトを探すときには行いません。

  • [Find]: ベースオブジェクトを探すときは別名の逆参照を行いますが、ベースオブジェクトのサブオーディネートを従属するときには行いません。

-A

値ではなく、属性のみ取り込まれます。エントリに属性が存在するかどうかを確認して、具体的な属性値を知る必要がない場合に便利です。

-CC

後に続く参照(同じバインドDNとパスワードで認証されたバインド)を有効にします。

-b searchbase

searchbaseを検索の開始ポイントとして使用します。

-L

エントリをLDIF形式で出力します。

-LL

エントリをLDIF形式で出力します。コメントは出力されません。

-LLL

エントリをLDIF形式で出力します。コメントおよびバージョンは出力されません。

-s scope

検索のスコープを指定します。スコープとして、ベースオブジェクトを示す「base」、1レベルを示す「one」、またはサブツリー検索を示す「sub」を指定します。デフォルトは「sub」です。

-S attribute

戻されたエントリを属性に基づいてソートします。デフォルトでは、戻ったエントリのソートを行いません。属性が長さ0の文字列("")の場合、エントリはその識別名のコンポーネントによりソートされます。詳細については、ldap_sortを参照してください。通常は、ldapsearchはエントリを受け取った順に出力します。-Sオプションを指定するとデフォルトが無効になり、すべてのエントリが取得され、ソートされてから出力されます。

-t

検索されたバイナリ値が一時ファイルに書き込まれます。これは、jpegの写真やオーディオなどASCII以外の値を扱うときに便利です。

-tt

すべての値が一時ファイルに書き込まれます。

-T path

ファイルをパス(デフォルト: /tmp)で指定されたディレクトリに書き出します。

-u

識別名(DN)をユーザにわかりやすい形式で出力します。

-V

ファイルのURLプリフィックスです。

-V prefix

ファイルのURLプレフィックスを指定します(デフォルト: file://tmp/)。

-z sizelimit

検索が終了するまで最大sizelimitエントリだけ待機します。

メモ:共通オプションについての詳細は、「すべてのLDAPツールの共通オプション」を参照してください。

次のコマンドを実行します。

ldapsearch "cn=mark smith" cn telephoneNumber

commonName「mark smith」のエントリのサブツリー検索(デフォルトの検索ベースを使用)を実行します。commonNameの値およびtelephoneNumberの値が取得され、標準出力に表示されます。2つのエントリが検出された場合、次のように出力されます。

cn=Mark D Smith, ou="College of Literature, Science, and the Arts", ou=Students, ou=People, o=University of Michigan, c=US
cn=Mark Smith
cn=Mark David Smith
cn=Mark D Smith 1
cn=Mark D Smith
telephoneNumber=+1 313 930-9489
cn=Mark C Smith, ou=Information Technology Division, ou=Faculty and Staff, ou=People,o=University of Michigan, c=US
cn=Mark Smith
cn=Mark C Smith 1
cn=Mark C Smith
telephoneNumber=+1 313 764-2277

コマンド:

ldapsearch -u -t "uid=mcs" jpegPhoto audio

デフォルトの検索ベースを使用して、ユーザID「mcs」のエントリのサブツリー検索を実行します。エントリのDNは、DN自体を含む行の後にわかりやすい形式で出力されます。また、Jpegの写真の値およびオーディオの値が取得され、一時ファイルに書き込まれます。要求された属性がそれぞれ1つの値をもつエントリが1つ検出された場合、次のように出力されます。

cn=Mark C Smith, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US
Mark C Smith, Information Technology Division, Faculty and Staff, People, University of Michigan, US
audio=/tmp/ldapsearch-audio-a19924
jpegPhoto=/tmp/ldapsearch-jpegPhoto-a19924

次のコマンドは、organizationNameが「university」で始まるすべての組織のc=USレベルで、1レベルの検索を実行します。

ldapsearch -L -s one -b "c=US" "o=university*" o description

検索結果はLDIF形式で表示されます。organizationNameの値および記述属性の値が取得され、標準出力に書き込まれます。出力結果の例は次のようになります。

dn: o=University of Alaska Fairbanks, c=US
o: University of Alaska Fairbanks
description: Preparing Alaska for a brave new yesterday.
description: leaf node only
dn: o=University of Colorado at Boulder, c=US
o: University of Colorado at Boulder
description: No personnel information
description: Institution of education and research
dn: o=University of Colorado at Denver, c=US
o: University of Colorado at D

ndsindex

ndsindexユーティリティは、インデックスと複合インデックスを作成、一覧表示、一時停止、再開、または削除します。複合インデックスについては、ndsindexユーティリティで$の符号で区切られた複数の属性を指定できます。構文は次のとおりです。

メモ:

  • 複合インデックスの場合は複数の属性を指定できます。NetIQでは、パフォーマンス向上のために最大3つまでの属性を入力することをお勧めします。値タイプの複合インデックスの場合、最大5つの属性を追加できます。

  • ndsindexユーティリティの接続先は、インデックスを追加したのと同じサーバにするようお勧めします。

ndsindex list [-h <hostname>] [-p <port>] -D <bind DN> -W|[-w <password>] [-l limit] -s <eDirectory Server DN> [-Z[Z]] [<indexName1>, <indexName2>.....]
ndsindex add -a [-h <hostname>] [-p <port>] -D <bind DN> -W|[-w <password>] [-l limit] -s <eDirectory Server DN> [-Z[Z]] <indexDefinintion1> [<indexDefinintion2>.....]

メモ:

  • 先祖IDを持つインデックスはvalueインデックスタイプでのみ作成できます。PresenceおよびSubstringのインデックスタイプで先祖IDを使用することはできません。

  • 先祖IDを持つインデックスを作成すると、データベースサイズが大きくなります。

ndsindex delete [-h <hostname>] [-p <port>] -D <bind DN> -W|[-w <password>] [-l limit] -s <eDirectory Server DN> [-Z[Z]] <indexName1> [<indexName2>.....]
ndsindex resume [-h <hostname>] [-p <port>] -D <bind DN> -W|[-w <password>] [-l limit] -s <eDirectory Server DN> [-Z[Z]] <indexName1> [<indexName2>.....]
ndsindex suspend [-h <hostname>] [-p <port>] -D <bind DN> -W|[-w <password>] [-l limit] -s <eDirectory Server DN> [-Z[Z]] <indexName1> [<indexName2>.....]

オプション

説明

リスト

指定したインデックスを表示します。インデックスが指定されていない場合、ndsindexはサーバ上のすべての既存のインデックスを表示します。

add

新しいインデックスを作成します。

削除

指定したインデックスを削除します。

再開

指定したインデックスをオフラインの状態から再開します。

一時停止

指定したインデックスを一時停止してオフラインの状態にします。

-s eDirectory Server DN

eDirectoryサーバのDNを指定します。

メモ:共通オプションについての詳細は、「すべてのLDAPツールの共通オプション」を参照してください。

サーバMyHost上のインデックスを表示するには、次のコマンドを入力します。

ndsindex list -h MyHost -D cn=admin,o=mycompany -w password -s cn=MyHost,o=novell

電子メールの属性にMyIndexという名前の下位文字列インデックスを作成するには、次のコマンドを入力します。

ndsindex add -h myhost -D cn=admin, o=mycompany -w password -s cn=myhost, o=novell "MyIndex;email address;substring"

市町村の属性にMyIndexという名前の値インデックスを作成するには、次のコマンドを入力します。

ndsindex add -h myhost -D cn=admin,o=mycompany -w password -s cn=myhost,o=novell "MyIndex;city;value"

自宅電話番号の属性にMyIndexという名前の存在インデックスを作成するには、次のコマンドを入力します。

ndsindex add -h myhost -D cn=admin,o=mycompany -w password -s cn=myhost,o=novell "MyIndex;homephone;presence"

MyIndexという名前のインデックスを削除するには、次のコマンドを入力します。

ndsindex delete -h myhost -D cn=admin,o=mycompany -w password -s cn=myhost,o=novell MyIndex

MyIndexという名前のインデックスを一時停止するには、次のコマンドを入力します。

ndsindex suspend -h myhost -D cn=admin,o=mycompany -w password -s cn=myhost,o=novell MyIndex

MyIndexという名前のインデックスを再開するには、次のコマンドを入力します。

ndsindex resume -h myhost -D cn=admin,o=mycompany -w password -s cn=myhost,o=novell MyIndex

複合インデックスの例

email addresssurnameの属性にMyIndexという名前の値インデックスを作成するには、次のコマンドを入力します。

ndsindex add –h myhost –D cn=admin, o=mycompany –w password –s cn=myhost, o=netiq 'MyIndex;email address$surname;value'

メモ:タイプがPresenceおよびSubstringの複合インデックスを作成することはできません。