次のページ 前のページ 目次へ

8. NIS サーバの設定

8.1 サーバプログラム ypserv

この文書では、 NIS サーバとしては "ypserv" の 設定方法のみを記します。

NIS サーバのソフトは以下にあります。

http://www.suse.de/~kukuku/linux/nis.html には、より詳しい情報があります。

サーバのセットアップ方法は trad-NIS、 NYS どちらの場合でも同じです。

コンパイルして ypservmakedbm を作ります。 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

これでおしまい、サーバは動作しているはずです。

何か大きな問題が生じたら、 ypservypbind を別の 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/ypmake を実行してマップを更新します。

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 は当然動作します。

8.2 サーバプログラム yps

NIS サーバ yps の設定は前のセクションを参考にして下さい。大体似て いますが完全に同じではないので、ypserv の説明を適用する際には注意 するようにして下さい。 yps はもはや誰もサポートしていませんし、い くつかセキュリティホールも存在しています。使うべきではありません!

yps のソフトは以下のサイトにあります。

ファイル名は yps-0.21.tar.gz です。

8.3 rpc.ypxfrd プログラム

rpc.ypxfrd は非常に大きな NIS マップを NIS マスターから NIS スレーブサーバーに転送する際に、転送を高速化するために 用いられます。 NIS スレーブサーバーは、新しいマップがあるというメッセージを 受け取ると、そのマップを取得するために ypxfr を起動します。 ypxfr は yp_all() 関数を用いてマップの内容をマスターサーバー から読み込もうとします。この情報はデーターベースライブラリを 通して保存されるため、マップのサイズが非常に大きくなると、 このプロセスは数分もかかってしまうことがあります。

rpc.ypxfrd サーバーは、 NIS スレーブサーバーにマスターの マップファイルを単純にコピーさせ、転送プロセスを高速化します。 スレーブサーバーがゼロから自前のマップを生成するのに比べ、 これはずっと短時間ですみます。 rpc.ypxfrd は RPC ベースの転送プロトコルを用いるので、 新しいマップを生成する必要はありません。

rpc.ypxfrd は inetd から起動することもできますが、 起動には時間がかかるので、 ypserv と一緒にデーモンとして 起動しておくほうがいいでしょう。 rpc.ypxfrd は NIS マスターサーバでだけ起動しておけば OK です。

8.4 rpc.yppasswdd プログラム

ユーザがパスワードを変更したときには、 NIS のパスワードデータベースや、 それに依存した他の NIS データベースも変更されなければなれません。これ を行なうのが rpc.yppasswdd です。このプログラムはパスワード変更を取り 扱い、 NIS の情報が正しく更新されるようにします。現在 rpc.yppasswdd は ypserv の一部となっています。別パッケージ になっている yppasswd-0.9.tar.gzyppasswd-0.10.tar.gz な どは古いので使う必要はありませんし、また今後使うべきではありません。 ypserv 1.3.2 の rpc.yppasswdd は shadow を完全にサポートしていま す。 yppasswdyp-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 を通して記録されます。


次のページ 前のページ 目次へ