この章では、NIS+ コマンド群を使用した 3 通りの初期設定方法で NIS+ クライアントを設定する手順を説明します。ここで説明する手順は、NIS+ または NIS 互換であるかどうかにかかわらず、ルートドメインとサブドメインの両方に適用されます。
この章では、標準の NIS+ ドメインと NIS 互換ドメイン内のクライアントを構成する方法を説明します。手順の説明ではそれぞれの内容を詳細に説明し、関連する情報も示します。詳しい手順の説明が必要でない場合は、表 6-1 の「必要なコマンドの一覧」を参照してください。
NIS+ クライアントを設定する作業は、この章で説明する NIS+ コマンドセットを使用する方法よりも、Part I で説明した NIS+ 設定スクリプトを使用する方が簡単です。この章で説明する方法は、NIS+ に精通した管理者や、設定スクリプトでは提供されない標準以外の機能や構成を必要とする管理者だけが使用してください。Solstice AdminSuite がある場合には、これを使用すると NIS+ クライアントマシンの追加や設定の作業が簡単にできます。
クライアントを設定する作業のうち、手順 8 では、ブロードキャスト、ホスト名、またはコールドスタートファイルのうちのどれかを使用する方法を選択してください。それぞれ実装方法が異なるため、各作業について別々に説明します。クライアントを初期設定したあとは、手順 9 に戻ってクライアントの設定を続けてください。
この章の最後の作業では、ワークステーションのドメイン名を変更する方法を取り上げています。
ここでは、ルートドメイン内であるかどうかとは関係なく、一般的な NIS+ クライアントの構成方法を説明します。ここでの説明は、通常の NIS+ クライアント、および後で NIS+ サーバーとなるクライアントに当てはまります。また、標準の NIS+ ドメイン内、および NIS 互換ドメイン内のクライアントにも当てはまります。
ドメインとホストで同じ名前を使用しないでください。たとえば、sales というドメインを使用している場合、sales という名前の付いたマシンは使用しないでください。同様に、home という名前のマシンを使用する場合は、home という名前のドメインを作成しないでください。これは、サブドメインの場合にもあてはまります。たとえば、マシンに west という名前を付けている場合、sales.west.myco.com というサブドメインを作成しないでください。
NIS+ クライアントの設定には、次の作業が必要です。
クライアントの資格の作成
ワークステーションの準備
ワークステーションを NIS+ クライアントとして初期設定
ただし、ルートドメインの設定と同様、クライアントの設定も、これら 3 つの作業を順番に実行するような単純なものではありません。構成手続を実行しやすくするため、これらの作業を個々の手順に分割し、次に示すように、これらの手順を最も効率的な順に並べてあります。
ドメインのマスターサーバーにログインします。
新しいクライアントワークステーション用の DES 資格を作成します。
クライアントにスーパーユーザーとしてログインします。
クライアントに新しいドメイン名を設定します。
NIS+ のファイルを削除し、プロセスを終了します。
クライアントを初期設定します。
keyserv デーモンのプロセスを終了して再起動します。
keylogin を実行します。
クライアントを再起動します。
クライアントの設定には、セキュリティ上の主な必要要件が 2 つあります。つまり、システム管理者とクライアントの両方が、適切な資格とアクセス権を持つことです。そうでない場合、クライアントがセキュリティレベル 2 で実行しているドメインの資格を入手する唯一の方法は、クライアントのホームドメイン内での有効な DES 資格と cred テーブルに対する変更権とを持つシステム管理者が資格を作成することです。システム管理者は DES 資格を、クライアントのホームドメイン内、または自分のホームドメイン内に所持できます。
システム管理者がクライアントの資格を作成すると、そのクライアントは構成プロセスを終了できます。しかしクライアントは、ホームドメインのディレクトリオブジェクトに対する読み取りアクセス権を必要とします。第 5 章「ルートドメインの設定」または第 8 章「非ルートドメインの構成」の手順に従ってクライアントのホームドメインを構成した場合、ディレクトリオブジェクトの作成に使用した NIS+ コマンド (nisinit と nismkdir) によって、読み取りアクセス権がその他のクラスに提供されています。
ディレクトリオブジェクトのアクセス権をチェックするには、niscat-o コマンドを使用します。このコマンドは、アクセス権などのディレクトリ属性を表示します。次にその例を示します。
rootmaster# niscat -o doc.com. ObjectName : Doc Owner : rootmaster.doc.com. Group : admin.doc.com. Domain : Com. Access Rights : r---rmcdr---r---
ディレクトリオブジェクトのアクセス権は、これに対する変更権があれば、nischmod コマンドを使用して変更できます。詳しくは、『Solaris ネーミングの管理』の権利に関連する章を参照してください。
クライアントの資格を設定するシステム管理者は、次の条件をすべて満たしている必要があります。
有効な DES 資格を持っていること
クライアントのホームドメインにある cred テーブルを修正する権利を持っていること
クライアントは次の条件をすべて満たしている必要があります。
ホームドメインのディレクトリオブジェクトに対する読み取り権を持っていること
クライアントのホームドメインがあらかじめ構成されており、NIS+ を実行していること
マスターサーバーの /etc/hosts ファイル、またはドメインの hosts テーブルの中にエントリが存在すること
マシン名が、どのユーザーの ID とも重複しておらず、固有であること
マシン名にドットが含まれていないこと。たとえば、sales.alpha というマシン名は使用できません。sales-alpha というマシン名なら使用できます。
クライアントのホームドメイン名
クライアントとなるワークステーションのスーパーユーザーパスワード
クライアントのホームドメイン内にある NIS+ サーバーの IP アドレス
ドメインのマスターサーバーにログインします。
スーパーユーザーとして、または自分自身のユーザー名でログインします。どちらでログインするかは、どちらの NIS+ 主体がドメインの cred テーブルに資格を追加するための適切なアクセス権を所有しているのかに依存します。
新しいクライアントワークステーション用の DES 資格を作成します。
-p と -P の引数を付けた nisaddcred コマンドを実行します。
nisaddcred -p secure-RPC-netname principal-name des [domain]
secure-RPC-netname は、接頭辞 unix に、クライアントのホスト名、@ 記号、およびクライアントのドメイン名を付けて構成しますが、最後にドットは付けません。 principal-nameは、クライアントのホスト名とドメイン名によって構成され、最後にドットを付けます。このクライアントの所属するドメインが、コマンドを入力したサーバーとは異なる場合、2 番目の引数の後にクライアントのドメイン名を追加します。
この例では、doc.com. ドメイン内の client1 という名前のクライアントワークステーションに対する DES 資格を追加します。
rootmaster% nisaddcred -p unix.client1@doc.com -P client1.doc.com. des Adding key pair for unix.client1@doc.com (client1.doc.com.). Enter client1.doc.com.'s root login passwd: Retype password:
nisaddcred コマンドについて、詳細は、『Solaris ネーミングの管理』の資格に関する章を参照してください。
クライアントにスーパーユーザーとしてログインします。
これでクライアントワークステーションに資格ができたため、ユーザーはマスターサーバーからログアウトし、クライアント自体から仕事を開始できます。この作業はローカルでもリモートでも可能です。
クライアントに新しいドメイン名を設定します。
クライアントのドメイン名を設定する (変更する) 方法については、「ワークステーションのドメインを変更する」を参照し、次の手順 5 に戻ります。
クライアントのスイッチ構成ファイルをチェックします。
クライアントが NIS+ バージョンの nsswitch.conf ファイルを使用していることを確認します。これによって、クライアント情報の 1 次ソースが NIS+ テーブルということが確認できます。NIS+ スイッチファイルの詳細は、「NIS+ 用デフォルトスイッチファイル」をご覧ください。
nsswitch.conf ファイルに何らかの変更を加えた場合 (または、新規にファイルにコピーした場合) 、必ず次の表のように入力して nscd を停止してから再起動する必要があります。
client1# cp /etc/nsswitch.nisplus /etc/nsswitch.conf client1# sh /etc/init.d/nscd stop client1# sh /etc/init.d/nscd start
(第 1 章「ネームサービススイッチの設定」では、この時点でキーサーバーを停止して、再起動するよう説明していますが、同じ操作を手順 9 で行うため、この場合は停止および再起動の必要はありません。)
NIS+ のファイルを削除し、プロセスを終了します。
作業しているワークステーションが、すでに NIS+ のサーバーまたはクライアントとして使用されていて、まだ実行中の場合、/var/nis ディレクトリに存在するファイルすべてを削除し、キャッシュマネージャを停止します。
client1# ls /var/nis NIS_COLD_START NIS_SHARED_CACHE client1# rm -rf /var/nis/* client1# ps -ef | grep nis_cachemgr root 295 260 10 15:26:58 pts/0 0:00 grep nis_cachemgr root 286 1 57 15:21:55 ? 0:01 /usr/sbin/nis_cachemgr client1# kill -9 286
/var/nis 内に残されたファイル、またはキャッシュマネージャによって保存されたディレクトリオブジェクトは、この手順によって完全に消去されます。したがって、この構成プロセスで生成された新しい情報と重複することはありません。/var/nis 内に管理スクリプトが格納されている場合、ルートドメインの設定が終了するまでは、これらを一時的に他の場所に格納しておくこともできます。
クライアントの初期設定は、ホスト名、コールドスタートファイル、またはブロードキャストのいずれかを使用して行うことができます。3 つの方法のうち、いずれかを選択して実行します。クライアントの初期設定が終了したら、手順 9 に進みます。
keyserv デーモンを終了してから再起動します。
この手順では、非公開鍵をキーサーバー上に格納します。
keyserv デーモンを終了します。
この手順によって、キーサーバーが保持していたクライアントに関するスイッチ情報も更新されます。
キーサーバーを再起動します。
次の例では、手順 9 の内容を示しています。
client1# ps -e | grep keyserv root 145 1 67 16:34:44 ? keyserv client1# kill 145 client1# rm -f /etc/.rootkey client1# keyserv
keylogin -r を実行します。
この手順では、クライアントの非公開鍵をキーサーバーに格納します。また、クライアント上のスーパーユーザーが NIS+ を使用するために keylogin を行わなくてもすむように、/etc/.rootkey にコピーを保存します。-r オプションを付けて keylogin を実行します。パスワードの入力を求められたら、クライアントのスーパーユーザーパスワードを入力します。このパスワードは、クライアントの DES 資格を作成するために与えられたパスワードと同じでなければなりません。
client1# keylogin -r Password: Wrote secret key into /etc/.rootkey
クライアントを再起動します。
この作業では、ワークステーションのドメイン名を変更します。ワークステーションのドメイン名は通常インストール時に設定されるため、domainname コマンドを引数なしで実行して、ワークステーションのドメイン名をチェックしてからこの作業を実行してください。
この作業は、ドメイン名を変更するワークステーション上のスーパーユーザーとして実行しなければなりません。
ワークステーションのスーパーユーザーパスワード
新しいドメイン名
ワークステーションにログインし、スーパーユーザーになります。
この例では、ワークステーションに client1 を、新しいドメイン名に doc.com. を使用します。
client1% su Password:
ワークステーションのドメイン名を変更します。
domainname コマンドを使用して新しい名前を入力します。名前の最後にドットを入力しないでください。たとえば、ワークステーションのドメインを doc.com に変更するのであれば、次のように入力します。
client1# domainname doc.com
ワークステーションが NIS クライアントであった場合は、NIS サービスを受けることはできません。
結果を確認します。
今度は、引数を付けずに domainname コマンドを実行し、サーバーの現在のドメインを表示させます。
client1# domainname doc.com
新しいドメイン名を保存します。
domainname コマンドの出力を /etc/defaultdomain ファイルに書き込みます。
client1# domainname > /etc/defaultdomain
適当な時に、ワークステーションを再起動します。
/etc/defaultdomain ファイルに新しいドメイン名を入力した後でも、一部のプロセスは依然として古いドメイン名で動作している可能性があります。すべてのプロセスに新しいドメイン名を確実に使用させるため、ワークステーションを再起動します。
この作業は、他のいくつかの作業の流れの中で行うものです。したがってリブートは、ワークステーション上でのすべての作業が完了したことを確認してから行ってください。確認を怠ると、何度もリブートが必要になる可能性があります。
NIS+ クライアントを初期設定する方法には、以下の3つの種類があります。
ブロードキャストを使用する方法 (「ブロードキャストにより初期設定する」を参照)
ホスト名を使用する方法 (「ホスト名により NIS+ クライアントを初期設定する」を参照)
コールドスタートファイルを使用する方法 (「コールドスタートファイルにより初期設定する」を参照)
この方法では、クライアントの存在するサブネット上に IP ブロードキャストを送信して NIS+ クライアントを「初期化」します。
初期化の方法としてはこれが最も簡単ですが、最も安全性の低い方法でもあります。ブロードキャストに応答した NIS+ サーバーはクライアントが自分自身のコールドスタートファイルに格納する必要がある情報 (サーバーの公開鍵など) をすべて送信します。おそらくブローキャストに応答するのは NIS+ サーバーだけですが、クライアントからは、ブロードキャストに応答したワークステーションが確かに信用できるサーバーなのかどうか確認できません。そのため、この方法は小規模で、セキュリティが確保されたサイトでだけ使用することをお勧めします。
この作業は、クライアントのスーパーユーザーとして実行しなければなりません。
クライアントと同じサブネット上に、少なくとも 1 台の NIS+ サーバーが存在しなければなりません。
クライアントのスーパーユーザーのパスワードが必要です。
クライアントを初期設定します。
この手順では、クライアントを初期設定し、その /var/nis ディレクトリに NIS_COLD_START ファイルを作成します。nisinit コマンドに -c と -B のオプションを付けて実行します。
client1# nisinit -c -B This machine is in the doc.com. NIS+ domain. Setting up NIS+ client ... All done.
同じサブネット上の NIS+ サーバーがブロードキャストに応答し、その位置情報をクライアントのコールドスタートファイルに追加します。
クライアントをホスト名によって初期化する場合、信頼できるサーバーの IP アドレスを明確に指摘します。そしてこのサーバー名、ロケーション情報、公開鍵がクライアントのコールドスタートファイルに格納されます。
この方法は、クライアントがサーバーの IP アドレスを指定するので、自分で自分を識別してくるサーバーに応答するブロードキャストよりも安全です。しかし、クライアントと信頼できるサーバーの間にルーターが介在している場合、正しい IP アドレスへのメッセージを横取りし、不正なサーバーに送ることもあり得ます。
この作業は、クライアント上のスーパーユーザーとして実行しなければなりません。
NIS+ サービスはクライアントのドメインで実行されていなければなりません。
クライアントは、/etc/hosts ファイル内に信頼できるサーバーのエントリを持っていなければなりません。
信頼できるサーバー名と IP アドレスが必要です。
クライアントの /etc/hosts ファイルを確認します。
クライアントが、信頼できるサーバーのエントリを持っていることを確認します。
クライアントを初期設定します。
この手順では、クライアントを初期設定し、その /var/nis ディレクトリ内に NIS_COLD_START ファイルを作成します。nisinit コマンドに -c と -H のオプションを付けて実行します。次の例では、信頼できるサーバーとして rootmaster を使用します。
Client1# nisinit -c -H rootmaster This machine is in the doc.com. NIS+ domain. Setting up NIS+ client ... All done.
nisinit ユーティリティは、クライアントの /etc/hosts ファイル内でサーバーのアドレスを探します。したがって、サーバーにドメイン名を付加しないでください。ドメイン名を付加した場合、このユーティリティはサーバーのアドレスを見つけることができません。
ここでは、NIS+ クライアントを初期設定するために、別の NIS+ クライアント (できれば同じドメインから) のCOLD_START ファイルを使用します。 NIS+ クライアントを設定する方法としてはこれが最も安全です。これにより、クライアントが、信頼できるサーバーから NIS+ 情報を得ることを確実にできます。これはホスト名やブロードキャストによる初期化では保証されません。
この作業は、クライアント上のスーパーユーザーとして実行しなければなりません。
COLD_START ファイルに指定されたサーバーは、すでに構成されており、NIS+ を実行していなければなりません。
コピーするCOLD_START ファイルの名前と位置が必要です。
他のクライアントの COLD_START ファイルをコピーします。
他のクライアントの COLD_START ファイルを、新しいクライアントのディレクトリにコピーします。これを行うには、クライアント上のスーパーユーザーとしてではなく、自分のユーザー名でログインしている間に行う方が簡単です。クライアントを初期設定する前に、必ずスーパーユーザーに切り替えてください。
ただし、NIS_COLD_START ファイルを /var/nis にコピーしないでください。初期設定中にこのファイルが上書きされます。次の例では、client1 の COLD_START を、初期設定されていない client2 の /tmp ディレクトリにコピーします。
client2# exit client2% rcp client1:/var/nis/NIS_COLD_START /tmp client2% su
COLD_START ファイルからクライアントを初期設定します。
次に示すように、nisinit コマンドに -c と -C のオプションを付けて実行します。
client2# nisinit -c -C /tmp/NIS_COLD_START This machine is in the doc.com. NIS+ domain. Setting up NIS+ client ... All done.
クライアントの構成に必要な手順を 表 6-1 にまとめます (クライアントは doc.com ドメインにある client1 とします) 。これは最も簡単なケースを想定しているため、このまとめを参考用として使用するには、その前に自分の実際の作業の詳細を理解することが必要です。簡略化のため、ここでは各コマンドに対するサーバーの応答を示していません。
表 6-1 クライアントを設定する方法のまとめ
作業 |
コマンド |
---|---|
ドメインのマスターサーバーにログインする |
rootmaster% |
クライアントの DES 資格を作成する |
rootmaster% nisaddcred -p unix.client1.doc.com -P client1.doc.com. des |
クライアントにスーパーユーザーとしてログインする |
client1% su Passeord: |
クライアントのドメイン名を設定する |
client1# domainname doc.com client1# domainname > /etc/defaultdomain |
クライアントのスイッチ構成ファイルが正しく設定されていることをチェックする |
client1# more /etc/nsswitch.conf |
/var/nis の下のファイルを削除する |
client1# rm -rf /var/nis/* |
クライアントを初期設定する |
client1# nisinit -c -H rootmaster |
キーサーバーのプロセスを終了して、再起動する |
client1# ps -ef | grep keyserv client1# kill -9 process-id client1# keyserv |
クライアント上でキーログインを実行する |
client1# keylogin -r password: |
クライアントを再起動する |
client1# init 6 |