Oracle Fusion Middleware Oracle Internet Directory管理者ガイド 11g リリース1(11.1.1) B55919-02 |
|
前 |
次 |
この章では、別名エントリを追加、検索および変更する方法の例について説明し、メッセージのリストを示します。この項の内容は、次のとおりです。
属性別名の詳細は、「属性別名の理解」を参照してください。
エントリの中には、長く複雑な識別名を持つものがあります。Oracle Internet Directoryでは別名オブジェクトを使用して長い名前の管理を容易にします。別名を使用してオブジェクトを検索(参照)すると、別名が間接参照され、その別名が指し示すオブジェクトが返されます。たとえば、別名Server1
は、完全修飾された識別名dc=server1,dc=us,dc=myCompany,dc=com
を指し示すように間接参照できます。この機能によって、厳密には階層構造でない構造も開発できます。
別名エントリは、オブジェクト・クラスalias
を使用して、ディレクトリ内のオブジェクト・エントリと区別します。このオブジェクト・クラスの定義は次のとおりです。
(2.5.6.1 NAME 'alias' SUP top STRUCTURAL MUST aliasedObjectName)
別名エントリにはaliasedObjectName
属性も含まれており、この属性には、別名が指し示すオブジェクトの識別名が含まれています。この属性の定義は次のとおりです。
(2.4.5.1 NAME 'aliasedObjectName" EQUALITY distinguishedNmameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE)
図17-1およびその後に続く説明では、別名エントリの間接参照の例を示します。
図17-1で、ou=uk sales,ou=global sales,o=myCompany,c=us
は、ou=sales,o=myCompany,c=uk
エントリを指し示す別名エントリです。
ou=uk sales,ou=global sales,o=oracle,c=us
を参照すると、その参照は、ディレクトリ・サーバーによって実際のエントリou=sales,o=oracle,c=uk
に自動的に変更されます。
別名エントリを追加するには、LDIFの通常のエントリ、および実際のエントリを指し示す別名エントリを作成します。この例の手順を実行すると、図17-2に示すツリーが生成されます。
次のエントリを持つサンプルLDIFファイルMy_file.ldifを作成します。
dn: c=us c: us objectclass: country dn: o=MyCompany, c=us o: MyCompany objectclass:organization dn: ou=Area1, c=us objectclass: alias objectclass: extensibleobject ou: Area1 aliasedObjectName: o=MyCompany, c=us dn: cn=John Doe, o=MyCompany, c=us cn: John Doe sn: Doe objectclass: person dn: cn=President, o=MyCompany, c=us objectclass: alias objectclass: extensibleobject cn: President aliasedobjectname: cn=John Doe, o=MyCompany, c=us
次のコマンドを使用して、これらのエントリをディレクトリに追加します。
ldapadd -p port -h host -D cn=orcladmin -q -f My_file.ldif
注意: 親が別名エントリである別名エントリを追加しようとすると、ディレクトリ・サーバーはエラーを返します。 |
図17-2の文字Aは、別名エントリを表します。
ou=Area1
は、o=MyCompany
を指し示す別名です。
cn=President
は、cn=John Doe
を指し示す別名です。
指定する検索ごとに設定できるフラグがあります。表17-1に示すように、検索は指定したフラグに基づいて実行されます。
表17-1 別名エントリによるディレクトリの検索のフラグ
フラグ | LDAPサーバーの検索の動作 |
---|---|
|
別名を間接参照しません。 |
|
検索でベース・オブジェクトを間接参照しますが、そのベースの下にある別名エントリは間接参照しません。 |
|
検索でベース・オブジェクトの下位にある別名は間接参照しますが、検索のベース・オブジェクトのロケーティングでは別名を間接参照しません。 |
|
検索で別名を間接参照し、検索のベース・オブジェクトのロケーティングでも別名を間接参照します。 |
デフォルトでは、ldapsearch
の間接参照フラグは-a never
で、ディレクトリ・サーバーは別名エントリに対する間接参照を行いません。
ベース検索は、指定した別名エントリの最上位レベルを検索します。
間接参照フラグ-a findを使用したベース検索
次の例は、間接参照フラグを-a find
に設定し、フィルタとして"objectclass=*"
を使用してou=Area1,c=us
のベース検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a find -s base "objectclass=*"
ディレクトリ・サーバーは、ベース検索時に、検索リクエストに指定されたベースを検索し、その位置をユーザーに戻します。ただし、この例のようにベースが別名エントリで、検索リクエストに-a find
が指定されている場合、ディレクトリ・サーバーは、別名エントリを自動的に間接参照し、その別名エントリが指し示すエントリを返します。この例では、検索でou=Area1,c=us
(別名エントリ)が間接参照され、o=MyCompany,c=us
が返されます。
間接参照フラグ-a searchを使用したベース検索
次の例は、間接参照フラグを-a search
に設定し、フィルタとして"objectclass=*"
を使用してou=Area1,c=us
のベース検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a search -s base "objectclass=*"
ディレクトリ・サーバーは、ベース検索時に、間接参照せずに検索リクエストに指定されたベースを検索し、その位置をユーザーに戻します。これにより、ou=Area1,c=us
が返されます。
間接参照フラグ-a alwaysを使用したベース検索
次の例は、間接参照フラグを-a always
に設定し、フィルタとして"objectclass=*"
を使用してou=Area1,c=us
のベース検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a always -s base "objectclass=*"
ディレクトリ・サーバーは、ベース検索時に、検索リクエストで指定されたベースを検索します。ベースが別名エントリである場合、ディレクトリ・サーバーは別名エントリを自動的に間接参照し、その別名エントリが指し示すエントリを返します。この例では、検索でou=Area1,c=us
(別名エントリ)が間接参照され、o=MyCompany,c=us
が返されます。
1レベル検索では、指定したベース・レベルの子のみを検索します。
間接参照フラグ-a findを使用した1レベル検索
次の例は、間接参照フラグを-a find
に設定し、フィルタに"objectclass=*"
を使用した"ou=Area1,c=us"
の1レベル検索を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a find -s one "objectclass=*"
ディレクトリ・サーバーは、フィルタ基準と一致するベースの下にある1レベル・エントリを返します。この例では、検索リクエストに-a find
が指定されているため、ディレクトリ・サーバーは、ベースの検索(最初の手順)中に自動的に間接参照しますが、ベース下の1レベルの別名エントリは間接参照しません。したがって、この検索ではou=Area1,c=us
(別名エントリ)が間接参照され、o=MyCompany,c=us
下の1レベル・エントリが検索されます。1レベル・エントリの1つは、間接参照されずにそのまま返されるcn=President,o=MyCompany,c=us
です。
したがって、この検索では、cn=President,o=MyCompany,c=us
およびcn=John Doe,o=MyCompany,c=us
が返されます。
間接参照フラグ-a searchを使用した1レベル検索
次の例は、間接参照フラグを-a search
に設定し、フィルタとして"objectclass=*"
を使用して"ou=Area1,c=us"
の1レベル検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a search -s one "objectclass=*"
ディレクトリ・サーバーは、検索リクエストで指定されたベースを検索します。ベース・エントリが別名エントリの場合は、何も返されません。(別名エントリは子を持つことができません。)それ以外の場合は、ベース・エントリの直下の子が間接参照後に返されます。この例では、ベース・エントリが別名エントリの"ou=Area1,c=us"
であるため、検索では何も返されません
間接参照フラグ-a alwaysを使用した1レベル検索
次の例は、間接参照フラグを-a always
に設定し、フィルタとして"objectclass=*"
を使用して"ou=Area1,c=us"
の1レベル検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a always -s one "objectclass=*"
この例では、検索リクエストに-a always
が指定されているため、ディレクトリ・サーバーは、ベースの検索(最初の手順)中に自動的に間接参照し、ベースの1レベル下の別名エントリを間接参照します。したがって、この検索ではou=Area1,c=us
(別名エントリ)が間接参照され、o=MyCompany,c=us
下の1レベル・エントリが検索されます。1レベル・エントリの1つは、cn=President,o=MyCompany,c=us
です。これは間接参照され、cn=John Doe,o=MyCompany,c=us
として返されます。他の1レベル・エントリにはcn=John Doe,o=MyCompany,c=us
があり、これはすでに返されています。
したがって、この検索ではcn=John Doe,o=MyCompany,c=us
が返されます。
サブツリー検索は、ベース、子および孫を検索します。
間接参照フラグ-a findを使用したサブツリー検索
次の例は、間接参照フラグを-a find
に設定し、フィルタとして"objectclass=*"
を使用して"ou=Area1,c=us"
のサブツリーの検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a find -s sub "objectclass=*"
ディレクトリ・サーバーは、フィルタ基準と一致するベースの下にあるすべてのエントリを返します。この例では、検索リクエストに-a find
が指定されているため、ディレクトリ・サーバーは、ベースの検索(最初の手順)中に自動的に間接参照しますが、ベース下の別名エントリは間接参照しません。したがって、検索では、ou=Area1,c=us
(別名エントリ)が間接参照され、o=MyCompany,c=us
下のエントリが検索されます。エントリの1つは、間接参照されずにそのまま返されるcn=President,o=MyCompany,c=us
です。
したがって、この検索では次の情報が返されます。
o=MyCompany,c=us
cn=John doe,o=MyCompany,c=us
cn=President,o=MyCompany,c=us
間接参照フラグ-a searchを使用したサブツリー検索
次の例は、間接参照フラグを-a search
に設定し、フィルタとして"objectclass=*"
を使用して"ou=Area1,c=us"
のサブツリーの検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a search -s sub "objectclass=*"
ディレクトリは、検索リクエストで指定されたベースを検索します。ベースが別名エントリの場合、間接参照せずにそのベース・エントリが返されます。(別名エントリは子を持つことができません。)それ以外の場合は、そのベースの下にあるすべてのエントリが返されます。別名エントリが見つかる場合は間接参照され、その下にあるすべてのエントリも返されます。
この例では、ベース・エントリが別名エントリのou=Area1,c=us
であるため、ou=Area1,c=us
が返されます。
間接参照フラグ-a alwaysを使用したサブツリー検索
次の例は、間接参照フラグを-a always
に設定し、フィルタとして"objectclass=*"
を使用して"ou=Area1,c=us"
のサブツリーの検索を行う場合を示しています。
ldapsearch -p port -h host -b "ou=Area1,c=us" -a always -s sub "objectclass=*"
ディレクトリ・サーバーは、ベース・エントリを間接参照して返します。また、間接参照されたベースの下にあるすべてのエントリも返されます。別名エントリが見つかる場合は間接参照され、その下にあるすべてのエントリも返されます。
この例では、ベース・エントリはou=Area1,c=us
であり、o=MyCompany,c=us
に間接参照されて返されます。o=MyCompany,c=us
の下には2つのエントリがあります。1つはcn=President,o=MyCompany,c=us
で、このエントリは返され、さらにcn=John Doe,o=MyCompany,c=us
に間接参照されて返されます。o=MyCompany,c=us
の下のもう1つのエントリはすでに返されています。したがって、結果はo=MyCompany,c=us
およびcn=John Doe,o=MyCompany,c=us
となります。
この例は、別名エントリを変更する方法を示しています。ここでは、次のエントリを持つサンプルLDIFファイルMy_file.ldif
を作成します。
dn: cn=President, o=MyCompany, c=us changetype : modify replace: aliasedobjectname aliasedobjectname: cn=XYZ, o=MyCompany, c=us
次のコマンドを使用して、別名エントリを変更します。
ldapmodify -D "cn=orcladmin" -q -p port -h host -f My_file.ldif
表17-2は、別名エントリの間接参照に関するメッセージと、各メッセージの意味を示しています。
メッセージ | 意味 |
---|---|
別名に問題があります。 |
次のいずれかの問題が発生しました。
|
別名の参照解除に問題があります。 |
アクセス制御上の問題であるため、別名を間接参照できません。 |
該当するオブジェクトがありません。 |
検索リクエストに指定されたベース識別名をサーバーで検索できません。 |
DN構文に誤りがあります。 |
|
成功 |
クライアント操作が正常に完了しました。 間接参照ターゲットが見つかり、検索リクエストに指定したフィルタと一致しない場合、サーバーは一致エントリなしで成功メッセージを返します。 |
不十分なアクセス権限 |
ユーザーが間接参照されたエントリへのアクセス権限を持っていません。 |