マスターサーバ、スレーブサーバ、クライアントを決めるにあたっては、以下 の二つの場合が考えられます。
最初のケースでは ypbind、 ypwhich、 ypcat、 yppoll、 ypmatch といっ
たクライアントプログラムを起動するだけで使えるようになります。一番重
要なのは ypbind で、このプログラムは常時に実行されている必要があり
ます(つまり ps コマンドを実行したときにプロセステーブルに表示されな
ければなりません)。 ypbind はいわゆるデーモンプロセスというもので、
/etc/rc.d/rc.local のようなシステムのスタートアップファイルか
ら起動する必要があります。 ypbind が起動されれば、その計算機は
その時点から NIS クライアントとなります。
二番目の場合、つまり NIS サーバがない場合は、通常 ypserv と呼ばれ
るような NIS のサーバプログラムが必要になります。
NIS サーバの設定
の章では、 Peter Eriksson <peter@ifm.liu.se> が実装した
ypserv を用いて、 Linux マシンを NIS サーバにする方法について述べ
ています。 ypserv ではバージョン 0.14 からマスター/スレーブ機能
(
動作原理
の章で述べました)がサポートされています。
他にもフリーな NIS サーバがあります。 yps というプログラムで、ド
イツの Tobias Reber によって書かれたものです。マスター/スレーブ機能を
備えていますが、それ以外の点に制限があります。
システムライブラリ /usr/lib/libc.a (バージョン 4.4.2 以上)、
もしくはシェアードライブラリ /usr/lib/libc.sa と同バージョン
の DLL には、 NIS のクライアントやサーバのプログラムをコンパイルするの
に必要なシステムコールがすべて含まれています。
訳注:最近の ELF 版 libc にもちゃんと入っています。
NIS は /usr/lib/libc.a バージョン 4.5.21 でしか動かないという
報告がありますので、安全のためには、バージョン 4.5.21 以上のものを使う
ようにすると良いでしょう。 NIS のクライアントプログラムは以下の場所で
手に入れることができます。
ファイル名は yp-clients-?.?.tar.gz となっているはずです。
訳注:国内では
ftp://sunsite.sut.ac.jp が
sunsite.unc.edu をミラーしています。
また libc-5.4.21 などの最新の libc を以上を使う場合は、この
yp-clients では問題が起こることがあるそうです。この場合は
libc の配布ディレクトリにある
yp-clients-2.2-(date-string).tar.gz を用いて下さい。
ソフトを入手したら、含まれているドキュメントに従って作業を行って下さい。
ここでは、使用するクライアントプログラムがすでにコンパイルされており、
インストールできる状態にあるものとして話を進めていきます。 ypbind
デーモンは /usr/sbin に入れておくのが良いでしょう。
この作業はもちろんスーパーユーザになって行います。 ypwhich、
ypcat、 yppoll、 ypmatch といったものは、すべてのユーザ
が使えるディレクトリに置いて下さい(/usr/local/bin などが良い
でしょう)。 ypbind を /etc/rc.d/rc.inet2 に組み込む前
にテストをしてみることをお勧めします。
ypbind のテストは以下のような手順で行います。
/bin/domainname-yp nis.domain
nis.domain は通常適当な文字列で、あなたのマシンのドメインネーム
とは違うものにすべきです。こうしておけば、外部のクラッカーがサーバから NIS パ
スワードデータベースを盗んでいくのがわずかながら困難になります。 NIS
ドメイン名を知らない場合はシステム管理者かネットワーク管理者に尋ねて下
さい。
/usr/sbin/rpc.portmap が起動されていなければ起動します。
/var/yp というディレクトリがなければ作成します。
/usr/sbin/ypbind を起動します。
ypbind がサービス内容をポートマッパに登録できたかどうか確か
めるために、 "rpcinfo -p localhost" というコマンドを
実行して下さい。以下のような表示が現われるはずです。
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100007 2 udp 637 ypbind
100007 2 tcp 639 ypbind
300019 1 udp 660
"rpcinfo -u localhost ypbind" も実行してみて下
さい。以下のような表示が出るはずです。
program 100007 version 2 ready and waiting
最後に /etc/host.conf の検索列に "nis" を設
定(または追加)するのを忘れないで下さい。詳しくはマニュアルページ
"resolv+.8" を参照して下さい。
ここまで来れば ypcat のような NIS クライアントプログラムを実行す
ることができるはずです。 例えば NIS のパスワードデータベースを参照した
い場合には、 "ypcat passwd" とします。
重要: もし上述の ypbind のテストを行なわなかった場合には、ドメイ
ンネームが設定してあることと /var/yp という名前のディレクトリ
が作ってあることを確認して下さい。 /var/yp がないと
ypbind は正常に起動されません。
テストが終了したら、ブート時に ypbind を起ち上げて自動的に
NIS クライアントにするための設定を行います。まず
/etc/rc.d/rc.M から、ドメイン名を設定している箇所をみつけ、自
分のドメインネームを設定するように書き換えて下さい。次に
/etc/rc.d/rc.inet2 の中から rpc.portmap デーモンが起動さ
れる部分を見つけて、コメントアウトを解除し、直後に以下のコマンドを追加
して下さい。
#
# Start the ypbind daemon
#
if [ -f ${NET}/ypbind -a -d /var/yp ]; then
echo -n " ypbind"
${NET}/ypbind
fi
/etc/passwd や /etc/group への記述は Sun の NIS の実
装とは少々異なります。 Sun では /etc/passwd に
"+:*:0:0:::"、 /etc/group に
"+:*:0:" などと記入しますが、 Linux 版では
"+" を最後に追加するだけです。
訳注:原文では passwd ファイルに変更はいらない旨の記述になっていま
すが、 libc-4.6.27 以降では + が必要です。
以上で設定は終了しました。リブートしてから、ブートメッセージで
ypbind が正常に動作しているかどうか確認して下さい。
重要: ネットグループ機能は libc 4.5.26 から導入されました。ネット
グループは NIS ドメイン内のすべてのマシン、すべてのユーザに対するアクセス
管理を可能にするもので、 /etc/passwd に以下のようなエントリが
入ります。
+@this_machine_users
4.5.26 以前の libc を用いている場合には、このようにして
ypbind を動かすと、 NIS パスワードデータベースに入っているすべての
ユーザがあなたのマシンにアクセスできてしまいます。