Solaris 2.x/7(主にSolaris 2.6以降)で、NISを利用するための設定方法をまとめました。
Solaris 2と戦う
Solaris 2.5.1→2.6へのアップグレード
日経BP, Find'X(コンピュータ・通信分野の専門検索サイト)に「厳選お薦めサイト」として登録されました。
Solaris 2.6以降では、NISサーバが標準で利用できます。それ以前のSolaris では、Solaris Migration Initiative Home PageからNISサーバのパッケージを手に入れることができます。なお、クライアントとしてなら、どのバージョンの Solarisも簡単に設定できます。
1999年4月に、NISの設定をやり直したので、忘れないうちにNISの設定方法をメモしておきます。Solaris 2.6以降では、標準で付いてくるだけあって、NIS の設定が非常に簡単になりました。困ったり迷ったりする心配はほとんどないでしょう。
ええと、そのぅ…。すみませんがそこまで基本的な説明は、このページではとてもカバーできません。適当な文献を当たってください。大雑把に言うと、簡易ディレクトリサービスにあたるもので、複数のワークステーションでパスワードやホスト情報などを共有するためのサービスです。
これより下の部分は、NISって何か知っている方、マスターサーバー、スレーブサーバー、クライアントの違い、「マップ」などの用語を知っている方向けです。
/var/yp/Makefile
があれば、たぶん大丈夫です。また、
クライアントには入っている必要はありません。
/var/yp/securenets
というファイルを用意し、NISへ
のアクセス制限をするべきです。詳しくはsecurenets(4)を読んでもら
うとして、いちばん簡単な書き方は、NISドメイン内のマシンすべての
IPアドレスを列挙することです。
たとえば次のようなファイルを作ります。
(この書き方は、SunOS4では使えないはずですので気をつけてください。)
host 192.68.1.11 host 192.68.1.12 host 192.68.1.13
/usr/sbin/ypinit
というコマンドを実行することに
なります。や
り方は下で説明しますが、実はこのファイルはただのシェルスクリプト
なので、中を読めば何をやるのかが分かります。前もって読んでおきま
しょう。
/etc/defaultdomain
というファイルに、ドメイン
名を1行書く。
/usr/sbin/domainname ドメイン名
というコマンドを実行して、ドメイン名を設定する。
/etc/inet/hosts
に、スレーブサーバーの名前とIPア
ドレスの対応を書いておく。
/var/yp/Makefile
を読めば書いてある。ほとんど
すべてのファイルは、システムにもともとあるので、わざわざ用
意する必要はない。
/var/yp/Makefile
を書き換える。(理由は下で説明します。)
/var/yp/Makefile
を編集し、先頭の方の
#B=-b B=
とある行の"B=-b"の方のコメントをはずし、"B="の方をコメントアウト する。(要するに"B=-b"と定義する。)
/usr/sbin/ypinit -m
を実行する。スレーブサ
ーバーの名前を要求されるので、適切に入力する。
/etc/nsswitch.conf
を適切に設定する。NIS用の設定が
/etc/nsswitch.nis
という名前で置いてあり、そのまま使
えるだろう。
マップの元となるファイルを、システムにもともとあるファイルと分けるのは、セキュリティのことを考えてのことです。具体的には、たとえばパスワードファイル/etc/passwd
をそのままマップに使うと、次のようなことが心配です。
httpd
を走らせるときのIDとし
て"www"といった仮のIDを使うことがあるが、これをNISで共有するのは
意味がない。この他にはライセンスサーバ、かな漢字変換サーバなど。
ですから私のサイトでは、パスワードマップは/etc/passwd
とは別に用意したものを利用しています。同じような設定をしたい場合には、
/var/yp/Makefile
をよく読みましょう。Makefileの読み方が分からない人は…、うーむ、勉強してください。
マスターサーバーの設定より、スレーブサーバーの設定の方が多少面倒かもしれません。しかし気をつけて進めば、どうってことはありません。
/etc/inet/hosts
に、マスターサーバーの名前とIPア
ドレスの対応を書いておく。すでにNISクライアントになっているなら、
これは設定済みのはずである。
/usr/sbin/ypinit -s master
を実行
する。masterの部分はマスターサーバーの名前を入れる。
/etc/nsswitch.conf
を適切に設定する。NIS用の設定が
/etc/nsswitch.nis
という名前で置いてあり、そのまま使
えるだろう。
スレーブサーバーとしての最低限の設定は、これで終わりです。しかし安定した運用のためには、さらにもう一仕事しましょう。rootになって、crontabに以下のような設定をします。時間の設定は、各サイトの事情に合わせてください。(読み方はcrontab(1)参照)
20 * * * * /bin/sh /usr/lib/netsvc/yp/ypxfr_1perhour 25 0,12 * * * /bin/sh /usr/lib/netsvc/yp/ypxfr_2perday 30 3 * * * /bin/sh /usr/lib/netsvc/yp/ypxfr_1perday
これはスレーブサーバーが、定期的にマスターサーバーのマップを読みに行くための設定です。マスターサーバーのマップが修正されたとき、たまたまスレーブサーバーが止まっていたとか、ネットワークが切れていたなどの事情で、マップの修正がスレーブサーバに反映されず、情報の不整合が起こる可能性があります。そのような事態が起こっても速やかに復旧できるように、定期的に確認するのです。
いちばん簡単なのは、クライアントの設定です。
/etc/inet/hosts
に、マスターサーバーおよびスレー
ブサーバーの名前とIPアドレスの対応を書いておく。
/usr/sbin/ypinit -c
を実行する。
NISのサーバー(マスター、スレーブ)を、言われた通りに入力する。
/etc/inet/hosts
に書いてあるホスト名でないと弾かれる
ので注意。
/etc/nsswitch.conf
を適切に設定する。NIS用の設定が
/etc/nsswitch.nis
という名前で置いてあり、そのまま使
えるだろう。
SunOS4の頃のNISを管理した経験のある方は、クライアントでもサーバの名前を指定するのに違和感を感じたかもしれません。SunOS4の頃のNISでは、クライアントではサーバの名前を与えませんでした。
ではどうやってサーバを見つけるかというと、マシンの起動時にネットワークにブロードキャスト(同報通信、ネットワークに繋がっているマシンすべてに聞こえるように喋ること)をして同じドメインのNISサーバを探し、最初に返事をしたサーバに接続していましした。このため、偽のサーバ(嘘つきサーバ)がセキュリティを侵害する可能性がありました。ドメイン名を外部に知られないようにするのは、嘘つきサーバが立つのを防ぐためです。
現在のSolarisに搭載されているNISは、前もってサーバの名前を与えておき、それに直接聞きに行くように設定するのが標準です。しかしサーバの名前を設定しなくとも、SunOS4の頃と同じように、ブロードキャストしてサーバを見つけ、問題なく動きます。ですから、もしかしたらあなたのサイトにも、サーバの名前を知らないために、ブロードキャストでサーバを探しているSolarisマシンがあることに気づいていないかもしれません。…ひとごとみたいに言っていますが、実は私の研究室がそうでした(^^;;)。気づいて良かった :-)
今までいい加減な設定でNISを使ってきた方は、今からでも遅くないので、
/var/yp/binding/ドメイン名/ypservers
というファイルを調べて、適切なサーバが設定されているかどうかを確認してください。サーバの設定がおかしかったり、そもそもこのファイルがなかった場合には、ypinit
を実行して、
サーバを正しく設定することを強くお薦めします。
上で述べたようにSunOS4のNISクライアントは、サーバをブロードキャストで探し、最初に返事をしたサーバに接続していました。スレーブサーバを立てる意味は、SunOS4のころは単に負荷を分散するだけのため、つまり同じサーバにたくさんのクライアントが接続し、負荷が集中するのを防ぐためのものでした。接続先のサーバが何らかの事情で動かなくなった場合、SunOS4のクライアントは他のサーバを探しに行こうとせず、接続先のサーバが復活するのをただただ待ち続けます。せっかくサーバが複数あるのに、もったいないですね。
このためSunOS4のころは、マシンの数が少ないサイトでは、スレーブサーバーを立てる意味があまり無かったのです。複数のサーバがあると、あるサーバを止めたとき、どのクライアントに影響が出るのかがつかみづらいという副作用もありました。まぁぜんぶ止まるよりはましなのかもしれませんが…。
現在のSolarisのNISは、さすがに以前より賢くなっていて、接続先のサーバが止まっているときには、次のサーバを見に行きます。また、あるクライアントが最初にどのサーバに接続しに行くのかを決めることができます。したがって、スレーブサーバを用意しておくと、次のようなうれしい点があります。
実際に、NISマスターサーバーを止めてから、クライアントにログインしてみたことがあるのですが、ログインのときにしばらく待たされただけで、それ以降は普通に使えました。SunOS4だと"刺さった"ままになるのを何度か経験しているので、ちょっとうれしかった。まぁそういうわけなので、SolarisをNISクライアントにしている場合には、ドメイン内のマシンが少なくとも、スレーブサーバーを立てる意味があると思います。
蛇足ですが、PC UNIXでも、最近では当たり前にNISを使えます。PC UNIXが動くPCを、NISクライアントにするのはもちろん、サーバにすることもできます。
あ、うちのサイトですか? 歴史的な事情ってやつです(^^)。NISを導入したのは5年前、1994年だったと思います。そのころはSunOS 4.1.x-JLEが主流で、他にRISC/osや純SVR4などがありました。そのころから今までずっとNISを使っていて、問題なく動いているし、管理のノウハウも覚えてきたので、なかなか新しいソフトウェアに乗り換えられないんです。
NIS+のほうがセキュリティが向上しているそうですし、NISクライアントも問題なく繋がるそうですね。そろそろ乗り換えを検討しようかな。
リンクはご自由に。でもメールをくれると嬉しいな。
金野 祥久 konno@researchers.jpLast modified: Wed Mar 29 11:05:18 JST 2000