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 はよりきめ細かい 制御が可能になっていますが、同時に思わぬ動作をすることもありますので 注意が必要です。
# /etc/nsswitch.conf: ... hosts: files nis ...
そして、/etc/hosts には test というホストが、IP アドレス A で登録されていて、 一方、nis には test というホストは IP アドレス B で登録されていたとします。 すると、このマシン上では、ホスト test は IP アドレス B ではなく、IP アドレス B としてアクセスしようとする訳です。つまり、一種のオーバーライドが可能なのですが、 勿論、注意深く行わないと混乱を招くことにもなります。