8. NIS+ の設定

8.1. ソフトウェア

Linux の NIS+ クライアントコードは GNU C ライブラリのバージョン 2 用に 開発されてきました。かっては商用アプリケーションのほとんどが libc5 にリンクされていて、それらを glibc で再コンパイルすることはできなかったため、 この NIS+ コードを libc5 へ移植したものもあります。 ただし libc5 と NIS+ の組み合わせには問題があります。 スタティックなプログラムは libc5 にリンクすることはできませんし、 libc5 ライブラリ環境でコンパイルしたプログラムは 他のバージョンの libc5 (を使ったシステム) では動作しません。

ベースとなるシステムとして、Debian, Red Hat Linux, SuSE Linux のような glibc ベースのディストリビューションが必要です。 glibc 2.1.1 以降を備えていないディストリビューションを使っている場合は、 新しい版にアップデートする必要があります。

NIS+ クライアントのソフトウェアは以下から入手できます。

http://www.linux-nis.org/nisplus/ には、より詳細な情報と最新のソースがあります。

8.2. NIS+ クライアントのセットアップ

重要: NIS+ クライアントをセットアップする前に、 Solaris の NIS+ ドキュ メントを読んでサーバ側で必要な作業を行って下さい。この文書ではクライア ント側でどうすればよいかについてしか述べていません!

新しい libc と nis-tools をインストールしたら、 NIS+ サーバ上でこの新たなクライアント用の信任証 (credential) を作成します。 portmap が動作していることを確認するようにして下さい。 次にクライアントにする Linux PC の時刻が NIS+ サーバと一致しているかチェックして下さい。 secure RPC の場合は、信任証の有効期間は 3 分しかありません。すべてのホストで xntpd を走らせるのが良いでしょう。 これらが確認できたら以下を実行します。

domainname nisplus.domain.
nisinit -c -H <NIS+ server>

これによって cold スタートファイルが初期化されます。 他のオプションについては nisinit のマニュアルページを読んで下さい。 ドメインネームはリブートのたびに設定されるようにしておいて下さい。 あなたのネットワークの NIS+ ドメインネームがわからない場合は、 システムかネットワークの管理者に尋ねて下さい。

次に /etc/nsswitch.conf ファイルを変更します。 publickey に書けるサービスは nisplus だけ ("publickey: nisplus") で、 他のものは書いてはならないことに注意して下さい。

次に keyserv を起動して下さい。これはブート時に、 必ず portmap の直後に起動されるようにしておいて下さい。こうして
keylogin -r
とすればシステムの root の秘密鍵が保管されます (もうこの新しいホストの公開鍵を NIS+ のサーバに追加しましたよね?)。

niscat passwd.org_dir とすれば、 passwd データベースのすべてのエントリを見ることができるはずです。

8.3. NIS+ と keylogin, login, PAM

ログインしたときに、ユーザは自分の秘密鍵を keyserv にセットする必要があります。 これには keylogin を用います。 glibc 2.1 とコンパイルした場合には、 shadow パッケージの login はこれをユーザの代わりに実行してくれます。 PAM を認識する login を用意するには、 pam_keylogin-1.2.tar.gz をインストールし、 /etc/pam.d/login ファイルを変更して pwdb の代わりに pam&_unix_auth を使うようにする必要があります (pwdb は NIS+ をサポートしません)。例を示します。

#%PAM-1.0
auth       required	/lib/security/pam_securetty.so
auth       required	/lib/security/pam_unix2.so       set_secrpc
auth       required	/lib/security/pam_nologin.so
account    required	/lib/security/pam_unix2.so
password   required	/lib/security/pam_unix2.so
session    required	/lib/security/pam_unix2.so

8.4. nsswitch.conf ファイル

ネットワークサービススイッチのファイル /etc/nsswitch.conf は、 情報へのアクセス要求が来たときに行う検索の順番を決定するものです。 ホスト名の検索で用いられる /etc/host.conf ファイルと似ています。 例えばこのファイルにおいて

hosts: files nisplus dns

と指定すれば、ホスト名の検索機能はまずローカルの /etc/hosts ファイルを探し、次に NIS+、そしてドメインネームサービス (/etc/resolv.confnamed) と言う順番で検索を行います。 最後までマッチするものがなければエラーが返されることになります。

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: nisplus
group_compat:  nisplus
shadow_compat: nisplus

hosts:      nisplus files dns

services:   nisplus [NOTFOUND=return] files
networks:   nisplus [NOTFOUND=return] files
protocols:  nisplus [NOTFOUND=return] files
rpc:        nisplus [NOTFOUND=return] files
ethers:     nisplus [NOTFOUND=return] files
netmasks:   nisplus [NOTFOUND=return] files
netgroup:   nisplus
bootparams: nisplus [NOTFOUND=return] files
publickey:  nisplus
automount:  files
aliases:    nisplus [NOTFOUND=return] files