データを転送する各ファイルをチェックします。
不正なエントリがないことを確認します。正しいデータが、所定の場所に正しい書式で記録されていることを確認します。エントリのうち、古いもの、無効なもの、破損しているものは削除します。また、不完全なエントリや一部のみのエントリも削除します。不完全なエントリは、設定を完了した後に追加する方が、不完全なエントリや破損したエントリを転送するよりも簡単です。
転送する各ファイルの作業用コピーを作成します。
このセクションで説明する実際のファイル転送の手順では、作成した作業用コピーを使用します。各作業用コピーには、同じファイル名拡張子を付けます (たとえば、.xfr)。
rootmaster# cp /etc/hosts /etc/hosts.xfr
万が一に備えて、使用する予定のすべてのファイルを /etc 以外のディレクトリにコピーしておくのもよいでしょう。nisaddent コマンドと nispopulate コマンドでは、ファイルソースディレクトリを指定できます。
NIS+ クライアントにログインします。
この作業はどの NIS+ クライアントからでも実行できます。ただし、そのクライアントは、情報の転送先となるテーブルと同じドメインに所属していなければなりません。ここで示す例では、ルートマスターサーバーを使用します。これらの例では、システム管理者はスーパーユーザーとしてログインしているため、この操作を実際に実行している (したがって、適切な資格とアクセス権を必要とする) NIS+ 主体は、ルートマスターサーバーです。
しかし、NIS+ テーブルを更新するだけであれば、あえてルートマスターサーバーにスーパーユーザー (ルート) としてログインする必要はありません。スーパーユーザーであれ、一般ユーザーであれ、一定の資格、権限、許可さえあれば、どのマシンからでも NIS+ テーブルを更新できます。
このシェルのコマンド検索パスに /usr/lib/nis を追加します。
テーブルごとに /usr/lib/nis/nisaddent コマンドを使用するため、検索パスに /usr/lib/nis を追加しておくと、毎回これを入力する必要がありません。ここでは、C シェルユーザーの場合と Bourne シェルまたは Korn シェルのユーザーの場合の 2 つの例を示します。
C シェルの場合
rootmaster# setenv PATH $PATH¥:/usr/lib/nis
Bourne または Korn シェルの場合
rootmaster# PATH=$PATH:/usr/lib/nis rootmaster# export PATH
nisaddent を使用して、次のファイルを 1 度に 1 つずつ転送します。
aliases bootparams ethers group hosts netgroup netmasks networks protocols rpc services
publickey、automounter、passwd および shadow の各ファイルは、実行する手順がそれぞれ少し異なります。publickey ファイルの場合は、手順 6 に、automounter ファイルの場合は、手順 7 に、passwd ファイルと shadow ファイルの場合は、手順 8 に進んでください。
デフォルトでは、nisaddent はファイル情報をテーブル情報に追加します。置換またはマージを行うには、-r または -m オプションを使用します。
rootmaster# nisaddent -r -f filename table[domain]
追加する場合、次のように入力します。
rootmaster# nisaddent -a -f filename table [domain]
マージする場合、次のように入力します。
rootmaster# nisaddent -m -f filename table [domain]
初めてテーブルを生成する場合は、デフォルトの -a オプションが最適です。NIS+ テーブルを NIS マップまたは /etc 内のファイルと同期させるための最適なオプションは -m (マージ) オプションです。
filename はファイル名です。通常は、nisaddent によって作成されたことを示す .xfr をファイル名の最後につけます。
table は NIS+ テーブル名です。domain 引数は省略可能で、テーブルを別のドメインに生成するときに使用します。ルートドメインのマスターサーバーから入力されたいくつかの例を次に示します。これらのファイルは、/etc 内のファイルを編集したものです。
rootmaster# nisaddent -m -f /etc/hosts.xfr hosts rootmaster# nisaddent -m -f /etc/groups.xfr groups
この作業をルート以外のサーバーから実行する場合、ルート以外のサーバーは、サポートするドメインの上のドメインに所属することに注意してください。つまり、ルート以外のサーバーはもう一つのドメインのクライアントです。たとえば、sales.doc.com. マスターサーバーは doc.com. ドメインに所属します。そのマスターサーバーからテーブルを sales.doc.com. ドメインに生成するには、nisaddent 文に sales.doc.com. ドメイン名を追加しなければなりません。たとえば、次のようになります。
salesmaster# nisaddent -f /etc/hosts.xfr hosts sales.doc.com.
この作業を sales.doc.com. ドメインのクライアントとして実行した場合、このコマンドにドメイン名を指定する必要はありません。nisaddent については、『Solaris ネーミングの管理』のテーブルに関連する章を参照してください。
エントリが NIS+ テーブルに転送されたことを確認するには、niscat コマンドを使用します。 詳細は、『Solaris ネーミングの管理』のテーブルに関する章を参照してください。
rootmaster# niscat groups.org_dir root::0:root other::1:: bin::2:root,bin,daemon .
障害追跡のこつ: niscat を実行しても表示された内容が反映されてない場合、それは、変更がマスターサーバーから複製サーバーに送られていないためかもしれません。そのような場合は、5 〜 10 分後にもう一度 niscat の実行を試みるか、niscat に -M オプションを付けて実行してください。-M オプションを付けると、マスターサーバーのデータが取得されます。
publickey ファイルを転送します。
ドメインの cred テーブルには、すでにいくつかの資格が格納されているため、この cred テーブルに転送する publickey テキストファイルの内容によって、これらの資格が上書きされないよう確認する必要があります。これを避けるには、publickey テキストファイルからこれらの資格を取り除きます。rootmasterの場合、次のようになります。
unix.rootmaster@doc.com public-key:private-key
こうすれば、publickey ファイルの内容を cred テーブルに転送できます。nisaddent に -a (追加) オプションを付けて実行します。
rootmaster# nisaddent -a -f /etc/publickey.xfr -t cred.org_dir publickey [domain]
ただし、この操作は DES 資格を cred テーブルに転送するだけです。主体は、cred テーブルに対する自分の LOCAL 資格を作成する必要があります。
オートマウンタ情報を転送します。
nissetup ユーティリティは auto_master テーブルと auto_home テーブルを作成しますが、これらは標準の NIS+ テーブルとはみなされません。したがって、これらのテーブルに情報を転送するには、少し異なる構文が必要となります。特に、-t フラグを使用し、そのテーブルが key-value 形式であることを指定しなければなりません。
rootmaster# nisaddent -f auto.master.xfr -t auto_master.org_dir key-value rootmaster# nisaddent -f auto.home.xfr -t auto_home.org_dir key-value
NIS+ パスワードテーブルを作成します。
NIS+ のパスワードテーブルは、/etc/passwd および /etc/shadow の両方のディレクトリのファイルから引き出されるデータで構成されます。このため、nisaddent を 2 回実行してパスワードテーブルを作成しなければなりません。passwd テーブルを対象として /etc/passwd ファイルからデータを引き出す場合と、shadow テーブルを対象として /etc/shadow ファイルからデータを引き出す場合の 2 回実行します。(shadow ファイルに対して nisaddent を実行する場合、shadow テーブルが存在しなくても、ターゲットテーブルに shadow を指定すること、そしてデータが実際に passwd テーブルの shadow 列に配置されることに注意してください。)
rootmaster# nisaddent -m -f /etc/passwd.xfr passwd rootmaster# nisaddent -m -f /etc/shadow.xfr shadow
nisping を実行して更新内容を複製サーバーに送ります。
nisping を実行すると、複製サーバーに変更が反映されます。
master1# nisping domain master1# nisping org_dir.domaincom. master1# nisping groups_dir.domain
テーブルに対しチェックポイントを実行します。
ここまでの手順で、マスターサーバーと複製サーバーの NIS+ データセットがメモリ内で更新されました。今度はそれをディスク上のテーブルファイルに書き込みます。この作業を「チェックポイント」といいます。(チェックポイントは必ずしもここで実行しなければならないわけではありません。定期的に実行しさえすればいいのですが、重要な変更を加えた場合は、できるだけ早い機会にディスクに書き込むようにした方がいいでしょう。)
この手順により、ドメインをサポートしている全サーバーは、それらの .log ファイルからディスク上のテーブルのコピーに新しい情報を転送します。ルートドメインを設定したばかりの場合、そのルートドメインにはまだ複製サーバーがないため、この手順はルートマスターサーバーだけが対象となります。チェックポイントを実行するには nisping コマンドに -C (大文字) オプションを付けて実行します。
rootmaster# isping -C org_dirn Checkpointing replicas serving directory org_dir.doc.com. : Master server is rootmaster.doc.com. Last update occurred at July 14, 1997 Master server is rootmaster.doc.com. checkpoint succeeded.
スワップ空間が不足している場合、サーバーはチェックポイントを正常に実行できませんが、そのことを通知してくれません。すべてがうまくいったことを確認する方法の 1 つは、niscat コマンドを使用してテーブルの内容を表示することです。スワップ空間が不足している場合、次のエラーメッセージが表示されます。
can't list table: Server busy, Try Again.
このメッセージ内容からはわかりませんが、これはスワップ空間の不足を示しています。スワップ空間を増やし、このドメインに再びチェックポイントを実行します。