Go to TOP Page
Google:


□NIS+ ってナニよっ?


○nis とは大違いってことで

Solaris2.0 からだったかにバンドルされるようになった、新しいネーミング サービスで、それまで使われていた NIS に置き換わるもの、としてリリース されたようです。
NIS+ は NIS の上位互換などとゆう位置づけではなく、まったくベツモノの ネーミングサービスで、一部の例外を除いては、お互い に互換性はありませ ん。
NIS+ サーバ は、 NIS クライアントのリクエストに 答えられませんし、 テーブルを見せることもできません。


○NIS+の良いトコロ

ってなトコです。一見、すると、良いことづくめの機能のような気がしますが、 反面、管理や設定がコムズカシく、(メンドくはないと思います)中々、理解でき なくて、結局は、イマイチ世の中には広まらなかったイワクつきの (笑)ネーミン グサービスです。
Solaris2.6 アタリまでは、 NIS+ のみバン ドルしていて、 NIS はアンバンドル されていたんですけれども、Solaris 7 アタリで、最終的には、 NIS も NIS+ も 両方バンドルしたようです。

Solaris8 では、両方使えますよ。


□動作モードはどーしよーか?


○できれば NIS 互換にしたいよね

基本的に NIS と NIS+ の間に互換性はないのですが、設定しだい で互換性 を保つことができるようになります。その名も

NIS コンパチビリティモード

まんまな名前ですね(^_^;)。ネットワーク中に NIS+ クライアントになれないとか、 移行できない事情のあるクライアントがある場合は、このモードで NIS+ マスタサーバ を動かしておけば良いでしょう。
ただし、デメリットがあ ります。NIS は、まったくセキュリティを確保していないの で、 NIS+ のウリ のひとつである、「kerberos5 と DES による強力な暗号化とセキュ リティ」 が、アマクなります。
NIS クライアントとの通信がバレバレだからねー。

んで、このモードは、NIS+ マスタサーバの構築時のコマンドにオプション を付けて、/etc/rc2.d/S71rpc アタリを書き換えることで「NIS コンパチビ リティモード」になります。具体的な説明は、もう少しあとで・・・・


□NIS+ の構築とメンテに使うコマンド


○いっぱいあるよ


nis+ コマンド
/usr/lib/nis /usr/bin /usr/sbin
  • nisaddent
  • nisclient
  • nisopaccess
  • nispopulate
  • nissetup
  • nisstat
  • nisauthconf
  • nisctl
  • nisping
  • nisserver
  • nisshowcache
  • nisupdkeys
  • nisaddcred
  • nischmod
  • nisdefaults
  • nisgrpadm
  • nismatch
  • nispath
  • nisrmdir
  • niscat
  • nischown
  • niserror
  • nisln
  • nismkdir
  • nisprefadm
  • nistbladm
  • nischgrp
  • nischttl
  • nisgrep
  • nisls
  • nispasswd
  • nisrm
  • nistest
  • nis_cachemgr
  • nisbackup
  • nisinit
  • nislog
  • nisrestore

などなど・・・が、あります。ちゃんとインストール されていましたか?

いまさら、ないとかってゆーなよなっ!

□NIS+ マスタサーバを構築するぞっ!


○騙されたと思ってこのコマンドを叩けっ!(笑)

細かいハナシや理論はオンラインマニュアルに任せて・・・・
任せてどーするっつーツッコミはナシ(笑)。
最低限、構築してゆくのに必要なコマンドと手順を列記してゆきます。


○NIS+ マスタサーバのマシンでやっておくこと

  1. NIS+ ドメインネームを決める
  2. テーブルのファイルをカキ集めて適当なトコにコピーしておく
  3. テーブルの内容を必要に応じて編集
  4. /usr/lib/nis/nisserver -r -Y -d hoge.local.jp
  5. /usr/lib/nis/nispopulate -F -d hoge.local.jp -p テーブルのレポジトリ

ってなトコかな?順番にいってみやうっ!


○NIS+ ドメインネームを決める

お好きなドメインネームをどうぞ(笑)ただ、 DNS と同じドメイン ネームにしておくと、混乱しにくくて良いぞっ!って、Sun Microsystems が推奨しているので、素直にそーしたほうが 良いでしょう。えっっ? BIND なんて動いてねーよって?。そん時は、 BIND を NIS+ と同じ ドメインネームにしましょう(爆)


○テーブルのファイルをカキ集めて適当なトコにコピーしておく

NIS+ でクライアントに提供できるテーブルは、 こんなのもの があります。

見たっ?? んで、/var/nis/map とかって ゆー適当なディレクトリを作って、テーブルの元のファイルを格納 しておくとこを作って、コピーしまくりましょう。


  • cp /etc/auto_master /var/nis/map
  • cp /etc/auto_home /var/nis/map
  • cp /etc/TIMEZONE /var/nis/map/timezone
  • cp /etc/inet/ipnodes /var/nis/map
  • cp /etc/bootparams /var/nis/map
  • cp /etc/netconfig /var/nis/map
  • cp /etc/security/prof_attr /var/nis/map
  • cp /etc/user_attr /var/nis/map
  • cp /etc/mail/aliases /var/nis/map
  • cp /etc/ethers /var/nis/map
  • cp /etc/netgroup /var/nis/map
  • cp /etc/protocols /var/nis/map
  • cp /etc/security/audit_user /var/nis/map
  • cp /etc/security/exec_attr /var/nis/map
  • cp /etc/netmasks /var/nis/map
  • cp /etc/rpc /var/nis/map
  • cp /etc/security/auth_attr /var/nis/map
  • cp /etc/group /var/nis/map
  • cp /etc/networks /var/nis/map
  • cp /etc/services /var/nis/map
  • cp /etc/hosts /var/nis/map
  • cp /etc/passwd /var/nis/map
  • cp /etc/shadow /var/nis/map

とかしてコピーして下さい。コピーが終わったら構築するぞっ! コマンドは・・・・

です。オプションの意味は、

  1. -r :マスタサーバとする
  2. -Y :NIS-compatibility MODE で動作させる
  3. -d :ドメインネーム

ってことです。ここでやってるのは、マスタサーバの設定と、 テーブルの ”型”を作ることです。この処理が終わっても、 テーブルの中身は、まだカラッポです。テーブルの中身に実 体を作るのは、この次の処理になります。

この処理中に、/etc/defaultdomain が作られたり、 /etc/nsswitch.conf が NIS+ 用に書き換えられたりもします。

ホイ、次は、ポピュレートね。nisserver コマンドでテーブル の”型”を 作ったら、次は、中身を入れましょう。それが  /usr/lib/nis/nispopulate コマンドです。コマンドは・・・

です。オプションの意味は、

  1. -F :ファイルからテーブルの実体を生成する
  2. -d :ドメインネーム
  3. -p :実体にするテーブルのファイルのレポジトリ

です。これで、マスタサーバの構築は終わり。でも、クライアントの アクセス許可の設定はまだまだあるよ。あと、NIS+ の daemon を起動 するスクリプトも書き換えないとイケマセン。

/etc/init.d/rpc と、 /etc/rc2.d/S71rpc を書き換えましょう。書き 換えるトコは両方ともいっしょです。テキストエディタで開いてもらっ といて、

ってトコを探して下さい。みての通り、ここの行は、デフォルトでは コメントアウトされています。ここのコメントを取って、さらに

を書き加えて下さい。編集後は

と、こんな感じになります。この編集を、/etc/init.d/rpc と、 /etc/rc2.d/S71rpc の 2 つのファイル にやって下さい。これで、 NIS+ マスタをリブートした場合なんかに、NIS コンパチビリティモードで rpc.nisd が起動して、 NIS クライアントのリクエストにも応えられ るようになります。


□DES Key を発行しやう


○暗号化の為に

NIS+ のウリのひとつである、暗号化の為に、DES Key ってヤツを発行して おきます。とりあえず、

このコマンドたたいとけっ!
  1. # nisaddcred des
  2. # nisgrpadm -c admin.hoge.local.jp.
  3. # nisgrpadm -a admin.hoge.local.jp. server.hoge.local.jp
  4. # /usr/lib/nis/nisupdkeys hoge.local.jp.
  5. # /usr/lib/nis/nisupdkeys org_dir.hoge.local.jp.
  6. # /usr/lib/nis/nisupdkeys groups_dir.hoge.local.jp.

ドメインネームの後ろにピリオドを付けたり、付けなかったりしてるの で、 そのヘンのトコ、気を付けるよーに。あと、3 行目のコマンド中の "server" は、 NIS+ マスタサーバのホストネームです。

まんま server っていれるなよなっ!

んで、 NIS キャッシュマネージャを再起動します。

  1. # nis_cachemgr
  2. # ps -ef | grep rpc.nisd
  3. # kill -9 nis_cachemgr の pid
  4. # rpc.nisd -Y -B

□admin の設定をするぞっ!


○adminの設定

  1. # nisaddcred -p xxxx -P hogeadmin.hoge.local.jp. local
  2. # nisaddcred -p unix.xxxx@hoge.local.jp -P hogeadmin.hoge.local.jp. des
  3. # nisgrpadm -a admin.hoge.local.jp. hogeadmin.hoge.local.jp

ってなとこだっ。オプションの

  1. xxx :admin になる人の uid
  2. hogeadmin: admin になる人のlogin ネーム

です。ここも、ドメインネームの後ろにピリオドが付いたり付 かなかったりするのでちぅいして下さい。


□ここで、ちょこっと実験


○カンタンな動作テスト

NIS+ マスタサーバで、

とかやって見て下さい。テーブルの中身が表示されません か・・・・? hosts.org_dir :unreachable ってメッセージ が表示されたときは、 ザンネンながら、 DES Key の暗号が うまく復元できていません。その 場合は、NIS+ マスタサーバで、

してみてください。NIS+ クライアントホストの root のパスワード を聞いてくるので答えて下さい。その後、もう 1 回、 niscat して テーブルを見て みて下さい。


□NIS+ クライアントの設定


○もう少しだよっ

で、うまくいきませんか・・・?(弱気) で、1回 reboot して、 クライアントで、

とかやって、テーブルの中身が見えたらおっけーでぇーす! あ、 この時、クレデンシャルをきちんと設定してないと、一般のユーザ は、 niscat コマンドでテーブルを参照できません。なので、NIS+ マスタ サーバの root で niscat するか、クレデンシャルを設定 したユーザで niscat してみて下さい。


□NIS+ サーバの普段のメンテナンス


○メンテナンスもできなくっちゃね。

テーブル中の、各エントリを追加・削除しようとする度に、マップの元 ファイルを編集して、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 アド レスを他の値に変更したい場合を仮定します。使い方は、


○NIS+ テーブルをバックアップしておきましょう

不慮の事故にそなえて、常にバックアップを確保しておきたいも のです。なんかある度に、 nisserver / nispopulate / クレデンシャル / オーセンティケーションなんかの設定をしなおすのはめんどいですよね。 なので、NIS+ テー ブルのバックアップを取るコマンドがちゃんと用意 されています。使い方はカンタンで、

です。オプションは、

Verbose モードのメッセージは、 syslog に出力されるようですが (未確認) /etc/syslog.conf になんか設定しないと書き出してくれ ないようです。 一例としては、予め、/var/nis/backup とかゆー ディレクトリを作っておいた と仮定すると、

に、なります。 backup が正常におこなわれると、

と、ゆったディレクトリができていれば、バックアップが取 れています。 ちなみに、/usr/sbin/nisbackup コマンドは、 NIS+ マスタサーバでしか 実行できないようです。


○Restore もできなくっちゃね

バックアップできて、リストアできないってーんぢゃ、バックアップ の意味があんまりないので、次は、リストアの方法です。 /var/nis/backup にバックアップを取ってあると仮定して・・・

です。オプションは、

です。その他のオプションは、 -t のリスト出力があります。

こんなかんぢですね。実際に実行すると、


# ./nisrestore -t /var/nis/backup
ORATORIO-TANGRAM.com.
org_dir.ORATORIO-TANGRAM.com.
groups_dir.ORATORIO-TANGRAM.com.

ってリストが表示されます。


○オリジナルのテーブルを作ろう with nismkdir / nisrmdir

NIS+ は、ユーザ環境に合せたオリジナルのテーブルを作ること もできます。 テーブルの作成も /usr/bin/nistbladm コマンド を使います。 まずは、テーブルの利用目的とアイテムを事前に 設計して頂いて・・・

です。具体例としては、電話番号なんかのテーブルを作りたい場合、 テーブルネームを格納しておく tel ディレクトリを、mymap.hoge.local.jp. に作りたい場合、最初に /usr/bin/nismkdir で、mymap を作ります。 その次に、テーブルの実体を作ってゆきます。手順は、次のようになります。

です。テーブルネームと、格納先の NIS+ レポジトリのレポジトリ ネームを同じにするのがポイントです。正しく作られたかどうか確 認するには、

と、すると、


nisls -l 実行結果
# 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 によるテーブル構造の表示一例
# 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 でバックアップを取っておいてから、 削除したほうが良いでしょうね。




go back    next
Copyright(c) ORATORIO-TANGRAM.com 2001-2007 All Rights Reserved.
Total:counter