ソフトウェアがうまくコンパイルできたらインストールしましょう。 ypbind デーモンは /usr/sbin ディレクトリに入れると良いでしょう。 NYS のシステムでは ypbind は必要ないと言う人がいるようですが、 これは間違っています。 ypwhich と ypcat は、 かならず ypbind を必要とします。
ypbind のインストールはもちろんスーパーユーザで行う必要があります。 他のバイナリ (ypwhich, ypcat, yppoll, ypmatch) はすべてのユーザーからアクセス可能なディレクトリに置きましょう。 通常は /usr/bin が良いでしょう。
最近の ypbind には設定ファイル /etc/yp.conf があります。 ここに NIS サーバを直に書いておくこともできます。 詳しくは ypbind(8) のマニュアルを読んで下さい。 このファイルは NYS でも必要です。以下は例です。
ypserver 10.10.0.1 ypserver 10.0.100.8 ypserver 10.3.1.1 |
NIS なしでもホスト名の解決ができるシステムでは、 IP アドレスでなく名前を用いることができます。 そうでなければ IP アドレスを用います。 ypbind 3.3 にはバグがあり、最後のエントリ (上記の例では ypserver 10.3.1.1) しか用いられず、 他は全て無視されます。 ypbind-mt では正しく扱うことができ、 最初に返事したサーバが用いられます。
ypbind をスタートアップファイルに入れる前に テストしておくことをお勧めします。 ypbind のテストは以下のようにして行います。
YP のドメインネームが設定されていることを確認して下さい。 設定されていない場合は以下のようにします。
/bin/domainname nis.domain |
/sbin/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 |
program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting |
ここまで来れば 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) の各ツールにはこれが必要になります。
ユーザの追加・排除機能 (+/-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 の文書を読んでください。
NIS に shadow パスワードを流通させるのは良い考えではありません。 shadow システムのメリットであるセキュリティが失われてしまうからです。 それにこれがサポートされている Linux C ライブラリは少数に過ぎません。 NIS に shadow を流さないようにするには、 ローカルシステムのユーザだけを /etc/shadow に登録することです。 NIS に流すユーザエントリを shadow データベースから削除し、 それらのパスワードは passwd に書いて下さい。 こうすれば root ログインには shadow を、 一般の NIS ユーザには passwd を用いることができるようになります。 この方法なら、すべての NIS クライアントでうまく動作します。
NIS で shadow パスワードを用いることができる唯一の Linux libc は GNU C Library 2.x です。 Linux libc5 はこれをサポートしていません。 Linux libc5 を NYS と一緒にコンパイルした場合は、 多少のコードが含まれることにはなります。 でもこのコードは状況によってはひどく壊れてしまい、 shadow エントリが全て正しい場合でも動作しないことがあります。
Solaris は NIS 経由の shadow パスワードをサポートしていません。
Linux-PAM 0.75 以降では NIS 経由の shadow パスワードをサポートしています。 pam_unix.so モジュールか、拡張モジュールの pam_unix2.so を使います。 pam_pwdb や libpwdb を使っている古いシステム (Red Hat Linux 5.x など) では、 /etc/pam.d/* のエントリを変更する必要があります。 pam_pwdb のルールを、すべて pam_unix_* モジュール経由に置き換えます。
/etc/pam.d/login の例を次に示します。
#%PAM-1.0 auth requisite pam_unix2.so nullok #set_secrpc auth required pam_securetty.so auth required pam_nologin.so auth required pam_env.so auth required pam_mail.so account required pam_unix2.so password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok session required pam_unix2.so none # debug or trace session required pam_limits.so |