この文書では、 NIS サーバとしては "ypserv
" の
設定方法のみを記します。
NIS サーバのソフトは以下にあります。
ypserv-1.3.6.tar.gz
です。http://www.suse.de/~kukuku/linux/nis.html には、より詳しい情報があります。
サーバのセットアップ方法は trad-NIS、 NYS どちらの場合でも同じです。
コンパイルして ypserv
と makedbm
を作ります。
securenets ファイルを使うか tcp_wrappers を使うかを設定できます。
tcp_wrapper の方がずっと柔軟ですが、これが問題の原因となる場合も
多く知られています。 tcp_wrapper 用の設定ファイルの書き方によっては
メモリーリークを起こすこともあります。もし tcp_wrapper を使うように
ypserv をコンパイルして問題が起こった場合には、 securenets ファイルを
用いるようにコンパイルしなおしてください。 ypserv --version とすれば
どちらのバージョンを使っているか分かります。
サーバをマスターとして起動する場合は、NIS を用いて共有させる
ファイルを決めてください。そして /var/yp/Makefile
の
"all" ルールに必要なものを加えたり、不要なものを削除したりしてください。
また Makefile の先頭の方も必ず見て、オプションを自分の環境に
あわせて編集しておくべきです。
ypserv 1.1 と ypserv 1.2 との間では、大きな変更が行われました。
1.2 以降では、ファイルハンドルがキャッシュされるようになったのです。
これにより、新しいマップを生成するときには必ず makedbm に -c
オプションをつけなければならなくなりました。
/var/yp/Makefile
が ypserv 1.2 以降に付属のものであることを
確認して下さい。あるいは Makefile 中の makedbm に、手で -c フラグを
加えて下さい。これを忘れると、ypserv は更新されたマップではなく、
古いマップを使い続けてしまいます。
次に /var/yp/securenets
と /etc/ypserv.conf
を編集します。詳細に関しては、
ypserv(8) と ypserv.conf(5) のマニュアルページを読んで下さい。
ポートマッパ (rpc.portmap
) が動いているか確認して下さい。確認でき
たら ypserv
を動かします。
% rpcinfo -u localhost ypserv
というコマンドを実行してみて、
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
と出力されることを確認して下さい。
"version 1" の行は、 ypserv のバージョンや用いた設定によっては 出ないかもしれません。これが必要になるのは昔の SunOS 4.x を クライアントとして使う場合だけです。
ここで NIS (YP) データを作成します。マスターサーバで以下を実行して下さい。
% /usr/lib/yp/ypinit -m
スレーブサーバでは、 ypwhich -m
が機能することを確認して下さい。
つまりスレーブにするホストは、まず NIS クライアントとして動作できなけ
ればならないのです。確認できたら以下を実行します。
% /usr/lib/yp/ypinit -s masterhost
これでおしまい、サーバは動作しているはずです。
何か大きな問題が生じたら、 ypserv
や ypbind
を別の xterm からデバッグモードで起動してみましょう。デバッグ出力から
何が問題なのかが判断できるはずです。
マップを更新する必要が生じた場合は、 NIS マスターの
/var/yp
ディレクトリで make
を実行してください。
ソースファイルが新しい場合にはマップが更新され、スレーブサーバに
push されます。マップの更新には ypinit
は用いないように
してください。
「スレーブ」サーバ上では root の crontab
を編集し、以下のような行
を追加しておくと良いかもしれません。
20 * * * * /usr/lib/yp/ypxfr_1perhour
40 6 * * * /usr/lib/yp/ypxfr_1perday
55 6,18 * * * /usr/lib/yp/ypxfr_2perday
万が一マスタサーバでの更新の際にスレーブがダウンしていてデータを
受け損なっても,これによって NIS マップを最新に保つことができます。
スレーブはいつでも追加することができます。まず新しくインストールした スレーブサーバが NIS マスターに接続する許可を持っているかを確認しましょう。 次に
% /usr/lib/yp/ypinit -s masterhost
を新しいスレーブで実行します。マスターサーバでは、この新しいスレーブ
サーバの名前を /var/yp/ypservers
に追加し、 /var/yp
で make
を実行してマップを更新します。
NIS サーバへのユーザアクセスを制限したい場合は、 NIS サーバのホストをク
ライアントとしても実行する必要があります。つまり ypbind
を実行し
て +
の付いたエントリをパスワードファイル /etc/passwd
の
半ばに追加します。
ライブラリ関数は NIS エントリ以降に置かれた通常のエントリを全て無視し、
残りを NIS を通して取得します。このようにすると NIS のアクセスルールを
管理することができます。例を示します。
root:x:0:0:root:/root:/bin/bash
daemon:*:1:1:daemon:/usr/sbin:
bin:*:2:2:bin:/bin:
sys:*:3:3:sys:/dev:
sync:*:4:100:sync:/bin:/bin/sync
games:*:5:100:games:/usr/games:
man:*:6:100:man:/var/catman:
lp:*:7:7:lp:/var/spool/lpd:
mail:*:8:8:mail:/var/spool/mail:
news:*:9:9:news:/var/spool/news:
uucp:*:10:50:uucp:/var/spool/uucp:
nobody:*:65534:65534:noone at all,,,,:/dev/null:
+miquels::::::
+:*:::::/etc/NoShell
[ All normal users AFTER this line! ]
tester:*:299:10:Just a test account:/tmp:
miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh
このようにユーザ "tester" は存在しますが、シェルが /etc/NoShell
になります。 miquels
は通常のアクセス権を持つことになります。
別法として、 /var/yp/Makefile
ファイルを編集し、 NIS が使うパス
ワードファイルを別に指定することができます。大きなシステムでは、 NIS
のパスワードファイルとグループファイルは通常 /var/yp/ypfiles
に置くことが多いようです。このようにするとパスワードファイル関連の管理ツールは
使えなくなります。つまり passwd
, chfn
, adduser
などに対し、
特別なツールが必要になります。
しかし yppasswd、 ypachsh、 ypchfn
は当然動作します。
NIS サーバ yps
の設定は前のセクションを参考にして下さい。大体似て
いますが完全に同じではないので、ypserv
の説明を適用する際には注意
するようにして下さい。 yps
はもはや誰もサポートしていませんし、い
くつかセキュリティホールも存在しています。使うべきではありません!
yps
のソフトは以下のサイトにあります。
ファイル名は
yps-0.21.tar.gz
です。
rpc.ypxfrd は非常に大きな NIS マップを NIS マスターから NIS スレーブサーバーに転送する際に、転送を高速化するために 用いられます。 NIS スレーブサーバーは、新しいマップがあるというメッセージを 受け取ると、そのマップを取得するために ypxfr を起動します。 ypxfr は yp_all() 関数を用いてマップの内容をマスターサーバー から読み込もうとします。この情報はデーターベースライブラリを 通して保存されるため、マップのサイズが非常に大きくなると、 このプロセスは数分もかかってしまうことがあります。
rpc.ypxfrd サーバーは、 NIS スレーブサーバーにマスターの マップファイルを単純にコピーさせ、転送プロセスを高速化します。 スレーブサーバーがゼロから自前のマップを生成するのに比べ、 これはずっと短時間ですみます。 rpc.ypxfrd は RPC ベースの転送プロトコルを用いるので、 新しいマップを生成する必要はありません。
rpc.ypxfrd は inetd から起動することもできますが、 起動には時間がかかるので、 ypserv と一緒にデーモンとして 起動しておくほうがいいでしょう。 rpc.ypxfrd は NIS マスターサーバでだけ起動しておけば OK です。
ユーザがパスワードを変更したときには、 NIS のパスワードデータベースや、
それに依存した他の NIS データベースも変更されなければなれません。これ
を行なうのが rpc.yppasswdd
です。このプログラムはパスワード変更を取り
扱い、 NIS の情報が正しく更新されるようにします。現在
rpc.yppasswdd
は ypserv の一部となっています。別パッケージ
になっている yppasswd-0.9.tar.gz
や yppasswd-0.10.tar.gz
な
どは古いので使う必要はありませんし、また今後使うべきではありません。
ypserv 1.3.2 の rpc.yppasswdd
は shadow を完全にサポートしていま
す。 yppasswd
は yp-tools-2.2.tar.gz
に入っています。
rpc.yppasswdd を実行するのは NIS マスターサーバのみです。デフォルトで は、ユーザーはフルネームやログインシェルを変更することができないように なっています。これを許可するには、それぞれ -e chfn および -e chsh オプ ションを指定します。
passwd と shadow ファイルが /etc 以外にある場合は、 -D オプションを 指定する必要があります。例えば全てのソースファイルを /etc/yp に置いて、ユーザにシェルの変更を可能にしたい場合は、 rpc.yppasswdd を以下のパラメータで実行しなければなりません:
rpc.yppasswdd -D /etc/yp -e chsh
または
rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh
でも OK です。
他には特にすることはありません。ただ、
rpc.yppasswdd
が /var/yp/Makefile
と同じファイルを
使っているかどうかは気をつけておいてください。
エラーは syslog を通して記録されます。