This page is written in Japanese euc character set.
If you want information in English, try Linux NIS(YP) Server page.

NIS の設定

NIS 関連の情報源や、 手元のサーバへのインストール記録などを書いています。 主に Linux 向け。

目次

kernel.org のミラーについて

まず NIS-HOWTO を見てきていただいた方のために、 kernel.org のミラー情報から。

国内では Ring Server Project が kernel.org のミラーを行っています。 NIS 関連のディレクトリは

	/pub/linux/kernel.org/utils/net/NIS/

です。 上記の URL で負荷の軽いサーバが自動的に選択されますが、 サーバによってはこのディレクトリがないかもしれません。 その場合は上記 web ページから適宜探してください。

インストール

歴史的な経緯から止むを得なかったのですが、 間抜けなことに NIS のサーバは IP reachable な surf になっています。 したがって以下ではアクセス制限をするためのインストールをしてます。

以下の順に記述します。

  1. TCP wrapper のライブラリ libwrap.a を作る
  2. portmapper をコンパイルする
  3. ypserv をコンパイルする
  4. サーバで各種ファイルを設定する
  5. クライアントのコンパイル
  6. クライアントの設定

libwrap.a のコンパイル

RPC の利用が ypserv だけでしたら特に TCP-wrapper を使わなくても良いのですが、 NFS とかも使っているので作ることにしました。 最新版は 7.6 のようです。 archie で検索してみたところ、 国内ではたとえば以下に置かれていました。

	ftp://ftp.chiba-u.ac.jp/pub/security/tools/tcp_wrapper/

これを make してできた libwrap.a を /usr/local/lib へ、 また各ヘッダファイルを /usr/local/include へそれぞれ移動します。

portmapper のコンパイル

最近の Linux 配布パッケージ入っている portmap は、 ほとんどこの libwrap を使ってコンパイルされたものになっていると思いますが、 念のため作り方も書いておきます。 このあたりの詳細は Linux Security FAQ から #1 をご覧になってください。

secure な portmapper のソースは TSX-11 にあります。国内のミラーとしては

	ftp://ftp.iamas.ac.jp/Linux/sources/sbin/

などがあります。ここから

を落とし、以下のように展開します。

	mkdir portmap && cd portmap
	zcat ../portmap_3.shar.gz | unshar
	patch -p1 < ../portmap_3.patch

libwrap.a の置き場所は Makefile で指定します。 上述のように /usr/local/lib に置いた場合は Makefile の中身を

	WRAP_DIR= /usr/local/lib

のように変更しておきます。

	make clean
	make

で portmap, pmap_dump, pmap_set の三つのプログラムができます。 portmap は Slackware の流儀に合わせるなら /usr/sbin/rpc.portmap として、他の2つも /usr/sbin 辺りに置いておきましょう。

現在すでに動いているポートマッパがある場合は、

	/usr/sbin/pmap_dump > portmap-file
	killall rpc.portmap
	/usr/sbin/rpc.portmap
	/usr/sbin/pmap_set < portmap-file

のようにします。 "rpcinfo -p" でリストが出るようなら OK です。 他のサーバを "rpcinfo -p <server>" で引けるかどうかも 確認しておくと良いでしょう。 起動時には rpc.portmap を実行するだけです。

ypserver のコンパイル

続いて ypserver を作ります。ソースは kernel.org の NIS ディレクトリ に最新版があります。

ファイル名は ypserv-*.tar.gz です。 1.2.x から yppasswdd のクライアントと サーバーが同一パッケージに入るようになりました。

アーカイブを展開して INSTALL に従えば問題無く作成できると思います。 上述の tcp wrapper を用い、 yppasswd を一緒に作る場合は以下のようになります。

	./configure --enable-tcp-wrapper=/usr/local --enable-yppasswd
	make
	make install

サーバの設定

まずアクセス制限のために、/etc/hosts.deny に

	portmap: ALL
	ypserv: ALL

という行を書きます。 そして(例えば) 192.168.1.* のホストからのアクセスを許可するようにするには、 /etc/hosts.allow に

	portmap: 192.168.1.
	ypserv: 127.0.0.1 192.168.1.

のように記述します。 詳細は ypserv パッケージの README.secure や、 tcp-wrapper パッケージによってインストールされるマニュアル hosts_access.5 などを参照してください。

ソースディレクトリ下 etc/ypserv.conf ファイルを編集し、 /etc/ypserv.conf としてコピーします。 書式は ypserv.conf.5 のマニュアルページにあります。 Linux ユーザで shadow passwd を使っていなければ、 変更の必要は無いでしょう。

/var/yp/Makefile を編集します。特に all: ターゲットのうち、 NIS で流さないものはコメントアウトしておくようにしましょう。 また古いシステムを使っている人は、MINUID と MINGID を変更しないと うまくいかない場合があるかもしれません。

以上を作ってから、

	nisdomainname MYDOMAINNAME
	ypinit -m

で NIS データベースの構築と ypserv の起動が行われます。 MYDOMAINNAME には他人から推測されにくい文字列を使うことが推奨されています。 (が、実際にはグループ内のユーザからは丸見えなので、あまり意味はないで しょう)。

あとは起動時に

	nisdomainname MYDOMAINNAME
	ypserv

を実行するように /etc/rc.d/rc.inet2 あたりに記述をしておきます。

また yppasswdd に関しては

	rpc.yppasswdd -p /etc/passwd -e chsh -e chfn

を起動時に実行しておきます。-e のオプションをつけないと、 ypchsh や ypchfn が使えなくなります。 また当然ですが、自分のホストの ypserver に接続できないと passwd の更新はできませんので、アクセス制限に注意して下さい。

hosts.allow と hosts.deny を利用した yppasswdd へのアクセス制限も できます。このときはカテゴリ名を yppasswdd: とします。

クライアントのコンパイル

以下、いずれも kernel.org の NIS ディレクトリ より入手します。

まず yp-tools-*.tar.(gz|bz2) を入手し、 configure; make; make install します。

続いて ypbind です。 libc5 の場合は ypbind-*.tar.(gz|bz2) を入手し、 make; make install です。

glibc2 の ypbind は ypbind-mt-*.tar.(gz|bz2) の方になります。 configure; make; make install で作成・インストールします。

クライアントの設定

続いて設定になります。 サーバを指定するために /etc/yp.conf に以下のような内容を記述しておきます。

	ypserver {servername}

servername は gethostbyname(3) によって resolve されるものなら OK ですが、IP アドレスで指定しておくことをおすすめします。

次にホスト名の解決順を指定するために /etc/host.conf を編集しておきます。 私のところでは以下のようになっています。

	order hosts bind nis
	multi on

それぞれ

hosts
/etc/hosts による解決
bind
DNS による解決
nis
NIS による解決

を意味します。 できれば /etc/hosts に最小限必要な記述を行い、 最初に指定しておくのが良いと思います。

glibc2 (libc6) を使っている場合には、 /etc/passwd /etc/nsswitch.conf も正しく 設定しなくてはなりません。これについては下記 NIS-HOWTO や、 最近の LDP man-pages に入っている nsswitch.conf.5 を参照して下さい。

libc-4.6.27 以上, libc-5 までをお使いの場合は、 クライアントの passwd、group の最後に "+" の行をつけます。 通常の教科書にあるように、"+:*:0:0:::" をつけると失敗します。 このあたりは libc のリリースノートや、 yp-clients の README を見て下さい。 (上記は glibc2 の "compat" モードでも使用できます)。

あとは起動時に

	nisdomainname MYDOMAINNAME
	ypbind

を実行すれば OK です。 なお portmapper が ypbind に先立って実行されている必要があります。

NIS 関連の情報

現在の Linux 向け NIS の開発は ドイツ S.u.S.E. 社 の Torsten Kukuk 氏によって行われています。 関連ソフトや shadow パスワードシステムで NIS を使うときに参考になる情報などが Linux NIS(YP) Server のページに非常に見通し良くまとめられています。

NIS-HOWTO という文書も出ています。 JF プロジェクト のページには私が翻訳したもの ( テキスト版 | html 版 ) も登録されています。 Linux での NIS 開発の中心にいる Kukuk さんが メンテしてくれるようになりましたので、安心して読めます。

おまけ

JM プロジェクト の配布アーカイブには、

などの和訳マニュアルが同梱されてますので、宜しければどうぞ :-)


文責:中野武雄(2001.03.31 更新)

「Linux 私家版管理メモ」へ