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

5. NIS の設定には何が必要か?

5.1 マスターサーバ、スレーブサーバ、クライアントを決める

まず以下の二つの場合を考える必要があります。

  1. 接続するネットワーク上に NIS サーバがある場合。
  2. 接続するネットワーク上に NIS サーバがない場合。

最初のケースでは ypbind, ypwhich, ypcat, yppoll, ypmatch といったクライアントプログラムを起動するだけで 使えるようになります。一番重要なのは ypbind で、 このプログラムは常に実行されている必要があります (つまり ps コマンドを実行したときにプロセステーブルに表示されな ければなりません)。 ypbind はいわゆるデーモンプロセスで、 システムのスタートアップファイルから起動する必要があります (つまり /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.d/init.d/ypbind, /etc/rc.local など)。 ypbind が起動されれば、その計算機は その時点から NIS クライアントとなります。

二番目のケース、つまり NIS サーバがない場合には、NIS サーバプログラム (通常は ypserv) も必要となります。この文書の NIS サーバの設定 の章では、 Linux マシンを NIS サーバに設定する方法について説明しています。 ここでは Peter Eriksson と Thorsten Kukuk による ypserv の実装を 用いています。この実装の 0.14 以降の版では NIS の動作原理 の節で触れたマスター/スレーブ機能をサポートしています。

他にもフリーな NIS サーバがあります。 yps というプログラムで、ド イツの Tobias Reber によって書かれたものです。マスター/スレーブ機能を 備えていますが、それ以外の点に制限があります。

5.2 ソフトウェア

バージョン 4.4.2 以上のシステムライブラリ /usr/lib/libc.a もしくはシェアードライブラリ /lib/libc.so.x には、 NIS のクライアントやサーバのプログラムをコンパイルするの に必要なシステムコールがすべて含まれています。 GNU C Library 2 (glibc 2.x) では /lib/libnsl.so.1 も必要です。

NIS は /usr/lib/libc.a バージョン 4.5.21 以上でしか動かないと いう報告がありますので、安全のためには古いものは使わない方が良いでしょ う。 NIS のクライアントプログラムは以下の場所で入手できます。

ソフトを手に入れたら、同梱されている説明にしたがって下さい。 yp-clients 2.2 は libc4 または 5.4.20 までの libc と共に用いて下さい。 libc 5.4.21 以降と glibc 2.x には yp-tools 1.4.1 以降が必要です。 新しい yp-tools のバージョン 2.2 は、すべての Linux libc で動作します。 5.4.21 から 5.4.35 までの libc には、 NIS のコードにバグがあるので 使わない方が良いでしょう。 libc 5.4.36 以降を使わないと、ほとんどの YP プログラムは動作しないでしょう。 ypbind 3.3 もすべてのライブラリで 動作します。 gcc 2.8.x 以降か egcs、 glibc 2.x を利用している場合は、 ypbind-3.3-glibc5.diff ぱっちを ypbind 3.3 に当てる必要があります。 yp-clients 2.2 に入っている ypbind は決して使わないようにして下さい。 ypbind-mt は、新しく開発されたマルチスレッドのデーモンです。 これは Linux 2.2 カーネルと glibc 2.1 以降が必要です。

5.3 ypbind デーモン

ソフトウェアがうまくコンパイルされたら、インストールです。 ypbind デーモンは /usr/sbin に入れると良いでしょう。 NYS のシステムで は ypbind は必要ないと言う人がいるかもしれませんが、これは間違いです。 ypwhichypcat には ypbind が必要です。

ypbind のインストールはもちろんスーパーユーザで行う必要があります。 他のバイナリ (ypwhich, ypcat, yppoll, ypmatch) はすべてのユーザー からアクセス可能なディレクトリにおきましょう。通常は /usr/bin が良いでしょう。

最近の ypbind には設定ファイル /etc/yp.conf があります。ここに NIS サーバを直に書いておくこともできます。詳しくは ypbind(8) のマニュ アルを読んで下さい。このファイルは NYS でも必要です。以下は例です。

  ypserver voyager
  ypserver defiant
  ypserver ds9

NIS なしでもホスト名の解決ができるシステムでは、 IP アドレスでなく名前 を用いることができます。そうでなければ IP アドレスを用います。 ypbind 3.3 にはバグがあり、最後のエントリ (上記の例では ypserver ds9) しか用いられず、他は全て無視されます。 ypbind-mt では正しく扱う ことができ、最初に返事したサーバが用いられます。

ypbind をスタートアップファイルに入れる前にテストしてお くことをお勧めします。 ypbind のテストは以下のようにして行います。

ここまで来れば ypcat のような NIS クライアントプログラムを実行す ることができるはずです。 例えば NIS のパスワードデータベースを参照した い場合には、 "ypcat passwd.byname" とします。

重要: もし上述の ypbind のテストを飛ばした場合、少なくともドメイ ンネームが設定してあることと /var/yp という名前のディレクトリ が作ってあることを確認して下さい。 /var/yp がないと ypbind は正常に起動されません。

ドメインネームの設定が正しいかどうかをチェックするには、 yp-tools 2.2 の /bin/ypdomainname を使って下さい。このプログラムは yp_get_default_domain() 関数を使うので、より厳しいチェックができます。 例えば Linux でデフォルトになっている (そして多くの問題の原因に なっている) "(none)" のようなドメイン名は、このプログラムでは 許可されません。

テストがうまくいったらスタートアップファイルを変更して、ブート時に ypbind が起動されるようにしておくと良いでしょう。自動的に NIS クラ イアントとしての活動が開始されます。 ypbind の起動前に、 ドメインネームが設定されるようにするのも忘れないこと。

以上で設定は終了しました。リブートしてから、ブートメッセージで ypbind が正常に動作しているかどうか確認して下さい。

5.4 trad-NIS を用いた NIS クライアントをセットアップする

ホストの名前解決に 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 を使っている Linux マシンで ypbind を実行すると、 NIS のパスワードデータベースにエントリを持つすべてのユーザは そのマシンにアクセスできてしまいます!

5.5 NYS を用いた NIS クライアントをセットアップする

必要なのは NIS の設定ファイル (/etc/yp.conf) で正しいサーバ(群)から 情報をもらえるようにしておくこと、そしてネームサービススイッチの設定ファ イル (/etc/nsswitch.conf) を正しく設定することです。

ypbind もインストールしておきましょう。 libc には必要ありませんが、 NIS(YP) の各ツールでは ypbind が必要になります。

ユーザの追加・排除機能 (+/-guest/+@admins) を用いたい場合は、 "passwd: compat" と "group: compat" を nsswitch.conf で指定する必要があります。 "shadow: compat" という指定はありません。 この場合は "shadow: files nis" のようにして下さい。

NYS のソースは libc 5 のソースに同梱されています。 configure を実行し、 "Values correct" の問いに対して一度目は "NO" と答えて下さい。そして "Build a NYS libc from nys" に対して "YES" と答えて下さい。

5.6 glibc 2.x を用いた NIS クライアントをセットアップする

glibc は trad-NIS を利用します。従って ypbind を起動する必要があります。 またネームサービススイッチの設定ファイル (/etc/nsswitch.conf) も正しく設定する必要があります。 passwd, shadow, group に compat モードを使う場合は、これらのファイルの最後に "+" を追加する必要があります。 ユーザの追加・削除機能を用いることもできます。 設定は Solaris 2.x のものとまったく同じです。

5.7 nsswitch.conf ファイル

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

    hosts: files nis dns

と指定すれば、ホスト名の検索機能はまずローカルの /etc/hosts ファイルを 探し、次に NIS、そしてドメインネームサービス (/etc/resolv.confnamed) という順番で検索を行います。最後までマッチするものがなければ、 エラーが返されることになります。このファイルは全てのユーザから 読み取り可能でなければなりません!より詳細な情報は nsswitch.5 か nsswitch.conf.5 のマニュアルページを見てください。

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
# For libc5, you must use shadow: files nis
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 でのみサポートされています。 /etc/nsswitch.conf に shadow ルールがなければ、 glibc はパスワードの検索に passwd ルールを用います。 glibc 用の検索モジュールとして、 hesoid のようなものも存在しています。 これについては glibc の文書を読んでください。


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