まず以下の二つの場合を考える必要があります。
最初のケースでは ypbind、 ypwhich、 ypcat、 yppoll、 ypmatch といっ
たクライアントプログラムを起動するだけで使えるようになります。一番重
要なのは ypbind で、このプログラムは常時に実行されている必要があり
ます(つまり ps コマンドを実行したときにプロセステーブルに表示されな
ければなりません)。 ypbind はいわゆるデーモンプロセスというもので、
/etc/rc.d/rc.local のようなシステムのスタートアップファイルか
ら起動する必要があります。 ypbind が起動されれば、その計算機は
その時点から NIS クライアントとなります。
二番目のケース、つまり NIS サーバがない場合には、NIS サーバプログラム
(通常は ypserv)も必要となります。この文書の
NIS サーバの設定の章では、 Linux マシンを
NIS サーバに設定する方法について説明しています。ここでは Peter
Eriksson と Thorsten Kukuk による ypserv の実装を用いています。
この実装の 0.14 以降の版では
NIS の動作原理
の節で触れたマスター/スレーブ機能をサポートしています。
他にもフリーな NIS サーバがあります。 yps というプログラムで、ド
イツの Tobias Reber によって書かれたものです。マスター/スレーブ機能を
備えていますが、それ以外の点に制限があります。
システムライブラリ /usr/lib/libc.a (バージョン 4.4.2 以上)、
もしくはシェアードライブラリ /usr/lib/libc.sa と同バージョン
の DLL には、 NIS のクライアントやサーバのプログラムをコンパイルするの
に必要なシステムコールがすべて含まれています。 glibc 2.x 用には
/lib/libnsl.so.1 も必要です。
NIS は /usr/lib/libc.a バージョン 4.5.21 以上でしか動かないと
いう報告がありますので、安全のためには古いものは使わない方が良いでしょ
う。 NIS のクライアントプログラムは以下の場所で入手できます。
yp-clients-2.2.tar.gz、 ypbind-3.3.tar.gz があります。
yp-tools-1.2.tar.gz、 ypbind-3.3.tar.gz があります。
yp-tools-1.2.tar.gz があります。
yp-clients-2.2.tar.gz があります。ソフトを手に入れたら、一緒に付いてくる説明にしたがって下さい。 yp-clients 2.2 は libc4 または 5.4.20 までの libc と共に用いて下さい。 libc 5.4.21 以降と glibc 2.x には yp-tools 1.2 が必要です。 ypbind 3.3 はすべてのライブラリで動作します。 yp-clients 2.2 に入っている ypbind は決して使わないようにして下さい。
ソフトはうまくコンパイルされ、インストールの準備ができたとしましょう。
ypbind デーモンは /usr/sbin に入れると良いでしょう。 NYS
のシステムで
は ypbind は必要ないと言う人がいるかもしれませんが、これは間違いです。
ypwhich と ypcat には ypbind が必要です。
ypbind のインストールはもちろんスーパーユーザで行う必要があります。他
のバイナリ(ypwhich, ypcat, yppoll, ypmatch)はすべてのユーザーからア
クセス可能なディレクトリにおきましょう。通常は /usr/bin が良
いでしょう。
ypbind には設定ファイルがあります。 /etc/yp.conf です。ここに
NIS サーバを直に書いておくこともできます。詳しくは ypbind(8) のマニュ
アルを読んで下さい。このファイルは NYS でも必要です。以下は例です。
ypserver voyager
ypserver ds9
NIS なしでもホスト名の解決ができるシステムでは、 IP アドレスでなく名前 を用いることができます。そうでなければ IP アドレスを用います。
ypbind を /etc/rc.d/ のファイルに入れる前にテストしてお
くことをお勧めします。 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
ここまで来れば ypcat のような NIS クライアントプログラムを実行す
ることができるはずです。 例えば NIS のパスワードデータベースを参照した
い場合には、 "ypcat passwd" とします。
重要: もし上述の ypbind のテストを飛ばした場合、少なくともドメイ
ンネームが設定してあることと /var/yp という名前のディレクトリ
が作ってあることを確認して下さい。 /var/yp がないと
ypbind は正常に起動されません。
テストがうまくいったら /etc/rc.d にあるファイルを変更して、ブー
ト時に ypbind が起動されるようにしておくと良いでしょう。自動的に NIS クラ
イアントとしての活動が開始されます。ドメインネームがブート時に設定され
るようにするのを忘れないこと。
以上で設定は終了しました。リブートしてから、ブートメッセージで
ypbind が正常に動作しているかどうか確認して下さい。
ホストの名前解決に NIS を用いるには、 /etc/host.conf ファイル
で解決順を指定するラインに "nis" を指定(または追加)
して下さい。
詳細に付いては resolv+(8) のマニュアルを読んで下さい。
以下の行を NIS クライアントの /etc/passwd に追加して下さい。
+::::::
また + や - といった文字を使うことで、ユーザーを追加/削除したり、状態
を変更したりすることができます。例えばユーザ guest を削除したいな
ら /etc/passwd ファイルに -guest を追加すれば OK です。
ユーザ "linux" に違ったシェル(例えば ksh)を使わせた
いですって?大丈夫、 "+linux::::::bin/ksh"/ を
/etc/passwd に追加するだけです(引用符は取って下さい)。変更
したくないフィールドは空のままにしておく必要があります。
ユーザのコントロールにはネットグループを用いることもできます。
例えば「ログインアクセスを miquiels、 dth、 ed とネットグループ
sysadmin
のメンバーだけに限りたいが、アカウントデータは他のユーザ全員分が必要」
というような場合は以下のようになります。
+miquels:::::::
+ed:::::::
+dth:::::::
+@sysadmins:::::::
-ftp
+:*::::::/etc/NoShell
Linux ではパスワードのフィールドも上書きできることに注意して下さい。や
り方は今の例と全く同じです。この例では "ftp" のログインも
削除しています。従ってこのユーザは存在せず、 anonymous ftp は機能しな
くなります。
/etc/netgroup ファイルは以下のようになっていると思います。
sysadmins (-,software,) (-,kukuk,)
重要:ネットグループの機能は libc 4.5.26 以降で実装されました。 4.5.26
以前の libc を使っている場合には、 NIS のパスワードデータベースにエン
トリを持つすべてのユーザは、ypbind が実行された Linux マシンにア
クセスできてしまいます。
必要なのは NIS の設定ファイル(/etc/yp.conf)で正しいサーバ(群)から
情報をもらえるようにしておくこと、そしてネームサービススイッチの設定ファ
イル(/etc/nsswitch.conf)を正しく設定することです。
ypbind もインストールしておきましょう。 libc には必要ありませんが、
NIS(YP) tools では ypbind が必要になります。
ユーザの追加・排除機能(+/-guest/+@admins)を用いたい場合は、
"passwd: compat" と "group: compat"
を用いる必
要があります。 "shadow: compat" という指定はありませ
ん。この場合は "shadow: files nis" のようにして下さい。
glibc は trad-NIS を利用します。従って ypbind を起動する必要があります。
またネームサービススイッチの設定ファイル(/etc/nsswitch.conf)
も正しく
設定する必要があります。 passwd、 shadow または group に
compat モード
を使う場合は、これらのファイルの最後に "+" を追加する必要
があります。またユーザの追加・削除機能を用いることもできます。設定は
Solaris 2.x のものとまったく同じです。
ネットワークサービススイッチのファイル /etc/nsswitch.conf は
情報へのア
クセス要求が来たときに行う検索の順番を決定するものです。ホスト名の検索
で用いられる /etc/host.conf ファイルと似ています。例えばこの
ファイルにおいて
hosts: files nis dns
と指定すれば、ホスト名の検索機能はまずローカルの /etc/hosts ファイルを
探し、次に NIS、そしてドメインネームサービス(/etc/resolv.conf と
named)という順番で検索を行います。最後までマッチするものがなければ、
エラーが返されることになります。
NIS 用の /etc/nsswitch.conf ファイルとしては、以下のようなものが良いで
しょう。
# # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # The entry '[NOTFOUND=return]' means that the search for an # entry should stop if the search in the previous entry turned # up nothing. Note that if the search failed due to some other reason # (like no NIS server responding) then the search continues with the # next entry. # # Legal entries are: # # nisplus Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # passwd: compat group: compat shadow: compat passwd_compat: nis group_compat: nis shadow_compat: nis hosts: nis files dns 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 netgroup: nis bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files automount: files aliases: nis [NOTFOUND=return] files
passwd_compat、 group_compat、 shadow_compat は glibc 2.x でのみサポー
トされています。 shadow に関するルールが /etc/nsswitch.conf にない場合
は、 glibc は passwd の探索ルールを用います。glibc には hesoid といっ
たような、多少多くの探索モジュールが存在します。詳しくは glibc のドキュ
メントを読んで下さい。