Solaris ネーミングの管理

第 23 章 FNS とエンタープライズのネームサービス

この章では、FNS およびエンタープライズレベルのネームサービスの管理について説明します。

FNS とエンタープライズレベルのネームサービス

エンタープライズレベルのネームサービスは、組織内のオブジェクトをネーミングするために使用されます。現在 FNS は、次の 3 つのエンタープライズレベルのネームサービスをサポートしています。

エンタープライズレベルのネームサービスを選択する

Solaris ネーミングの設定と構成』で説明している fncreate コマンドで FNS 名前空間を初期設定して構成するときには、正しいデフォルトのネームサービスが自動的に各マシンに選択されます。

マシンの主要なエンタープライズレベルのネームサービスを後で変更する場合は、そのマシンで fnselect コマンドを実行する必要があります。詳細は、「ネームサービスを選択する」を参照してください。

FNS とネームサービスとの整合性

タスクの 1 つにシステム管理者の機能が割り当てられていて、FNS とその下層のネームサービス間の整合性を維持しています。これは、ネームサービスのファイル、マップ、またはテーブルと FNS コンテキストが正しく対応しているかどうかをチェックするということです。

Solaris ネーミングの設定と構成』で説明している fncreate コマンドで FNS 名前空間を初期設定して構成するとき、fncreate では、FNS コンテキストが適切に作成され、下層のネームサービスのデータと整合されたことが確認されます。FNS コンテキストが設定された後、ユーザー、ホスト、プリンタなどがシステムに追加または削除されるときに、この対応関係は維持される必要があります。以下の項では、FNS とネームサービスとの整合性を維持する方法について説明します。

FNS と Solstice AdminSuite

Solstice AdminSuite 製品で、基本的なネームサービスでのユーザーとホストの情報を追加、変更、削除できます。AdminSuite ツールでは対応する FNS 名前空間が自動的に更新されるため、この方法をお勧めします。

ネーミングの不一致をチェックする

Solstice AdminSuite 製品を使用せずに FNS または主要なネームサービスを更新するときに、不一致が発生した場合は、FNS ツールの fncheck を使用して解決します。fncheck コマンドは、FNS の hostnameuser のコンテキストと、次のものとの不一致をチェックします。

fncheck コマンドは、FNS 名前空間にあってネームサービスのデータにないホストとユーザー名およびネームサービスのデータにあって FNS 名前空間にないホストとユーザー名を表示します。

コマンド構文は以下のとおりです。


fncheck [-r][-s][-u][-t hostname|username][domain_name]
表 23-1 fncheck コマンドオプション

オプション 

説明 

domain

コマンドを実行しているドメイン以外の NIS+ ドメインにコマンドを適用する 

-t

チェックするコンテキストのタイプを指定する。許容されるタイプは、hostname または username

-s

FNS 名前空間にない名前空間のデータセットからホスト名とユーザー名を表示する 

-r

対応する名前空間のデータセットにないエントリを持たない FNS 名前空間からホスト名またはユーザー名を表示する 

-u

関連した名前空間のデータセットにある情報に基づいて FNS 名前空間を更新する 

-t オプションは、チェックするコンテキスト (ホストまたはユーザー) を指定するために使用します。-t オプションを省略した場合は、hostnameusername のコンテキストの両方がチェックされます。

-r オプションを -u オプションとともに使用すると、FNS コンテキストにしか表示されない項目が FNS コンテキストから削除されます。-s オプションを -u オプションとともに使用すると、名前空間のデータセットにしか表示されない項目が FNS コンテキストに追加されます。-r-s のどちらも指定しない場合は、項目が FNS コンテキストに追加および削除され、対応する名前空間のデータとの整合性が保たれます。

ネームサービスを選択する

FNS がマシンに対する初期コンテキストにバインドを構成するときには、特定のネームサービスに基づいて行います。

FNS では fnselect コマンドで使用するネームサービスを選択できます。fnselect で指定したネームサービスの設定は、マシン全体、そのマシンで動作するすべてのアプリケーション、およびそのマシンにログインしたすべてのユーザーに影響します。

スーパーユーザーだけが fnselect を実行できます。コマンド構文は以下のとおりです。


fnselect [-D] [namesvc]
表 23-2 fnselect コマンドオプション

オプション 

説明  

namesvc

選択するネームサービス。必ず次のどれかになる。defaultnisplusnis または files

-D

FNS 初期コンテキストを生成するために使用されるネームサービスを表示する 

たとえば、マシンのネームサービスとして NIS+ を選択するには以下のコマンドを使用します。


# fnselect nisplus

たとえば、マシンのネームサービスとして default を選択し、FNS 初期コンテキストを生成するために使用されるサービスの名前を印刷するには次のように入力します。


# fnselect -D default

デフォルトのネームサービス

fnselect でネームサービスを指定しない場合、FNS はデフォルトのネームサービスを使用します。デフォルトのネームサービスは、マシンの使用するネームサービスに基づいて FNS で決定されます。マシンが NIS+ クライアントである場合は、FNS は NIS+ をネームサービスとして使用します。マシンが NIS クライアントである場合は、FNS は NIS を使用します。マシンが NIS+ および NIS クライアントのどちらでもない場合は、FNS は /etc ファイルをマシンのネームサービスとして使用します。

NIS+ と NIS が共存する場合

ごくまれに、NIS+ と NIS ベースのコンテキストの両方にアクセスする必要が生じることがあります。たとえば、それ自体が NIS+ クライアントである NIS サーバーを稼動している場合です。この場合、fnselect コマンドを使用して、使用するエンタープライズレベルのネームサービスを選択します。

FNS と NIS+ の詳細情報

この節では、NIS+ オブジェクトと FNS オブジェクトの関係の詳細について説明します。この情報は、FNS オブジェクトのアクセス制御を変更するときに有効です。

NIS またはファイルベースのネーミングから NIS+ への移行

次を参照してください。

FNS コンテキストを NIS+ オブジェクトにマップする

FNS コンテキストは、NIS+ オブジェクトに格納されます。組織に関連するすべてのコンテキストは、関連する NIS+ ドメインの ctx_dir ディレクトリに格納されます。ctx_dir ディレクトリは、同じドメインの org_dir と同じレベルにあります。すなわち、FNS と同時に実行される時には、それぞれの NIS+ ドメインまたはサブドメインには対応する org_dirgroups_dir、および ctx_dir というディレクトリオブジェクトが存在します。

fnlookup または fnlist のコマンドで -v オプションを使用して、リファレンスについての詳細な説明を表示します。内部名フィールドに、対応する NIS+ オブジェクトの名前が表示されます。

NIS+ コマンドを使用して FNS 構造を表示する

NIS+ コマンドの nisls を使用して、FNS で使用される NIS+ オブジェクトを表示できます。たとえば、次のコマンドでは、NIS+ ドメインのディレクトリおよび ctx_dir サブディレクトリの内容が表示されます。


# nisls doc.com.
doc.com.:
manf
sales
groups_dir
org_dir
ctx_dir 

# nisls ctx_dir.doc.com.
ctx_dir.DOC.COM.:
fns
fns_user
fns_host
fns_host_alto
fns_host_mladd
fns_host_elvira
fns_user_jjones
fns_user_jsmith
fns_user_aw 

niscat コマンドを使用して、fns_hosts テーブルの内容を表示します。


# niscat fns_host.ctx_dir
altair *BINARY* *BINARY*
cygnus *BINARY* *BINARY*
centauri *BINARY* *BINARY*

アクセス制御をチェックする

niscat コマンドを -o オプションつきで使用して、コンテキストのアクセス制御を確認します。特定のバインディングのアクセス制御を確認するには、親コンテキストのバインドテーブルにあるバインドエントリの名前 (つまり、fnlookup -v および fnlist -v の出力の内部名フィールドに表示される名前) を使用します。


# niscat -o fns_host.ctx_dir
Object Name     	:	fns_host
Owner           	:	alto.doc.com.
Group      	      :	admin.doc.com.
Domain            :	ctx_dir.doc.com.
Access Rights   	:	r-c-rmcdrmcdr-c-
Time to Live    	:	53:0:56
Object Type     	:	TABLE
Table Type      	:	H 
Number of Columns	:	3
Character Separator
Search Path     	:
Columns        	:
[0] Name				:	atomicname
 Attributes			: (検索可能、テキストデータ、大文字・小文字の区別なし)
 Access Rights		:	r-c-rmcdrmcdr-c-
[1] Name				:	reference
 Attributes			:	(2 進データ)
 Access Rights		:	r-c-rmcdrmcdr-c-
[2] Name				:	flags
 Attributes			: (2 進データ)
 Access Rights		:	r-c-rmcdrmcdr-c-

# niscat -o "[atomicname=altair],fns_host.ctx_dir" 
Object Name :	fns_host
Owner   	:	altair.doc.com.
Group    :	admin.doc.com.
Domain  	:	ctx_dir.doc.com.
Access Rights :	r-c-rmcdrmcdr-c-
Time to Live	:	12:0:0
Object Type	:	ENTRY
Entry data of type H
[1] - [5 bytes] 'alto'
[2] - [104 bytes] '0x00 ...'
[3] - [1 bytes] 0x01

niscat コマンドに関する追加情報については、「niscat コマンド」を参照してください。

特定のコンテキストのアクセス権または所有権を変更するには、次のコマンドを使用します:

操作が影響するオブジェクトに応じて、バインドエントリまたはバインドテーブルのどちらかを引数として与えます。

FNS と NIS の詳細情報

ここでは、NIS と FNS の関係についての特定情報を説明します。

NIS と FNS のマップと Makefile

FNS は、NIS マスターおよびスレーブのサーバー上の /var/yp/domainname ディレクトリに格納されている 6 つのマップを使用します。

ホスト、ユーザー、およびエンタープライズのサービスとファイルのコンテキスト情報は、それぞれ fns_host.ctxfns_user.ctx、および fns_org.ctx のマップに格納されます。プリンタのコンテキスト情報は、他のサービスのコンテキスト情報と同じマップに格納されます。しかし、古い printers.conf.byname マップはここでもサポートされます。

サイトは、エンタープライズのサブコンテキストであり、サイトのコンテキスト情報は fns_org.ctx マップに格納されます。


注 -

これらの FNS マップは、直接編集しないでください。fncreatefndestroyfnbindfnunbindfnrenamefnattrfnlookup、および fnlist などの適切な FNS コマンドを実行して、これらのマップで変更または作業を行います。これらのコマンドは、必ず NIS マスターサーバーで実行します。スレーブサーバーまたはクライアントマシンでこれらを実行できません。


FNS マップファイルは、/var/yp/domainname ディレクトリにあります。/var/yp にある NIS Makefile は変更され、/etc/fn/domainname にある FNS Makefile が認識されます。

大型 FNS コンテキスト

NIS では、NIS マップに含まれるエントリ数に 64K という制限があります。サービスおよびプリンタのコンテキストだけが各オブジェクト (ホストまたはユーザー) に作成された場合、ユーザーまたはホストの数が 7K を超えると、エントリ数がその制限に達します。通常行われるように、ホストまたはユーザーに追加のコンテキストが作成された場合、ずっと少ないホストまたはユーザーでエントリ数が 64,000 の上限に達します。

FNS は、古いマップが最大サイズに達したら新規マップを自動的に作成して、この問題を解決します。各新規マップは、マップ名に数字の接尾辞を追加して識別されます。たとえば、2 つめの fns_user.ctx マップが作成されると、そのマップには名前 fns_user_0.ctx という名前が与えられます。3 つめのマップが必要になると、そのマップには名前 fns_user_1.ctx という名前が与えられます。追加のマップが作成されるにつれて、数字は毎回増加していきます。

プリンタの下位互換

Solaris リリース 2.5 では、FNS は、printers.conf.byname という名前のマップを使用して、組織コンテキストで NIS のプリンタのネーミングをサポートします。現在の Solaris では、組織コンテキストのプリンタサポートは、fns_org.ctx マップに保持されています。つまり、ここでの fncreate_printer コマンドでは fns_org.ctx マップが変更され、printers.conf.byname マップは変更されません。

NIS から NIS+ への変更

fncopy コマンドは、エンタープライズレベルのネームサービスを NIS から NIS+ に変更するときに、FNS 関連の側面を処理します。このコマンドは、NIS ベースの FNS コンテキストを NIS+ ベースのコンテキストにコピーして変換します。

コマンド構文は以下のとおりです。


fncopy [-i oldsvc - o newsvc] [-f  filename] oldctx newctx 
表 23-3 fncopyコマンドオプション

オプション 

説明 

-i oldsvc

ソースのネームサービス。nis または files だけが指定される

-o newsvc

目標のネームサービス。nisplus または nis だけが指定される

-f filename

コピーされる FNS コンテキストを表示するファイル名 

oldctx

コピーされる古い FNS コンテキスト 

newctx

目標の新規 FNS コンテキスト 

たとえば、ファイル /etc/sales_users に表示されるコンテキストを、NIS ベースのネームサービスの doc.com ドメインから NIS+ ネームサービスの sales.doc.com ドメインにコピーするには、次のように入力します。


fncopy -i nis -o nisplus -f /etc/sales_users org/sales.doc.com/user 

FNS とファイルベースのネーミングの詳細情報

この節では、ファイルベースのネーミングと FNS の関係についての特定の情報を説明します。

FNS ファイル

FNS では、各マシンの /var/fn ディレクトリに格納された新規ファイルが使用されます。通常 /var/fn ディレクトリは各マシンに格納されていますが、NFS 経由で中央の /var/fn ディレクトリをマウントしたり、エクスポートしたりできます。

新規 FNS ファイルを以下に示します。

ホスト、ユーザー、およびエンタープライズのサービスとファイルのコンテキスト情報は、それぞれ fns_host.ctxfns_user.ctx、および fns_org.ctx のファイルに格納されます。プリンタのコンテキスト情報は、他のサービスのコンテキスト情報と同じファイルに格納されます。

サイトは、エンタープライズのサブコンテキストであり、サイトのコンテキスト情報は fns_org.ctx ファイルに格納されます。


注 -

これらの FNS マップは、直接編集しないでください。fncreate fndestroyfnbindfnunbindfnrenamefnattrfnlookup、および fnlist などの適切な FNS コマンドを実行して、これらのファイルで変更または作業を行います。スーパーユーザーとしてこれらのコマンドを実行すると、ホスト、サイト、および組織単位などの、コマンドが適用されるコンテキストが影響されます。ユーザーとしてこれらのコマンドを実行すると、自分のユーザーのサブコンテキストだけが影響されます。


ファイルベースのネーミングから NIS または NIS+ への変更

fncopy コマンドは、エンタープライズレベルのネームサービスをファイルから NIS または NIS+ に変更するときに、FNS 関連の側面を処理します。このコマンドは、ファイルベースの FNS コンテキストを NIS または NIS+ ベースのコンテキストにコピーして変換します。

コマンド構文は以下の通りです。


fncopy [-i oldsvc -o  newsvc] [-f filename]  oldctx newctx

たとえば、ファイル /etc/host_list に表示される内容を NIS+ ネームサービスの doc.com ドメインにコピーするには、次のように入力します。


fncopy -i files -o nisplus -f /etc/host_list //doc.com/host 

プリンタの下位互換

Solaris リリース 2.5 では、FNS は、printers.conf.byname という名前のファイルを使用して、組織コンテキストでファイルへのプリンタのネーミングをサポートします。現在の Solaris では、組織コンテキストのプリンタサポートは、fns_org.ctx マップに保持されています。つまり、ここでの fncreate_printer コマンドでは fns_org.ctx マップが変更され、printers.conf.byname マップは変更されません。