これまで見てきたように NIS で参照されるか、ローカルで参照されるかは nsswitch.conf で決まります。そして、スレーブ・サーバを含めてクライアント マシンでは、ローカルな設定と NIS での設定が矛盾しなければ、同一の設定 でなくても構わない訳です( nsswitch.conf の書き方では矛盾しても問題ない 場合もあります)。例えば、NIS で配布している group 以外の group をあるマシン上で設定したり、あるマシン上でのみその group に所属するような 設定が可能です。しかし、ここには一つ問題があります。それは、マスター・ サーバ上では一致してしまうという問題です。マスター・サーバ上では、 /etc/group ファイルを元にして、NIS の group map を作成するために、必然的に NIS の内容とローカルなファイルの内容は一致してしまいます。場合によっては、 マスター・サーバ上でも、ローカルな設定と NIS の設定を異なるものにしたい 場合があるでしょう。これは不可能かと言うと、そうではありません。 NIS map を生成するファイルを変更すれば良いのです。では、どうやれば変更出来る かですが、先に見た /var/yp/Makefile が鍵を握っています。本学で使用している Makefile の中の group に関する部分を見てみましょう。
group.time: /var/yp/group.yp @(awk 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ { print $$1, $$0 }' \ /var/yp/group.yp $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/group.byname; @(awk 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ { printf("%-10d ", $$3);\ print $$0 }' /var/yp/group.yp $(CHKPIPE)) | \ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/group.bygid;
ここでポイントとなるのは、/var/yp/group.yp です。元々の Makefile では、ここは /etc/group になっていたのです。つまり、これによって NIS の group map は /var/yp/group.yp から生成されていることになります。従って、サーバー上でも /etc/group と NIS group map が参照されることになるので(参照の順序などは nsswitch.conf で決まります)、サーバーでは必要な group のみを記述し、NIS 上で共通な部分を配るようになっています。
元々、本学でこうした運営を始めた理由は、機種の違いを乗り越えるためでした。 OS やメーカが違うと、基本的な group の番号ですら違うことがあります。そのために、 それらを矛盾なく NIS 上で扱うために、OS やマシンの違いはローカルに持ち、 本学の環境全体に共通な部分を NIS で配るようにした訳です。同じように、 NIS map とローカルとを区別しているものに aliases があります。こちらは、group の場合と少し理由が違い、メイリングリストの運用のために分離しています (詳しくは、Mail の章で扱います)。