next up previous contents
Next: 3.5.4 NIS ドメインを決める Up: 3.5 NISサービスの準備 Previous: 3.5.2 NIS+からの切り換え

3.5.3 サービスの選択

Solarisでは /etc/nsswitch.conf というファイルが存在します。 このファイルに各マップの情報をどのような順序でどのように参照するかを 設定することができます。このファイルによってきめ細かく、使用するサー ビスを選択できる点がSolarisの優れている点の一つといってよいでしょう。

files はローカルな /etc の下のファイルを、 nis は NIS、nisplus は NIS+ のマップを見にいきます。dnsはDNSを直接参照 します。SunOS 4.xではDNSの参照は(自力でライブラリをインストールしない 限り)NIS経由でしか行えなかったので、大きな改善と言えるでしょう。 NISのサービスを利用するためには、このファイルの内容も変更が必要です。

#
# /etc/nsswitch.conf:
#
# 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
services:   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
netgroup:   nis
automount:  files nis
aliases:    files nis
sendmailvars:   files nis

実は、nsswitch.conf のエントリ(例えば hosts)に対する動作は少し複雑 です。まず、エントリの後ろに書いたターゲット( nis, files, dns など) は全てを必ず参照するのではありません。デフォルトの動作は、参照が 成功したらそこで終わります。見つからなかったら、次のターゲットを 参照します。更に、サービスが利用できない又はサービスへのリクエスト が却下(TryAgain)の場合も、次のターゲットを参照します。

このデフォルト動作を切り替えているのが、[NOTFOUND=return] です。これによって、上の例の場合、hosts エントリについては nis を 参照し、それで見つからなかった場合はそのまま files を参照する事なく 終わるわけです。しかし、nis のサービスなどが走っていないような場合 (例えば、ブート直後)は、NOTFOUND の状態ではなく、サービスが利用できない 状態(UNAVAIL)なので、次のターゲットであるローカルなファイルを参照するので、 立ち上がり時にも問題がない訳です。

このように、SunOS4.x などの NIS に比べて、Solaris の NIS はよりきめ細かい 制御が可能になっていますが、同時に思わぬ動作をすることもありますので 注意が必要です。

参考
これを逆用すると面白いことも出来ます。例えば、 nsswitch.conf の hosts エントリが次のようになっている場合を考えて下さい。
# /etc/nsswitch.conf:
    ...
hosts:      files nis
    ...

そして、/etc/hosts には test というホストが、IP アドレス A で登録されていて、 一方、nis には test というホストは IP アドレス B で登録されていたとします。 すると、このマシン上では、ホスト test は IP アドレス B ではなく、IP アドレス B としてアクセスしようとする訳です。つまり、一種のオーバーライドが可能なのですが、 勿論、注意深く行わないと混乱を招くことにもなります。



Noriyo Kanayama