まず以下の二つの場合を考える必要があります。
最初のケースでは 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 によって書かれたものです。マスター/スレーブ機能を
備えていますが、それ以外の点に制限があります。
バージョン 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-tools-2.2.tar.gz
, ypbind-mt-1.4.tar.gz
,
ypbind-3.3.tar.gz
, ypbind-3.3-glibc5.diff.gz
があります。
yp-clients-2.2.tar.gz
があります。
ソフトを手に入れたら、同梱されている説明にしたがって下さい。 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 以降が必要です。
ソフトウェアがうまくコンパイルされたら、インストールです。
ypbind
デーモンは /usr/sbin
に入れると良いでしょう。 NYS
のシステムで
は ypbind
は必要ないと言う人がいるかもしれませんが、これは間違いです。
ypwhich
と ypcat
には 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 のテストは以下のようにして行います。
/bin/domainname nis.domain
nis.domain
は通常適当な文字列で、
あなたのマシンの DNS ドメインネームとは違うものにすべき
です。こうしておけば、外部のクラッカーがサーバから NIS
パスワードデータベースを盗んでいくのがわずかながら困難になります。 NIS
ドメイン名を知らない場合はシステム管理者かネットワーク管理者に尋ねて下
さい。
/usr/sbin/rpc.portmap
が起動されていなければ起動します。
/var/yp
というディレクトリがなければ作成します。
/usr/sbin/ypbind
を起動します。
ypbind
がサービス内容をポートマッパに登録できたかどうか確か
めるために、 "rpcinfo -p localhost"
というコマンドを
実行して下さい。以下のような出力が現われるはずです。
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100007 2 udp 637 ypbind
100007 2 tcp 639 ypbind
あるいは使っているバージョンによっては
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100007 2 udp 758 ypbind
100007 1 udp 758 ypbind
100007 2 tcp 761 ypbind
100007 1 tcp 761 ypbind
のようになるかもしれません。
"rpcinfo -u localhost ypbind"
も実行してみて下
さい。以下のような表示が出るはずです。
program 100007 version 2 ready and waiting
あるいはインストールした ypbind のバージョンによっては
program 100007 version 1 ready and waiting
program 100007 version 2 ready and waiting
のような出力になるかもしれません。
重要なのは "version 2" のメッセージだけです。
ここまで来れば 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
が正常に動作しているかどうか確認して下さい。
ホストの名前解決に 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 のパスワードデータベースにエントリを持つすべてのユーザは
そのマシンにアクセスできてしまいます!
必要なのは 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" と答えて下さい。
glibc は trad-NIS を利用します。従って ypbind を起動する必要があります。
またネームサービススイッチの設定ファイル (/etc/nsswitch.conf
)
も正しく設定する必要があります。
passwd
, shadow
, group
に
compat モードを使う場合は、これらのファイルの最後に
"+
" を追加する必要があります。
ユーザの追加・削除機能を用いることもできます。
設定は Solaris 2.x のものとまったく同じです。
ネットワークサービススイッチのファイル /etc/nsswitch.conf
は
情報への
アクセス要求が来たときに行う検索の順番を決定するものです。ホスト名の検索
で用いられる /etc/host.conf
ファイルと似ています。例えばこの
ファイルにおいて
hosts: files nis dns
と指定すれば、ホスト名の検索機能はまずローカルの /etc/hosts
ファイルを
探し、次に NIS、そしてドメインネームサービス (/etc/resolv.conf
と
named
) という順番で検索を行います。最後までマッチするものがなければ、
エラーが返されることになります。このファイルは全てのユーザから
読み取り可能でなければなりません!より詳細な情報は 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 の文書を読んでください。