この章では、ネームサービススイッチとその構成手順について説明します。
ネームサービススイッチは、クライアントワークステーションやアプリケーションのネットワーク情報の入手方法を制御するためのもので、単に「スイッチ」ともいいます。アプリケーションは、このスイッチの内容を基に、どのネームサービスをどの順番で使うかを判断し、名前に関する情報を入手します。スイッチの実体は nsswitch.conf というファイルで、これは各マシン (ワークステーション) の /etc ディレクトリに格納されています。
各ワークステーションの /etc ディレクトリには nsswitch.conf ファイルがあります。このファイルの各行は、ネットワーク情報の種類 (ホスト、パスワード、グループなど) と、それに対する 1 つ以上の情報源 (NIS+ テーブル、NIS マップ、DNS ホストテーブル、同一ワークステーション上の /etc など) を対応させています。nsswitch.conf ファイルの詳細は、『Solaris ネーミングの管理』 を参照してください。
/etc/nsswitch.conf ファイルは、Solaris 2.6 リリースをインストールすると自動的に作成されます。また次の 3 つの代替テンプレートファイルも作成されます。
これらの 3 つの代替テンプレートファイルには、それぞれネットワーク情報の情報源として NIS+、NIS またはローカルファイルを使用する、標準的なスイッチ構成が設定されています。DNS 用のテンプレートファイルは用意されていませんが、いずれの代替テンプレートファイルも DNS 用に編集して使用できます。詳細は、「DNS を使用できるようにする」を参照してください。Solaris 2.6 リリースをワークステーションに最初にインストールする際、インストーラはそのワークステーションのデフォルトのネームサービス (NIS+、NIS、またはローカルファイル) を選択します。インストールの途中、選択されたネームサービスに対応するテンプレートファイルが /etc/nsswitch.conf にコピーされます。たとえば、NIS+ を使う場合、インストーラは nsswitch.nisplus を nsswitch.conf にコピーします。
インターネットに接続したネットワークの中で、DNS サービスを使ってインターネット上のホストにアクセスできる環境をユーザーに提供したいのであれば、「DNS を使用できるようにする」の説明に従って DNS 転送を可能にする必要があります。
通常の名前空間であれば (DNS の利用に関しては前述のとおり)、nsswitch.conf にコピーされたデフォルトのテンプレートファイルで十分に用が足りるはずです。
Solaris 2.6 リリースで提供される NIS+ 用スイッチファイルは、nsswitch.nisplus です。
# # /etc/nsswitch.nisplus: # # An example file that could be copied over to /etc/nsswitch.conf; it # uses NIS+ (NIS Version 3) in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports. # the following two lines obviate the "+" entry in /etc/passwd and /etc/group. passwd: files nisplus group: files nisplus # consult /etc "files" only if nisplus is down. hosts: nisplus [NOTFOUND=return] files #Uncomment the following line, and comment out the above, to use both DNS #and NIS+. You must also set up the /etc/resolv.conf file for DNS name #server lookup. See resolv.conf(4). #hosts: nisplus dns [NOTFOUND=return] files services: nisplus [NOTFOUND=return] files networks: nisplus [NOTFOUND=return] files protocols:nisplus [NOTFOUND=return] files rpc: nisplus [NOTFOUND=return] files ethers: nisplus [NOTFOUND=return] files bootparams: nisplus [NOTFOUND=return] files publickey: nisplus netgroup:nisplus automount: files nisplus aliases: files nisplus sendmailvars: files nisplus
Solaris 2.6 リリースで提供される NIS 用スイッチファイルは、nsswitch.nis です。
# # /etc/nsswitch.nis: # # An example file that could be copied over to /etc/nsswitch.conf; it # # uses NIS (YP) in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports. # the following two lines obviate the "+" entry in /etc/passwd and /etc/group. passwd: files nis group: files nis # consult /etc "files" only if nis is down. hosts: nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files netmasks: nis [NOTFOUND=return] files bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files netgroup: nis automount: files nis aliases: files nis # for efficient getservbyname() avoid nis services: files nis sendmailvars: files
Solaris 2.6 リリースで提供されるローカルファイル用スイッチファイルは nsswitch.files です。
# # /etc/nsswitch.files: # # An example file that could be copied over to /etc/nsswitch.conf; it # does not use any naming service. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports. passwd: files group: files hosts: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files publickey: files # At present there isn't a 'files' backend for netgroup; the system will # figure it out pretty quickly, and won't use netgroups at all. netgroup: files automount: files aliases: files services: files sendmailvars: files
ワークステーションのネームサービスを変更する際は、そのワークステーションのスイッチファイルを新しいネームサービスに対応したものに変更する必要があります。たとえば、ワークステーションのネームサービスを NIS から NIS+ に変更する場合、スイッチファイルを NIS+ に対応したものに変更する必要があります。スイッチファイルを変更するには、対応するテンプレートファイルを nsswitch.conf にコピーします。
NIS+ インストールスクリプトを使って NIS+ をワークステーションにインストールすると、NIS+ テンプレートファイルが自動的に nsswitch.conf にコピーされます。この場合、特にスイッチファイルをカスタマイズしたいというのでなければ、スイッチファイルを明示的に変更する必要はありません。
スイッチファイルを変更する前に、ファイルに列挙されている情報源が正しく設定されていることを確認してください。たとえば、NIS+ 用スイッチファイルに変更するのであれば、ワークステーションには NIS+ サービスへのアクセス権が必要になりますし、ローカルファイル用スイッチファイルに変更するのであれば、それらのローカルファイルがワークステーション上に正しく設定されている必要があります。
基本的な手順は次のとおりです。
ワークステーションにスーパーユーザーとしてログインします。
nsswitch.conf に代替テンプレートファイルをコピーします。
ワークステーションを再起動します。(これは、スイッチ情報は nscd にキャッシュされるからです。nscd は、起動時にだけスイッチ情報を読み込みます。)
この作業は、スーパーユーザーとして実行しなければなりません。
スイッチファイルの変更は次の手順で行います。
クライアントにスーパーユーザーとしてログインします。
使用するネームサービス用のテンプレートファイルを nsswitch.conf にコピーします。
「NIS+ 用」 (NIS+ スクリプトにより自動的にコピーされる)
client1# cd /etc client1# cp nsswitch.nisplus nsswitch.conf
「NIS 用」
client1# cd /etc client1# cp nsswitch.nis nsswitch.conf
「ローカル /etc ファイル用」
client1# cd /etc client1# cp nsswitch.files nsswitch.conf
ワークステーションを再起動します。
nscd ネームサービスキャッシュデーモンはスイッチ情報をキャッシュします。また、ライブラリ関数には nsswitch.conf ファイルが変更されてもスイッチ情報を読み直さないものがあります。したがって、ワークステーションを再起動して、nscd とこれらのライブラリ関数が最新スイッチの情報を持つようにしなければなりません。
ここでは、ローカルファイル用または NIS+ 用のネームサービススイッチ構成ファイルを設定して、ローカルファイルまたは NIS+ と共に DNS (Domain Name System) を使用できるようにする方法を説明します。NIS には DNS を参照する機能がもともと組み込まれていますので、NIS を使用しているマシンではスイッチファイルの hosts 行に DNS のためのエントリを追加する必要はありませんし、また追加すべきでもありません。ここで説明する手順は、/etc のローカルファイルか NIS+ を使用するマシンにだけ適用されます。
/etc のローカルファイルまたは NIS+ を使っている場合の手順を次に示します。
スーパーユーザーとしてログインします。
/etc/nsswitch.conf ファイルをオープンします。
ホスト情報の情報源として DNS を指定します。
ファイルを保存し、ワークステーションを再起動します。
DNS を使用するマシンでは /etc/resolv.conf を正しく構成する必要があります。(詳しくは、「リゾルバ」 を参照してください。)
この作業は、スーパーユーザーとして実行しなければなりません。
スーパーユーザーとしてログインします。
/etc/nsswitch.conf ファイルをオープンします。
ホスト情報のソースとして DNS を指定します。
DNS は、ホスト情報の情報源として、「他の情報源」と共に使用できます。/etc/nsswitch.conf の hosts 行を次のいずれかのように変更して、DNS をホスト情報の情報源とすることを指定します。
hosts: files dns
または
hosts: nisplus dns [NOTFOUND=return] files
または
hosts: dns nisplus [NOTFOUND=return] files
NIS クライアントの場合は、上記の指定をしないでください。これは、名前を見付けることができない場合に、2 度 DNS から検索することになるからです。
/etc/nsswitch.conf ファイルを保存し、ワークステーションを再起動します。
nscd デーモンは、その起動時にスイッチ情報を読み込み、キャッシュするため、ここでワークステーションを再起動しなければなりません。
ここでは、ネームサービスとして主に NIS または NIS+ を使用する場合に、/etc/passwd、/etc/shadow、/etc/group の各ファイルで使用される +/- 構文との互換性を確保する方法について説明します。
手順を次に示します。
スーパーユーザーとしてログインします。
/etc/nsswitch.conf ファイルをオープンします。
passwd と group の情報源を compat に変更します。
+ または + netgroup を /etc/passwd、/etc/shadow および /etc/group に追加します。
/etc/nsswitch.conf ファイルを保存して、ワークステーションを再起動します。
この作業は、スーパーユーザーとして実行しなければなりません。
NIS 互換性モードで実行されている NIS+ サーバーをサーバーとするクライアントマシン上で作業しているユーザーは、ネットグループテーブルに対して ypcat を実行できません。実行した場合、エントリがあってもテーブルが空の場合と同じ結果となります。
スーパーユーザーとしてログインします。
/etc/nsswitch.conf ファイルをオープンします。
passwd と group の情報源を compat に変更します。
これにより Solaris 1.x リリースと同じ構文を使用できます。ファイル内の +/- エントリに従って、/etc と NIS マップ (または NIS+ テーブル) を検索します。
+ または + netgroup を /etc/passwd、/etc/shadow、/etc/group の各ファイルに追加します。
+ または + netgroup のエントリを /etc/shadow および /etc/passwd に追加しないと、ローカルファイルに登録されていないユーザーは以後ログインできなくなります。
/etc/nsswitch.conf ファイルを保存し、ワークステーションを再起動します。
nscd ネームサービスキャッシュデーモンはスイッチ情報をキャッシュします。また、ライブラリ関数には nsswitch.conf ファイルが変更されてもスイッチ情報を読みなおさないものがあります。したがって、ワークステーションを再起動して、nscd とこれらのライブラリ関数が最新スイッチの情報を持つようにしなければなりません。