ルートマスターサーバーの構成が終了すると、他のネットワークサービスの情報から標準の NIS+ テーブルを生成できます。この節では、nispopulate(1M) スクリプトをデフォルトの設定で使用して、ファイルまたは NIS マップのデータからルートマスターサーバーのテーブルを生成する方法を説明します。このスクリプトは次のものを使用します。
前の例で作成されたドメイン (doc.com.)
ネットワークサービスのソースとしてシステム情報ファイルまたは NIS マップ
標準の NIS+ テーブル:
auto_master、auto_home、ethers、group、hosts、networks、passwd、
protocols、services、rpc、netmasks、bootparams、netgroup、aliases
テーブルの情報源がファイルである場合、shadow ファイルの内容が passwd ファイルの内容とマージされて passwd テーブルが作成されます。shadow テーブルは作成されません。
スクリプト nispopulate を実行するには、次の条件が必要です。
データを読み込むローカルの /etc 内の各ファイルまたは NIS マップを表示します。不正なエントリがないことを確認します。正しいデータが、所定の場所に正しい書式で記録されていることを確認します。エントリのうち、古いもの、無効なもの、破損しているものは削除します。また、不完全なエントリや一部のみのエントリも削除します。構成が完了した後は、いつでも各エントリを追加できます。後から追加する方が、不完全なエントリや破損したエントリを読み込むよりも簡単です。
ファイル内の情報は、それがロードされるテーブルに適合する書式でなければなりません。『Solaris ネーミングの管理』および第 9 章「NIS+ テーブルの設定」では、対応する NIS+ テーブルに変換するテキストファイルで要求される書式について説明しています。
ドメイン名とホスト名が同一でないことを確認します。ドメインとホストで同じ名前は使用しないでください。たとえば、sales というドメインを使用している場合、sales という名前の付いたマシンを使用しないでください。同様に、home という名前のマシンを使用する場合は、home という名前のドメインを作成しないでください。この注意事項は、サブドメインの場合にもあてはまります。たとえば、マシンに west という名前を付けている場合、sales.west.myco.com というサブドメインを作成しないでください。
ホスト名のドットと下線はすべて削除します。NIS+ では、ドット (ピリオド) をマシン名とドメインの間、および親ドメインとサブドメインの間の区切りに使用するため、ドットをマシン名に使うことはできません。DNS ではホスト名に下線を使うことを認めていませんので、ホスト名に下線を使うことはできません。nispopulate スクリプトを実行する前に、ホスト名で使用されているドットを必ず削除してください。ドットをハイフンに置き換えるのも 1 つの手です。たとえば、sales.alpha というマシン名は無効ですが、これを sales-alpha とすれば有効になります。
初めてネットワークを設定する場合、十分なネットワーク情報がどこにも格納されていないことがあります。このような場合、まずネットワーク情報を集め、「入力ファイル」に手入力する必要があります。このファイルは、基本的に /etc 内のファイルに対応するものです。
安全のため、/etc 内のファイルのコピーを作成します。実際のファイルは使用せずに、作成したコピーを使用してテーブルを生成してください。(たとえば、この例では /nisplusfiles というディレクトリ内のファイルを使用します。)
コピーした NIS テーブルファイルのうち、passwd、shadow、aliases、hosts の各ファイルには、名前空間全体に分散させるとセキュリティ上問題がある項目があるので、それらを編集します。たとえば、次に示す行をローカル側の passwd ファイルのコピーから削除して、名前空間からはそれらの情報にアクセスできないようにします。
root:x:0:1:0000-Admin(0000):/:/sbin/sh daemon:x:1:3:0000-Admin(0000):/: bin:x:3:5:0000-Admin(0000):/usr/bin: sys:x:3:3:0000-Admin(0000):/: adm:x:4:4:0000-Admin(0000):/var/adm: lp:x:78:9:0000-lp(0000):/usr/spool/lp: smtp:x:0:0:mail daemon user:/: uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp: nuucp:x:7:8:0000-uucp (0000):/var/spool/uucppublic:/usr/lib/uucp/uucico listen:x:22:6:Network Admin:/usr/net/nls nobody:x:60000:60000:uid no body:/: noaccess:x:60002:60002:uid no access:/:
ドメインがすでに構成され、そのマスターサーバーが実行されていなければなりません。
ドメインのサーバーには、新しいテーブル情報を収容できるだけの十分なディスク空き領域が必要です。
NIS+ 主体 (適切な資格を持つクライアント) としてログインし、指定されたドメイン内の NIS+ テーブルに対する書き込み権が必要です。このサンプルでは、マシン master1 上のユーザー root でなければなりません。
ファイルから生成する場合、次の情報が必要です。
新しい NIS+ ドメイン名
適切に編集された変換されるデータを持つテキストファイルへのパス
ルートパスワード
NIS マップから生成する場合、次の情報が必要です。
新しい NIS+ ドメイン名
NIS ドメイン名
NIS サーバー名
NIS サーバーの IP アドレス
ルートパスワード
NIS のドメイン名では大文字と小文字を区別しますが、NIS+ のドメイン名では区別しません。
手順 1 の「a」または手順 1 の「b」を実行してルートマスターサーバーテーブルを生成して、手順 2 に進みます。
手順 「a」では、ファイルからテーブルを生成する方法を示します。手順 「b」 では、NIS マップからテーブルを生成する方法を示します。これらのコマンドはスクロールできるウィンドウ内で実行します。そうしないと、スクリプトの出力がスクロールされて読めないことがあります。
システムの /tmp 領域が不足すると、nispopulate スクリプトが異常終了することがあります。このようなことが起こらないように、環境変数 TMPDIR
に別のディレクトリを設定できます。TMPDIR
に有効なディレクトリが設定されていない場合、スクリプトは /tmp ディレクトリを使用します。
次のように入力して、ファイルからテーブルを生成します。
master1# nispopulate -F -p /nis+files -d doc.com. NIS+ domain name : doc.com. Directory Path : /nis+files Is this information correct? (type 'y' to accept, 'n' to change)
-F オプションは、テーブルがデータをファイルから取り出すことを示します。-p オプションは、入力ファイルが存在するディレクトリのパスを指定します。(この例では、パスは /nis+files です)。-d オプションは NIS+ ドメイン名を指定します。(この例では、ドメイン名は doc.com. です)。
NIS+ 主体のユーザーは root です。この例では、初めてルートマスターサーバーのテーブルを生成することになるため、この作業はスーパーユーザーとして実行しなければなりません。nispopulate スクリプトは、NIS+ 管理グループのすべてのメンバーの資格を追加します。
次のように入力して、NIS マップからテーブルを生成します。
master1# nispopulate -Y -d doc.com. -h salesmaster -a 130.48.58.111 -y sales.doc.com. NIS+ domain name : doc.com. NIS (YP) domain : sales.doc.com NIS (YP) server hostname : salesmaster Is this information correct? (type 'y' to accept, 'n' to change)
-Y オプションは、テーブルがデータを NIS マップから取り出すことを示します。-d オプションは、NIS+ ドメイン名を指定します。-h オプションは、NIS サーバーのマシン名を指定します。(salesmaster は NIS サーバーの名前の例です。サンプルドメインを作成する際は、salesmaster の代わりに、サイトでの実際の NIS サーバー名を指定してください)。-a オプションは、NIS サーバーの IP アドレスを指定します。(130.48.58.111 はアドレスの例です。サンプルドメインを作成する際は、サイトでの実際の NIS サーバーの IP アドレスを指定してください)。-y オプションは、NIS ドメイン名を指定します。sales.doc.com はドメイン名の例です。サンプルドメインを作成する際は、sales.doc.com の代わりに、サイトでの実際の NIS ドメインの NIS ドメイン名を指定してください。NIS ドメイン名は大文字と小文字が区別されることを忘れないでください。
NIS+ 主体のユーザーは root です。この例では、初めてルートマスターサーバーのテーブルを生成することになるため、この作業はスーパーユーザーとして実行しなければなりません。nispopulate(1M) スクリプトは、NIS+ 管理グループのすべてのメンバーの資格を追加します。
y を入力します (画面に表示された情報が正しい場合)。
n を入力すると、スクリプトは正しい情報の入力を要求します。情報が誤っている場合の操作は、「誤った情報を変更する方法」を参照してください。
手順 1 の「a」を実行すると、次のように表示されます。
Is this information correct? (type 'y' to accept, 'n' to change) y This script will populate the following NIS+ tables for domain doc.com. from the files in /nis+files: auto_master auto_home ethers group hosts networks passwd protocols services rpc netmasks bootparams netgroup aliases shadow **WARNING: Interrupting this script after choosing to continue may leave the tables only partially populated. This script does not do any automatic recovery or cleanup. Do you want to continue? (type 'y' to continue, 'n' to exit this script)
手順 1 の「b」を実行すると、次のように表示されます。
Is this information correct? (type 'y' to accept, 'n' to change) y This script will populate the following NIS+ tables for domain doc.com. from the NIS (YP) maps in domain sales: auto_master auto_home ethers group hosts networks passwd protocols services rpc netmasks bootparams netgroup aliases **WARNING: Interrupting this script after choosing to continue may leave the tables only partially populated. This script does not do any automatic recovery or cleanup. Do you want to continue? (type 'y' to continue, 'n' to exit this script)
y を入力して、テーブルの生成を続けます。
n を入力すると、スクリプトは安全に終了します。y を選択した後で、スクリプトの実行中にスクリプトを中断した場合、スクリプトは動作を停止し、テーブルは一部だけが生成されたままで残されることがあります。現在生成中であったテーブルは、一部だけが生成されていることがあります。スクリプトは自動回復や後始末は行いません。このスクリプトは安全に再実行できますが、テーブルは最新の情報で上書きされます。
ファイルからテーブルを生成する場合、スクリプトがホスト情報とパスワード情報に基づいてホストとユーザーの資格を作成することを示す、次のようなメッセージが表示されます。
Do you want to continue? (type 'y' to continue, 'n' to exit this script) y populating auto_master table from file /nis+files/auto_master ... auto_master table done. populating auto_home table from file /nis+files/auto_home ... auto_home table done. Credentials have been added for the entries in the hosts and passwd table(s). Each entry was given a default network password (also known as a Secure-RPC password). This password is: nisplus Use this password when the nisclient script requests the network password. Done!
Secure RPC パスワード (上の例では nisplus) は必ず控えておき、忘れないようにしてください。ネットワークパスワードまたは Secure RPC パスワードを求められたら、ここで控えておいたパスワードを入力します。
スクリプトは、必要なすべてのファイルを検索し、使用できるファイルからすべてのテーブルを生成します。
NIS マップからテーブルを生成する場合、スクリプトが hosts
と passwd
の情報に基づいてホストとユーザーの資格を作成する際に、次の内容が表示されます。
Do you want to continue? (type 'y' to continue, 'n' to exit this script) y populating auto_master table from sales.doc.com NIS(YP) domain... auto_master table done. populating auto_home table from file sales.doc.com NIS(YP) domain... auto_home table done. .... Credentials have been added for the entries in the hosts and passwd table(s). Each entry was given a default network password (also known as a Secure-RPC password). This password is: nisplus Use this password when the nisclient script requests the network password. Done!
Secure RPC パスワード (上の例では nisplus) は必ず控えておき、忘れないようにしてください。ネットワークパスワードまたは Secure RPC パスワードを求められたら、ここで控えておいたパスワードを入力します。
これですべてのテーブルが生成されました。parse error という警告が表示されるかもしれませんが無視してかまいません。これらのエラーは、NIS+ が特定の NIS マップのフィールドで空の値または予期せぬ値を見つけたことを示します。必要に応じて、スクリプト終了後、データを検証してください。
ルートドメインの管理グループに自分自身と他の管理者を追加します。(この作業は必要に応じて行います。)
たとえば、自分自身のログイン ID が topadm で、他の管理者の ID が secondadmin の場合、次のように入力します。
master1# nisgrpadm -a admin.doc.com. topadm.doc.com. secondadm.doc.com. Added "topadm.doc.com." to group "admin.doc.com.". Added "secondadm.doc.com." to group "admin.doc.com.".
上記の nisgrpadm -a コマンドの引数 admin.doc.com. は、グループ名を表し、最初に記述しなければなりません。残りの 2 つの引数は管理者名です。
この時点で管理グループにユーザーを追加したい場合にだけ、この手順が必要です。ルートサーバーに管理者を追加するには、ここがよいタイミングです。NIS+ を構成した後でも、管理グループにユーザーを追加できます。
この手順を実行するには、ほかの管理者がデフォルトパスワードを変更するまで待つ必要はありません。しかし、管理グループにほかの管理者を追加するには、その前にパスワードテーブルに管理者が登録されていることが必要です。管理グループのメンバーは、ドメインに自分自身を追加しなければ、NIS+ 主体として行動できません。ユーザーの初期設定については、「NIS+ ユーザーを初期設定する方法」を参照してください。また、新規にメンバーが登録されても、管理グループに対する古いキャッシュが破棄された後でなければ有効になりません。
次のコマンドを入力して、ドメインのチェックポイントを実行します。
master1# nisping -C doc.com. Checkpointing replicas serving directory doc.com. Master server is master1.doc.com. Last update occurred at date Master server is master1.doc.com. checkpoint scheduled on master1.doc.com.
この手順によって、そのドメインをサポートする全サーバーは、初期設定 (.log) ファイルから新しい情報をテーブルのディスク上のコピーに転送します。ルートドメインの設定が終了したばかりであるため、このルートドメインにはまだ複製が存在せず、このステップはルートマスターサーバーにだけ影響を与えます。
スワップ領域またはディスク領域が不足している場合、サーバーは適切にチェックポイントを実行できませんが、その旨の通知は行われません。スワップ領域またはディスク領域が不足していないか確認するには、niscat コマンドでテーブルの内容を表示します。たとえば、rpc テーブルの内容をチェックするには、次のように入力します。
master1# niscat rpc.org_dir rpcbind rpcbind 100000 rpcbind portmap 100000 rpcbind sunrpc 100000
スワップ領域が不足していると「チェックポイントを実行できない」という旨のメッセージではなく、次のエラーメッセージが表示されます。
can't list table: Server busy, Try Again.
このメッセージには明示されていませんが、これはスワップ領域の不足を示します。スワップ領域を増やして、再度ドメインのチェックポイントを実行してください。