エンタープライズのルートコンテキストは、エンタープライズ名前空間のルートレベルにあるオブジェクトをネーミングするためのコンテキストです。エンタープライズのルートは、グローバルの名前空間でバインドされます。
エンタープライズのルートをネーミングする方法には、次の 2 つがあります。
.../rootdomain.
org//
.../rootdomain/ を使用して、エンタープライズのルートを識別できます。
最初の 3 つのドット (...) は、グローバルのコンテキストを示す原子名 (「グローバル名前空間のポリシー」のグローバルのコンテキストについての説明を参照)
rootdomain/ は、エンタープライズのルートドメイン。たとえば、doc.com/. など
したがって、.../doc.com/ では、ルートドメインが doc.com である会社のエンタープライズのルートが識別されます。この例では、エンタープライズのルートに関連するサイトをネーミングするためのコンテキストは、.../doc.com/site/alameda または .../doc.com/site/alameda.bldg5 などの .../doc.com/site/ となります。
DNS のグローバルの建物を設定した場合は、.../rootdomain フォーマットだけを使用できます。
org// を使用して、エンタープライズのルートを識別できます。本質的に org// は、.../domainname/ に対する別名または機能的に相当するものです。org// を使用するときは、二重のスラッシュによって、ルートのエンタープライズコンテキストとそれに関連する名前空間が識別されます。
たとえば、org//site/alameda では、エンタープライズのルートに関連する Alameda サイトがネーミングされます。
反対に、org/ または orgunit/ (一重のスラッシュ) では、エンタープライズのルートに必ずしも相対的にネーミングされていない組織のコンテキストを示します。たとえば、org/sales/site/alameda のようになります。
次のオブジェクトは、エンタープライズのルートに関連付けてネーミングできます。
エンタープライズの組織単位
エンタープライズの最上位の組織単位にあるサイト (XFN ポリシーへの拡張)
エンタープライズの最上位の組織単位にいるユーザー
エンタープライズの最上位の組織単位にあるホスト
エンタープライズの最上位の組織単位に対するサービス
エンタープライズの最上位の組織単位に対するファイルサービス
これらのオブジェクトは、ターゲットオブジェクトの名前でターゲットオブジェクトの名前空間の名前空間識別子を作成して、ネーミングします。
組織のサブ単位は、エンタープライズのルートに関連付けてネーミングできます。
組織ルート名の場合は、orgunit または _orgunit のどちらかの名前空間識別子を使用して、従属する組織単位コンテキストに名前を作成できます。
たとえば、.../doc.com がエンタープライズ名である場合、組織単位にネーミングするためのコンテキストのルートは、.../doc.com/orgunit/ であり、組織単位名は .../doc.com/orgunit/sales や .../doc.com/orgunit/west.sales のようになります。または、 org//orgunit/sales でも同じ結果を得ることができます。
次のオブジェクトは、組織単位名に関連付けてネーミングできます。
その組織単位のサイト (XFN ポリシーからの拡張)
その組織単位にあるホスト
その組織単位にいるユーザー
その組織単位に対するサービス
その組織単位に対するファイルサービス
たとえば、名前 ...doc.com/orgunit/sales/service/calendar では、sales 組織単位のカレンダのサービスが識別されます。組織単位に関連付けてオブジェクトをネーミングする際の詳細は、「組織単位の名前空間」および 「組織に関連する名前を作成する」を参照してください。
サイトは、XFN ポリシーから拡張されています。
サイトは、次のものに関連付けてネーミングできます。
エンタープライズのルート
組織単位
エンタープライズのルートに関連付けてネーミングされたサイトは、最上位の組織単位に関連付けてネーミングされたサイトと同一になります。組織名の場合は、名前空間識別子の site または _site を使用して、サイトのコンテキストに名前を作成できます。たとえば、エンタープライズのルートが ../doc.com である場合、エンタープライズのルートに関連付けてサイトにネーミングするためのコンテキストは、../doc.com/site となります。サイトは、../doc.com/site/alameda のような名前になります。
次のオブジェクトは、サイト名に関連付けてネーミングできます。
サイトのスケジュールまたはカレンダ、プリンタ、および FAX などのサイトでのサービス
サイトで利用可能なファイルサービス
これらのオブジェクトは、ターゲットオブジェクトの名前空間とターゲットオブジェクト名の名前空間識別子でサイト名を作成して、ネーミングできます。たとえば、名前 site/Clark.bldg-5/service/calendar は、会議室 Clark.bldg-5 のカレンダのサービスでネーミングし、サイト名 site/Clark.bldg-5 とサービス名 service/calendar から作成されます。(サイトに関連付けてオブジェクトにネーミングする際の詳細は、「サイトに関連する名前を作成する」を参照してください。)
ユーザーは、次のものに関連付けてネーミングできます。
組織単位
エンタープライズのルート
エンタープライズのルートに関連付けてネーミングされたユーザーは、最上位の組織単位に関連付けてネーミングされたユーザーと同一になります。組織名の場合は、名前空間識別子の user または _user のどちらかを使用して、コンテキストに名前を作成できます。したがって、orgunit/east.sales で組織がネーミングされる場合は、orgunit/east.sales/user/hirokani で east.sales 組織単位にいるユーザー hirokani がネーミングされます。
次のオブジェクトは、ユーザー名に関連付けてネーミングできます。
ユーザーに関連するサービス
ユーザーのファイル
これらのオブジェクトは、ターゲットオブジェクトの名前空間とターゲットオブジェクト名の名前空間識別子でユーザー名を作成して、ネーミングされます。たとえば、名前 user/sophia/service/calendar では、ユーザー sophia に対するカレンダがネーミングされます。(ユーザーに関連付けてオブジェクトにネーミングする際の詳細は、「ユーザーの名前空間」および 、「エンタープライズのルートとユーザー」を参照してください。)
ホストは、次のものに関連付けてネーミングできます。
組織単位
エンタープライズのルート
エンタープライズのルートに関連付けてネーミングされたホストは、最上位の組織単位に関連付けてネーミングされたホストと同一になります。組織名の場合は、名前空間識別子の host または _host のどちらかを追加して、hostname のコンテキストに名前を作成できます。したがって、orgunit/west.sales で組織がネーミングされる場合は、名前 org/west.sales/host/altair で west.sales 組織単位にあるマシン altair がネーミングされます。
次のオブジェクトは、ホスト名に関連付けてネーミングできます。
ホストに関連するサービス
ホストによってエクスポートされたファイル
これらのオブジェクトは、ターゲットオブジェクトの名前空間とターゲットオブジェクト名の名前空間識別子でホスト名を作成して、ネーミングされます。たとえば、名前 host/sirius/fs/release では、マシン sirius によってエクスポートされたファイルディレクトリ release がネーミングされます。(ホストに関連付けてオブジェクトにネーミングする際の詳細は、「ホストの名前空間」および「ホストに関連する名前を作成する」を参照してください。)
サービスは、次のものに関連付けてネーミングできます。
組織単位
エンタープライズのルート
ユーザー
ホスト
サイト
エンタープライズのルートに関連付けてネーミングされたサービスは、最上位の組織単位に関連付けてネーミングされたサービスと同一になります。
サービスのコンテキストは、名前空間識別子 service または _service を使用して、関連する組織、サイト、ユーザー、またはホストに関連付けてネーミングされます。たとえば、orgunit/corp.finance で組織単位がネーミングされる場合は、orgunit/corp.finance/service/calendar で組織単位 corp.finance の calendar サービスがネーミングされます。(ユーザーの名前空間および、ユーザーに関連付けてオブジェクトをネーミングする際の詳細は、「サービスの名前空間」および、「サービスおよびファイルに関連する名前を作成する」を参照してください。)
FNS では、サービスの名前空間でのバインドのタイプが制限されるわけではありません。アプリケーションは、サービスのコンテキスト以外のタイプのコンテキストを作成し、サービスの名前空間でバインドできます。
FNS は、サービスのコンテキストに「汎用」コンテキストを作成することをサポートします。汎用コンテキストは、アプリケーション決定のリファレンスタイプを持つこと以外は、サービスのコンテキストに類似しています。汎用コンテキストの他のすべての属性は、サービスのコンテキストと同一です。
たとえば、World Intrinsic Designs Corp (WIDC) という名前の会社は、サービスの名前空間で名前 extcomm を獲保し、製品の外部通信ラインに関連するバインドを追加するための汎用コンテキストを参照します。 extcomm にバインドされるコンテキストは、リファレンスタイプ WIDC_comm を持つ汎用コンテキストです。このコンテキストとサービスのコンテキストの違いは、このコンテキストが異なるリファレンスタイプを持っていることだけです。
サービス名は、「サービス名およびリファレンスの登録」で説明しているように、米国 SunSoft, Inc. に登録する必要があります。
ファイルの名前空間は、次のものに関連付けてネーミングできます。
エンタープライズのルート
組織単位
ユーザー
ホスト
サイト
エンタープライズのルートに関連付けてネーミングされたファイルは、最上位の組織単位に関連付けてネーミングされたファイルと同一になります。ファイルのコンテキストは、名前空間識別子の fs または _fs を使用して、関連する組織、サイト、ユーザー、またはホストに関連付けてネーミングされます。たとえば、orgunit/accountspayable.finance で組織単位がネーミングされる場合は、名前 user/jsmith/fs/report96.doc でファイル report96.doc がネーミングされます。ユーザーのファイルサービスは、NIS+ の passwd テーブルで指定されているように、デフォルトではホームディレクトリになります。(ユーザーの名前空間の詳細は、「ファイルの名前空間」 を参照してください。)
この他には、ファイルシステムに従属するコンテキストのタイプはありません。
プリンタのコンテキストは、XFN ポリシーの拡張です。
プリンタの名前空間は、サービスのコンテキストでネーミングできます。プリンタのコンテキストは、名前空間識別子の printer を使用して、次のものに関連したサービスのコンテキストでネーミングされます。
組織単位
ユーザー
ホスト
サイト
たとえば、org/east.sales で組織単位がネーミングされる場合は、org/eastsales/service/printer では組織単位 east.sales のプリンタのサービスがネーミングされます。したがって lp1 という名前の固有のプリンタは、次のように識別されます。
org/east.sales/service/printer/lp1
この他には、プリンタに従属するコンテキストのタイプはありません。
初期コンテキストは、クライアントのユーザー、ホスト、およびアプリケーションがエンタープライズ名前空間の任意のオブジェクトに (結果的に) ネーミングできる開始点です。
図 21-3 に示すネーミングシステムは、初期コンテキストのバインドが影付きでイタリックになっている点を除いて図 21-2 に挙げたネーミングシステムと同一です。これらの初期コンテキストは、解決する名前を決定するユーザー、ホスト、またはアプリケーションの観点から示されています。
XFN では、「初期コンテキスト関数」の fn_ctx_handle_from_initial() が提供され、クライアントは初期コンテキストのオブジェクトを名前解決の開始点として得ることが可能になります。初期コンテキストには、名前空間識別子に対するフラットな名前空間があります。これらの初期コンテキスト識別子のバインドについては表 21-3 に要約し、その後の節でさらに詳細に説明しています。これらの名前は、必ずしもすべての初期コンテキストに表示されるわけではありません。たとえば、スーパーユーザーがプログラムを起動したときには、ホストとクライアントに関連するバインドのみが初期コンテキストに表示され、ユーザーに関連するバインドは表示されません。
表 21-3 エンタープライズ内のネーミングに対する初期コンテキストのバインド
名前空間 識別子 |
バインド |
---|---|
myself, _myself, thisuser |
名前解決しようとするユーザーのコンテキスト |
myens, _myens |
名前解決しようとするユーザーのエンタープライズのルート |
myorgunit, _myorgunit |
ユーザーの主要な組織単位のコンテキスト。たとえば、NIS+ 環境では、主組織単位はユーザーの NIS+ ホームドメインとなる |
thishost, _thishost |
名前解決しようとするホストのコンテキスト |
thisens, _thisens |
名前解決しようとするホストのエンタープライズのルート |
thisorgunit, _thisorgunit |
ホストの主要な組織単位のコンテキスト。たとえば、NIS+ 環境では、主組織単位はホストの NIS+ ホームドメインとなる |
user, _user |
ホストと同じ組織単位にいるユーザーがネーミングされるコンテキスト |
host, _host |
ホストと同じ組織単位にいるホストがネーミングされるコンテキスト |
org, orgunit, _orgunit |
ホストのエンタープライズにある組織単位の名前空間のルートコンテキスト。たとえば、NIS+ 環境では、これは NIS+ ルートドメインに対応する |
site, _site |
サイトの名前空間が構成された場合、最上位の組織単位にあるサイトの名前空間のルートコンテキスト |
XFN 用語では、接頭辞として使用される下線は、「正規」名前空間識別子と呼ばれます。この下線がなく、org および thisuser が追加された名前は、Solaris のカスタマイズです。Solaris カスタマイズの名前空間識別子は、他の Solaris 以外の環境で認識されるとは限りません。正規名前空間識別子は、他の環境でも必ず認識されるため移植性があります。
現在実装されている FNS では、初期コンテキストにある名前およびバインドの追加や修正はサポートされません。
初期コンテキストのバインドは、基本的に次の 3 つに分けられます。
ユーザーに関連するバインド (「ユーザーに関連するバインド」を参照)
ホストに関連するバインド (「ホストに関連するバインド」を参照)
短縮形のバインド (「短縮形のバインド」を参照)
FNS では、XFN 初期コンテキスト関数が呼び出されたときに、プロセスに関連付けられたユーザーが存在するものと仮定されます。この関連付けは、プロセスの実効ユーザー ID (euid) に基づいています。プロセスに対するユーザーの関連付けがプロセスの途中で変更されることはありますが、元のコンテキストハンドルは変更されません。
FNS では、名前解決を要求するユーザーに関連する初期コンテキストにある次のバインドが定義されます。
初期コンテキストにある名前空間識別子 myself (あるいは同義語の _myself または thisuser のどちらか) は、要求を行うユーザーのコンテキストで解決されます。ユーザー jsmith が所有するプロセスが名前解決を要求したときの例を示します。
名前 myself は、jsmith のユーザーのコンテキストとして初期コンテキストで解決される
myself/fs/.cshrc は、jsmith のファイル cshrc にネーミングする
FNS では、各ユーザーがエンタープライズの組織単位に関連するものと仮定されます。1 人のユーザーを複数の組織単位に関連させることはできますが、組織の名前空間での位置または組織内でのユーザーの役割によって、主な組織単位が必ず 1 つ必要です。
「NIS+」
NIS+ 名前空間では、この組織単位はユーザーのホームドメイン (これは、サブドメインになることもある) に対応する
「NIS」
NIS 名前空間では、ユーザーのドメインに対応するエンタープライズレベルの組織単位は 1 つしかない
「ファイル」
ファイルベースの名前空間では、組織単位は myorgunit にマップする org// しかない
名前空間識別子 myorgunit (または _myorgunit) は、要求を行うユーザーが所属する主組織単位のコンテキストとして初期コンテキストで解決されます。たとえば、要求を行うユーザーが jsmith で、jsmith のホームドメインが east.sales である場合は、myorgunit は east.sales の組織単位コンテキストとして初期コンテキストで解決され、名前 myorgunit/service/calendar は east.sales のカレンダのサービスで解決されます。
FNS では、各ユーザーがエンタープライズに関連するものと仮定されます。これは、myorgunit を保持する名前空間に対応します。
名前空間識別子 myens (および _myens) は、要求を行うユーザーが所属するエンタープライズのルートとして初期コンテキストで解決されます。たとえば、jsmith が要求を行い、jsmith の NIS+ ホームドメインが east.sales である場合、それは doc.com. のルートドメイン名を含む NIS+ 階層にあります。名前 myens/orgunit/ は、doc.com の最上部の組織単位で解決されます。
myorgunit または myself/service などのユーザーに関連する複合名を使用するときは、これらのバインドはプロセスの実効ユーザー ID に依存するため、ユーザー ID 設定プログラムに注意してください。ユーザー ID を root に設定して、呼び出し元に代わってシステムリソースにアクセスするプログラムでは、通常は fn_ctx_handle_from_initial() を呼び出す前に seteuid(getuid()) を呼び出してください。
XFN 初期コンテキスト関数が呼び出されたときには、特定のホストでプロセスが実行中です。FNS では、プロセス実行中のホストに関連する初期コンテキストにある次のバインドが定義されます。
名前空間識別子 thishost (または _thishost) は、プロセス実行中のホストのホストコンテキストにバインドされます。たとえば、プロセスがマシン cygnus で実行中である場合、thishost は cygnus のホストのコンテキストにバインドされ、名前 thishost/service/calendar はマシン cygnus のカレンダのサービスを参照します。
FNS では、ホストは組織単位に関連付けられていると仮定します。1 つのホストを複数の組織単位に関連付けることができますが、主となる組織単位が必要です。NIS+ 名前空間では、組織単位はホストのホームドメインに対応します。
名前空間識別子 thisorgunit (または _thisorgunit) は、プロセス実行中のホストの主要な組織単位に解決されます。たとえば、ホストがマシン cygnus であり、cygnus の NIS+ ホームドメインが west.sales である場合は、thisorgunit は west.sales として組織単位コンテキストで解決され、名前 thisorgunit/service/fax は組織単位 west.sales の FAX サービスを参照します。
FNS では、ホストがエンタープライズに関連するものと仮定されます。これは、thisorgunit を保持する名前空間に対応します。
名前空間識別子 thisens (または _thisens) は、プロセス実行中のホストのエンタープライズのルートで解決されます。たとえば、NIS+ で、ホストのホームドメインが sales.doc.com である場合、名前 thisens/site/ は doc.com. のサイトの名前空間のルートで解決されます。
FNS では、初期コンテキストにある次の短縮形バインドを定義し、短い名前を使用して、共通に参照される特定の名前空間を参照できます。
名前空間識別子 user (または _user) は、プロセス実行中のホストの組織単位にある username コンテキストとして初期コンテキストにバインドされます。これにより、同じ組織単位にいる他のユーザーをこのコンテキストからネーミングできます。
初期コンテキストから、名前 user および thisorgunit/user は同じコンテキストで解決されます。たとえば、プロセス実行中のホストがマシン altairであり、altair が east.sales 組織単位にある場合は、名前 user/medici で east.sales にいるユーザー medici がネーミングされます。
名前空間識別子 host (または _host) は、プロセス実行中のホストの組織単位にある hostname コンテキストとして初期コンテキストにバインドされます。これにより、同じ組織単位にいる他のホストをこのコンテキストからネーミングできます。
初期コンテキストから、名前 host および thisorgunit/host は同じコンテキストで解決されます。たとえば、プロセス実行中のホストがマシン sirius であり、sirius が east.sales 組織単位にある場合は、名前 host/sirius で east.sales にあるマシン sirius がネーミングされます。
名前空間識別子 org (または orgunit、_orgunit) は、プロセス実行中のホストが所属するエンタープライズの組織のルートコンテキストとして初期コンテキストでバインドされます。
初期コンテキストから、名前 org および thisens/orgunit は同じコンテキストで解決されます。たとえば、プロセス実行中のホストがマシン aldebaran であり、aldebaran がエンタープライズ doc.com にある場合は、名前 org/east.sales で doc.com. にある組織単位 east.sales がネーミングされます。
名前空間識別子 site (または _site) は、プロセス実行中のホストが所属するエンタープライズの最上位の組織単位のサイトネーミングシステムのルートに対する初期コンテキストにバインドされます。
初期コンテキストから、名前 site および thisens/site は同じコンテキストで解決されます。たとえば、プロセス実行中のホストがマシン aldebaran であり、aldebaran がエンタープライズ doc.com にある場合は、名前 site/pine.bldg-5 で doc.com. の建物 5 にある会議室 pine がネーミングされます。