最初の NIS マップは、次のコマンドを実行して生成します。
% /usr/lib/yp/ypinit -m |
これは NIS マスターサーバをはじめて設定したときに行います。 これに関する詳細は Section 9 を見てください。 サーバに新しいマップを追加したり、古いマップを削除したりしたい場合は、 /var/yp/Makefile を編集して all: ルールを変更します。 マップを生成するルールの名前をここに追加・削除します。
マップを削除する場合は、対応する実際のファイルも削除しなければなりません。
この変更を行ったら、
% make -C /var/yp |
を実行すればマップが生成されるはずです。
NIS マップのソースを変更したら (例えば新しいユーザのアカウントを passwd ファイルに追加した場合など)、 NIS マップを再生成する必要があります。 単に次のコマンドを実行するだけです。
% make -C /var/yp |
このコマンドはどのソースが変更されたかを調べ、 新しいマップを生成し、ypserv にマップが変更されたことを伝えます。
NIS プロトコルでは、ひとつのエントリの長さは 1024 文字までに制限されています。 この値を単純に増やして再コンパイルすることは出来ません。 NIS v2 を使っているシステムはすべて、 キーとデータの値が 1024 バイト以下のサイズに収まることを想定しているためです。 自分の管理しているクライアントとサーバで 突然 YPMAXRECORD を増やすと、 ネットワークで NIS を利用している他のマシンとの 相互運用性を損なうことになります。 正しく動作させるには、NIS をサポートしているすべてのベンダのところにいって、 同時に変更を行わせる必要があります。 まずこんなことは無理でしょう。
glibc 2.1 以降では、この制限は glibc の NIS 実装からは無くなっています。 従って Linux では、より長いエントリを利用できます。 しかしこれは上記の通り、 ネットワークに他の NIS クライアントやサーバが無い場合に限ります。
長いエントリの NIS マップを生成するには、 /var/yp/Makefile が makedbm を呼ぶ際に、 --no-limit-check オプションを追加するようにします。
以下のような感じになります:
DBLOAD = $(YPBINDIR)/makedbm -c -m `$(YPBINDIR)/yphelper --hostname` --no-limit-check |
警告: この変更は NIS プロトコルに反しています。 Linux 自身はサポートしているとはいえ、 Linux 上で動作するアプリケーションが、 この変更後に動作するかどうかはわかりません!
/etc/group エントリの場合には、 この問題を回避するための別法があります。 このアイディアは Ken Cameron から寄せられました。
1. エントリを複数の行に分け、各グループの名前をちょっとずつ 変えます。 2. この各グループの GID は全部同じにします。 3. 最初のエントリには、正しいグループ名と GID を与えます。 私はここにはユーザ名は置かないようにしています。 この結果、プログラムがこのマップを読むと、指定したユーザ名に対して GID が帰ります。次に GID にマッチする最初のエントリを見つけると、 その名前を返して停止します。美しくはありませんが、動作します! |