![]() |
Solaris2.0 からだったかにバンドルされるようになった、新しいネーミング
サービスで、それまで使われていた NIS に置き換わるもの、としてリリース
されたようです。
NIS+ は NIS の上位互換などとゆう位置づけではなく、まったくベツモノの
ネーミングサービスで、一部の例外を除いては、お互い に互換性はありませ
ん。
NIS+ サーバ は、 NIS クライアントのリクエストに 答えられませんし、
テーブルを見せることもできません。
ってなトコです。一見、すると、良いことづくめの機能のような気がしますが、
反面、管理や設定がコムズカシく、(メンドくはないと思います)中々、理解でき
なくて、結局は、イマイチ世の中には広まらなかったイワクつきの (笑)ネーミン
グサービスです。
Solaris2.6 アタリまでは、 NIS+ のみバン ドルしていて、 NIS はアンバンドル
されていたんですけれども、Solaris 7 アタリで、最終的には、 NIS も NIS+ も
両方バンドルしたようです。
Solaris8 では、両方使えますよ。
基本的に NIS と NIS+ の間に互換性はないのですが、設定しだい で互換性 を保つことができるようになります。その名も
まんまな名前ですね(^_^;)。ネットワーク中に NIS+ クライアントになれないとか、
移行できない事情のあるクライアントがある場合は、このモードで NIS+ マスタサーバ
を動かしておけば良いでしょう。
ただし、デメリットがあ ります。NIS は、まったくセキュリティを確保していないの
で、 NIS+ のウリ のひとつである、「kerberos5 と DES による強力な暗号化とセキュ
リティ」 が、アマクなります。
NIS クライアントとの通信がバレバレだからねー。
んで、このモードは、NIS+ マスタサーバの構築時のコマンドにオプション を付けて、/etc/rc2.d/S71rpc アタリを書き換えることで「NIS コンパチビ リティモード」になります。具体的な説明は、もう少しあとで・・・・
/usr/lib/nis | /usr/bin | /usr/sbin |
---|---|---|
|
|
|
などなど・・・が、あります。ちゃんとインストール されていましたか?
細かいハナシや理論はオンラインマニュアルに任せて・・・・
任せてどーするっつーツッコミはナシ(笑)。
最低限、構築してゆくのに必要なコマンドと手順を列記してゆきます。
ってなトコかな?順番にいってみやうっ!
お好きなドメインネームをどうぞ(笑)ただ、 DNS と同じドメイン ネームにしておくと、混乱しにくくて良いぞっ!って、Sun Microsystems が推奨しているので、素直にそーしたほうが 良いでしょう。えっっ? BIND なんて動いてねーよって?。そん時は、 BIND を NIS+ と同じ ドメインネームにしましょう(爆)
NIS+ でクライアントに提供できるテーブルは、 こんなのもの があります。
見たっ?? んで、/var/nis/map とかって ゆー適当なディレクトリを作って、テーブルの元のファイルを格納 しておくとこを作って、コピーしまくりましょう。
|
とかしてコピーして下さい。コピーが終わったら構築するぞっ! コマンドは・・・・
です。オプションの意味は、
ってことです。ここでやってるのは、マスタサーバの設定と、 テーブルの ”型”を作ることです。この処理が終わっても、 テーブルの中身は、まだカラッポです。テーブルの中身に実 体を作るのは、この次の処理になります。
この処理中に、/etc/defaultdomain が作られたり、 /etc/nsswitch.conf が NIS+ 用に書き換えられたりもします。
ホイ、次は、ポピュレートね。nisserver コマンドでテーブル の”型”を 作ったら、次は、中身を入れましょう。それが /usr/lib/nis/nispopulate コマンドです。コマンドは・・・
です。オプションの意味は、
です。これで、マスタサーバの構築は終わり。でも、クライアントの アクセス許可の設定はまだまだあるよ。あと、NIS+ の daemon を起動 するスクリプトも書き換えないとイケマセン。
/etc/init.d/rpc と、 /etc/rc2.d/S71rpc を書き換えましょう。書き 換えるトコは両方ともいっしょです。テキストエディタで開いてもらっ といて、
ってトコを探して下さい。みての通り、ここの行は、デフォルトでは コメントアウトされています。ここのコメントを取って、さらに
を書き加えて下さい。編集後は
と、こんな感じになります。この編集を、/etc/init.d/rpc と、 /etc/rc2.d/S71rpc の 2 つのファイル にやって下さい。これで、 NIS+ マスタをリブートした場合なんかに、NIS コンパチビリティモードで rpc.nisd が起動して、 NIS クライアントのリクエストにも応えられ るようになります。
NIS+ のウリのひとつである、暗号化の為に、DES Key ってヤツを発行して おきます。とりあえず、
ドメインネームの後ろにピリオドを付けたり、付けなかったりしてるの で、 そのヘンのトコ、気を付けるよーに。あと、3 行目のコマンド中の "server" は、 NIS+ マスタサーバのホストネームです。
んで、 NIS キャッシュマネージャを再起動します。
ってなとこだっ。オプションの
です。ここも、ドメインネームの後ろにピリオドが付いたり付 かなかったりするのでちぅいして下さい。
NIS+ マスタサーバで、
とかやって見て下さい。テーブルの中身が表示されません か・・・・? hosts.org_dir :unreachable ってメッセージ が表示されたときは、 ザンネンながら、 DES Key の暗号が うまく復元できていません。その 場合は、NIS+ マスタサーバで、
してみてください。NIS+ クライアントホストの root のパスワード を聞いてくるので答えて下さい。その後、もう 1 回、 niscat して テーブルを見て みて下さい。
で、うまくいきませんか・・・?(弱気) で、1回 reboot して、 クライアントで、
とかやって、テーブルの中身が見えたらおっけーでぇーす! あ、 この時、クレデンシャルをきちんと設定してないと、一般のユーザ は、 niscat コマンドでテーブルを参照できません。なので、NIS+ マスタ サーバの root で niscat するか、クレデンシャルを設定 したユーザで niscat してみて下さい。
テーブル中の、各エントリを追加・削除しようとする度に、マップの元 ファイルを編集して、nisserver / nispopulate するワケにもゆきませ んよね。普段使うメンテナンス用のコマンドがちゃんとあります。
それと、エントリをうまく追加・削除できないからって不用意にテーブル の元ファイルを編集して、 nisserver / nispopulate を実行すると、 折角設定した DES Key とか、クレデンシャルが全部初期化されて消えて しまうので、やらないほーが良いです。メンテもカンタンだから、 そん なに心配してくても大丈夫だよ。
niscat とかする度に、
と、フルパスを入力するのもメンドイので、ドメインネーム部分を省略 させる環境変数があります。NIS_PATH ってヤツが、その環境変数で、 Born Shell なら、${HOME}/.profile に、
して下さい。 csh なら、 ~/.cshrc に、
と、して下さい。この設定をしておくと、
と、しなければいけないところを、
だけで、テーブルを見られるようになります。モチロン、 クレデンシャル の設定がマズイと見れないぞ。
NIS+ のテーブルは、1 エントリにつき、いくつかのアイテムを 併せ持った 構造になっています。参考までに、hosts.org_dir の構造を見てみると、
[0] Name : cname Attributes : (SEARCHABLE, TEXTUAL DATA, CASE INSENSITIVE) Access Rights : ---------------- [1] Name : name Attributes : (SEARCHABLE, TEXTUAL DATA, CASE INSENSITIVE) Access Rights : ---------------- [2] Name : addr Attributes : (SEARCHABLE, TEXTUAL DATA, CASE INSENSITIVE) Access Rights : ---------------- [3] Name : comment Attributes : (TEXTUAL DATA) Access Rights : ---------------- |
に、なっています。テーブルの構造を見るコマンドは、
です。環境変数に NIS_PATH を設定してあれば、
でもおっけーです。当然、hosts 以外にも、
とかってなります。テーブルに応じて、アイテムの数も変ってきます。 これから先は、hosts テーブルを例に取って記述してゆきます。
エントリの削除コマンドは、/usr/bin/nistbladm コマンドを 使います。削除の場合、
となります。hosts テーブル中に、削除したいエントリが、 192.168.126.1 であった場合を仮定します。まずは、先に記 述した通りに、niscat hosts | grep 192.168.126.1 とかの コマンドで、そのエントリが テーブル中に存在していること を確認します。他のコマンドとしては、/usr/bin/nismatch が あります。この例の場合の hosts のサーチは、
とかってなります。 nismatch コマンドはこの他にも、色々 サーチの しかたがあるので、man nismatch コマンドで調べ てみて下さい。grep で代用できるんぢゃねーのっ?って思っ たヒト・・・・
ですが、サーチするエントリの数が、膨大な数になっている 場合、 nismatch コマンドの方が、すばやくサーチしてくれ るそうです。ちゃんと、使えるようになった方が良いと思 うよ。
それでは、具体的に削除の方法です。コマンドとオプションは、
です。
ですが、指定するアイテム 1 つでエントリが特定できる場合は、
でも削除できます。モチロン、他のアイテムでも特定できる場合 があるでしょうから、あ、あと、NIS_PATH が設定してあれば、
192.168.126.1 のエントリが削除できます。削除してみたら、 nismatch コマンドでサーチしてみてください。テーブルか ら削除されている と思います。
エントリの追加も/usr/bin/nistbladm コマンドを使います。 hosts への追加 の場合、
となります。
ですが、指定しても差し支えないアイテムは省略しても構いません。 hosts の場合、 comment アイテムがなくても、困らなければ省略して、 comment アイテムの記述そのものを省略しても構いません。その場合は、
となります。
追加できたら、 nismatch コマンドでエントリが追加できているか確認
てみましょう。
エントリ中のどれかのアイテムを他の文字列や数値に変更したく なる場合もあるよね。そんな時にも /usr/bin/nistbladm コマンドを 使います。一例として、 hosts テーブルエントリの IP アド レスを他の値に変更したい場合を仮定します。使い方は、
不慮の事故にそなえて、常にバックアップを確保しておきたいも のです。なんかある度に、 nisserver / nispopulate / クレデンシャル / オーセンティケーションなんかの設定をしなおすのはめんどいですよね。 なので、NIS+ テー ブルのバックアップを取るコマンドがちゃんと用意 されています。使い方はカンタンで、
です。オプションは、
Verbose モードのメッセージは、 syslog に出力されるようですが (未確認) /etc/syslog.conf になんか設定しないと書き出してくれ ないようです。 一例としては、予め、/var/nis/backup とかゆー ディレクトリを作っておいた と仮定すると、
に、なります。 backup が正常におこなわれると、
と、ゆったディレクトリができていれば、バックアップが取 れています。 ちなみに、/usr/sbin/nisbackup コマンドは、 NIS+ マスタサーバでしか 実行できないようです。
バックアップできて、リストアできないってーんぢゃ、バックアップ の意味があんまりないので、次は、リストアの方法です。 /var/nis/backup にバックアップを取ってあると仮定して・・・
です。オプションは、
です。その他のオプションは、 -t のリスト出力があります。
こんなかんぢですね。実際に実行すると、
# ./nisrestore -t /var/nis/backup ORATORIO-TANGRAM.com. org_dir.ORATORIO-TANGRAM.com. groups_dir.ORATORIO-TANGRAM.com. |
ってリストが表示されます。
NIS+ は、ユーザ環境に合せたオリジナルのテーブルを作ること もできます。 テーブルの作成も /usr/bin/nistbladm コマンド を使います。 まずは、テーブルの利用目的とアイテムを事前に 設計して頂いて・・・
です。具体例としては、電話番号なんかのテーブルを作りたい場合、 テーブルネームを格納しておく tel ディレクトリを、mymap.hoge.local.jp. に作りたい場合、最初に /usr/bin/nismkdir で、mymap を作ります。 その次に、テーブルの実体を作ってゆきます。手順は、次のようになります。
です。テーブルネームと、格納先の NIS+ レポジトリのレポジトリ ネームを同じにするのがポイントです。正しく作られたかどうか確 認するには、
と、すると、
# nisls -l mymap.hogr.com. mymap.hoge.local.jp.: T ----rmcdr---r--- nisplus-server.hoge.local.jp. Tue Dec 11 17:08:10 2001 tbl |
とゆったメッセージが表示されれば、正常に作成されています。niscat -o で構造を調べれば、
niscat -o によるテーブル構造の表示一例 |
---|
# niscat -o tbl.mymap.hoge.local.jp. Object Name : "tbl" Directory : "mymap.hoge.local.jp." Owner : "nisplus-server.hoge.local.jp." Group : "" Access Rights : ----rmcdr---r--- Time to Live : 12:0:0 Creation Time : Tue Dec 11 17:08:10 2001 Mod. Time : Tue Dec 11 17:08:10 2001 Object Type : TABLE Table Type : tel Number of Columns : 3 Character Separator : Search Path : Columns : [0] Name : name Attributes : (SEARCHABLE, TEXTUAL DATA, CASE SENSITIVE) Access Rights : ----rmcdr---r--- [1] Name : phone Attributes : (SEARCHABLE, TEXTUAL DATA, CASE SENSITIVE) Access Rights : ----rmcdr---r--- [2] Name : incam Attributes : (SEARCHABLE, TEXTUAL DATA, CASE SENSITIVE) Access Rights : ----rmcdr---r--- |
です。エントリの追加は、 「◯エントリの追加」と同じ方法でできます。 アイテム、テーブルの名前、NIS パスのレポジトリが違うだけね。
不必要なテーブルは削除することもできます。テーブルの削除も、 /usr/bin/nistbladm コマンドを使います。削除の方法は、
です。当然、削除されたテーブルの中身も全てなくなります。心配な 方は、/usr/sbin/nisbackup でバックアップを取っておいてから、 削除したほうが良いでしょうね。