Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)

第 6 章 NIS+ クライアントの構成

この章では、NIS+ コマンド群を使用した 3 通りの初期設定方法で NIS+ クライアントを設定する手順を説明します。この章の内容は、NIS+ モード、NIS+ 互換モードを問わず、ルートドメイン、サブドメインに共通するものです。


注 –

NIS+ は、将来のリリースではサポートされなくなる可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 リリース以降で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ クライアントの設定の概要

この章では、標準の NIS+ ドメインと NIS 互換ドメイン内のクライアントを構成する方法を説明します。各手順では詳細を説明し、また関連する情報についても説明します。詳しい手順の説明が必要ない場合は、表 6–6 で必要なコマンドの一覧を参照してください。


注 –

NIS+ クライアントを設定する作業は、この章で説明する NIS+ のコマンドセットを使用する方法よりも、パート I で説明した NIS+ 設定スクリプトを使用する方が簡単です。この章で説明する方法は、NIS+ に精通した管理者や、設定スクリプトでは提供されない標準以外の機能や構成を必要とする管理者だけが使用してください。可能な場合は Solaris 管理コンソール を使用すると、NIS+ クライアントマシンの追加や設定の作業が簡単にできます。


クライアントを設定する作業のうち、手順 11 では、ブロードキャスト、ホスト名、コールドスタートファイルのどれを使用するかを選択してください。 それぞれ実装方法が異なるため、各作業について別々に説明します。クライアントを初期設定したあとは、手順 12 に戻ってクライアントの設定を続けてください。

この章の最後の作業では、マシンのドメイン名を変更する方法を取り上げています。

クライアントの設定

ここでは、ルートドメイン内であるかどうかとは関係なく、一般的な NIS+ クライアントの構成方法を説明します。ここでの説明は、通常の NIS+ クライアント、および後で NIS+ サーバーとなるクライアントに当てはまります。また、標準の NIS+ ドメイン内、および NIS 互換ドメイン内のクライアントにも当てはまります。


注意 – 注意 –

またドメイン名とホスト名が同じにならないようにします。たとえば、sales ドメインがある場合は、ホスト名に sales を使用することはできません。同様に、home というホスト名がある場合には、ドメイン名に home を使用できません。これは、サブドメインについても同様です。たとえば、すでにホスト名として west がある場合には、sales.west.doc.com というサブドメインを作成することはできません。


NIS+ クライアントの設定には、次の作業が必要です。

ただし、ルートドメインの設定と同様、クライアントの設定も、これら 3 つの作業を順番に実行するような単純なものではありません。構成手続を実行しやすくするため、これらの作業を個々の手順に分割し、次に示すように、これらの手順をもっとも効率的な順に並べてあります。

  1. ドメインのマスターサーバーにログインします。

  2. 新しいクライアントマシン用の DES 資格を作成します。

  3. マスターサーバーで使用されている Diffie-Hellman キー長を確認します。

  4. クライアントにスーパーユーザーとしてログインします。

  5. クライアントに新しいドメイン名を設定します。

  6. nscd の停止と再起動を行います。

  7. クライアントの nsswitch.conf ファイルの設定を確認します。

  8. クライアントの Diffie-Hellman キーを設定します。

  9. NIS+ のファイルを削除し、プロセスを終了します。

  10. クライアントを初期設定します。

  11. /etc/.rootkey ファイルを削除し、keyserv デーモンを再起動します。

  12. keylogin を実行します。

  13. クライアントを再起動します。

クライアント構成時のセキュリティについて

クライアントの設定には、セキュリティ上の主な必要要件が 2 つあります。つまり、システム管理者とクライアントの両方が、適切な資格とアクセス権を持つことです。そうでない場合、クライアントがセキュリティレベル 2 で実行しているドメインの資格を入手する唯一の方法は、クライアントのホームドメイン内での有効な DES 資格と cred テーブルに対する変更権とを持つシステム管理者が資格を作成することです。システム管理者は DES 資格を、クライアントのホームドメイン内、または自分のホームドメイン内に所持できます。

システム管理者がクライアントの資格を作成すると、そのクライアントは構成プロセスを終了できます。しかしクライアントは、ホームドメインのディレクトリオブジェクトに対する読み取り権を必要とします。第 5 章「ルートドメインの設定」または第 8 章「ルート以外のドメインの構成」の手順に従ってクライアントのホームドメインを構成した場合、ディレクトリオブジェクトの作成に使用した NIS+ コマンド (nisinitnismkdir) によって、読み取り権がその他のクラスに提供されています。

ディレクトリオブジェクトのアクセス権をチェックするには、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 コマンドを使用して変更できます。詳細については、第 15 章「NIS+ のアクセス権の管理」を参照してください。

クライアントの資格を構成するための前提条件

クライアントの資格を設定するシステム管理者は、次の条件をすべて満たしている必要があります。

クライアントは次の条件をすべて満たしている必要があります。

必要な情報

クライアントの設定 — 作業マップ


注 –

NIS+ サービスは、サービス管理機能 (SMF) によって管理されます。このサービスに対する有効化、無効化、再起動などの管理操作を実行するには、svcadm コマンドを使用します。SMF を NIS+ で使用する方法については、「NIS+ とサービス管理機能」を参照してください。SMF の概要については、『Solaris のシステム管理 (基本編)』の「サービスの管理 (概要)」を参照してください。詳細については、svcadm(1M)svcs(1) の各マニュアルページも参照してください。


表 6–1 クライアントの設定

作業 

目的 

参照先 

クライアントの設定 

クライアントの資格を作成する。クライアントマシンを準備して、NIS+ クライアントとして初期設定する 

「NIS+ クライアントを設定する方法」

NIS+ クライアントを設定する方法

  1. ドメインのマスターサーバーにログインする

    スーパーユーザーとして、または自分自身のユーザー名でログインします。どちらでログインするかは、どちらの NIS+ 主体がドメインの cred テーブルに資格を追加するための適切なアクセス権を所有しているのかに依存します。

  2. 新しいクライアントマシン用の DES 資格を作成します。

    nisaddcred コマンドを引数 -p-P を付けて実行します。構文は、次のとおりです。


    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 コマンドの詳細については、第 12 章「NIS+ 資格の管理」を参照してください。

  3. マスターサーバーで使用される Diffie-Hellman キー長を確認します。

    たとえば、以下のようになります。


    rootmaster% nisauthconf dh640-0 des
    
  4. クライアントにスーパーユーザーとしてログインします。

    これでクライアントマシンに資格ができたため、ユーザーはマスターサーバーからログアウトし、クライアント自体から作業を開始できます。この作業はローカルでもリモートでも可能です。

  5. クライアントに新しいドメイン名を設定します。

    クライアントのドメイン名を設定する (変更する) 方法については、「マシンのドメイン名を変更する」を参照し、次の手順 6 に戻ります。

  6. クライアントの nsswitch.conf ファイルをチェックします。

    クライアントが NIS+ バージョンの nsswitch.conf ファイルを使用していることを確認します。これによって、クライアント情報の 1 次ソースが NIS+ テーブルということが確認できます。NIS+ スイッチファイルの詳細については、例 1–1 を参照してください。

  7. nsswitch.conf ファイルに少しでも変更を加えた場合 (または新規にファイルにコピーした場合)、ここで nscd を再起動する必要があります。


    client1# svcadm restart /system/name-service-cache
    

    キーサーバーをこの時点で停止および再起動する必要はありません。手順 12 で行います。

  8. 手順 3 の情報を使用して、Diffie-Hellman キー長を設定します。

    たとえば、次のようにします。


    client# nisauthconf dh640-0 des
    
  9. NIS+ サービスを停止します。


    client1# svcadm disable network/rpc/nisplus:default
    client1# svcs \*nisplus\*
    disabled   Jan_12   svc:/network/rpc/nisplus:default
  10. NIS+ のファイルを削除しプロセスを終了します。

    現在作業しているマシンが、以前は NIS+ のサーバーまたはクライアントとして使用したものである場合、/var/nis 内にファイルがあればすべて削除します。この例では、/var/nis 内にコールドスタートファイルとディレクトリキャッシュファイルがまだ存在します。


    client1# ls /var/nis
    NIS_COLD_START NIS_SHARED_CACHE
    client1# rm -rf /var/nis/*
    

    /var/nis 内に残されたファイル、またはキャッシュマネージャによって保存されたディレクトリオブジェクトは、この手順によって完全に消去されます。したがって、この構成プロセスで生成された新しい情報と重複することはありません。/var/nis 内に管理スクリプトを 1 つでも格納していた場合、ルートドメインの設定が終わるまでは、それらを一時的にほかのどこかに格納しておくことをお勧めします。

  11. クライアントを初期設定します。

    クライアントを初期設定するには、次の 3 つの方法があります。ホスト名、コールドスタートファイル、ブロードキャストによる方法です。3 つの方法のうち、いずれかを選択して実行します。クライアントの初期設定が終了したら、手順 12 に進みます。

  12. /etc/.rootkey ファイルを削除し、keyserv デーモンを再起動します。

    この手順では、非公開鍵をキーサーバー上に格納します。


    client1# cp /etc/nsswitch.nisplus /etc/nsswitch.conf
    client1# svcs \*keyserv\*
    online     Jan_12   svc:/network/rpc/keyserv:default
    client1# svcadm disable network/rpc/keyserv
    client1# rm -f /etc/.rootkey
    client1# svcadm enable network/rpc/keyserv
    

DNS 転送の設定

NIS+ クライアントの DNS 転送機能を有効にするには
  1. スーパーユーザーとしてログインします。

  2. /etc/resolve.conf ファイルの hosts 行を構成します。たとえば、hosts:nisplus dns files とします。

該当するサーバー上に /etc/resolve.conf ファイルが存在する場合、この NIS 実装では DNS へ要求を転送するために、ypstart によって ypserv デーモンが -d オプション付きで「自動的に」起動されます。

マシンのドメイン名を変更する

この作業では、マシンのドメイン名を変更します。マシンのドメイン名は通常インストール時に設定されるため、domainname コマンドを引数なしで実行して、マシンのドメイン名をチェックしてからこの作業を実行してください。

マシンのドメイン名変更時のセキュリティについて

この作業は、ドメイン名を変更するマシン上のスーパーユーザーとして実行しなければなりません。

必要な情報

マシンのドメインの変更 - 作業マップ

表 6–2 クライアントの設定

作業 

目的 

参照先 

マシンのドメインの変更 

nisrestore を使用して、クライアントマシンのドメインを変更する

「クライアントのドメイン名を変更する方法」

クライアントのドメイン名を変更する方法

  1. マシンにログインして、スーパーユーザーになります。

    この例では、マシンに client1 を、新しいドメイン名に doc.com. を使用します。


    client1% su
    Password:
  2. マシンのドメイン名を変更します。

    domainname コマンドを使用して新しい名前を入力します。名前の最後にドットを入力しないでください。たとえば、マシンのドメインを doc.com に変更する場合、次のように入力します。


    client1# domainname doc.com

    マシンが NIS クライアントの場合は、NIS サービスを受けることはできません。

  3. 結果を確認します。

    今度は、引数を付けずに domainname コマンドを実行し、サーバーの現在のドメインを表示させます。


    client1# domainname
    doc.com
  4. 新しいドメイン名を保存します。

    domainname コマンドの出力を /etc/defaultdomain ファイルに書き込みます。


    client1# domainname > /etc/defaultdomain
  5. 適当な時に、マシンを再起動します。

    /etc/defaultdomain ファイルに新しいドメイン名を入力した後でも、一部のプロセスは依然として古いドメイン名で動作している可能性があります。すべてのプロセスに新しいドメイン名を確実に使用させるため、マシンを再起動します。

    この作業は、ほかのいくつかの作業の流れの中で行うものです。再起動は、マシンでのすべての作業が完了したことを確認してから行なってください。確認を怠ると、何度も再起動が必要になる可能性があります。

    mountd などのデーモンを個別に再起動すれば、NFS の問題が解決されることがあります。ただし、構成の変更をデーモン間で同期化するために、マシンを再起動することを強くお勧めします。マシンを再起動することによって、構成の変更の非同期が原因で発生するアプリケーションの失敗を最小限に抑えることができます。

NIS+ クライアントを初期設定する

NIS+ クライアントを初期設定する方法には、以下の 3 つの種類があります。

ブロードキャストにより初期設定する

この方法では、クライアントの存在するサブネット上に IP ブロードキャストを送信して NIS+ クライアントを「初期化」します。

初期化の方法としてはこれがもっとも簡単ですが、もっとも安全性の低い方法でもあります。ブロードキャストに応答した NIS+ サーバーはクライアントが自分自身のコールドスタートファイルに格納する必要がある情報 (サーバーの公開鍵など) をすべて送信します。おそらくブローキャストに応答するのは NIS+ サーバーだけですが、クライアントからは、ブロードキャストに応答したマシンが確かに信用できるサーバーなのかどうか確認できません。 そのため、この方法は小規模で、セキュリティが確保されたサイトでだけ使用することをお勧めします。

クライアント初期設定時のセキュリティについて

この作業は、クライアント上のスーパーユーザーとして実行しなければなりません。

クライアントを初期設定するための前提条件

クライアントと同じサブネット上に、少なくとも 1 台の NIS+ サーバーが存在しなければなりません。クライアントは、マスターサーバーで使用するのと同じ Diffie-Hellman キー長を使用する必要があります。nisauthconf(1M) を参照してください。

必要な情報

クライアントのスーパーユーザーのパスワードが必要です。

NIS+ クライアントを初期設定する — 作業マップ

表 6–3 NIS+ クライアントを初期設定する

作業 

目的 

参照先 

NIS+ クライアントを初期設定する 

nisclient コマンドを使用して NIS+ クライアントを初期設定する

「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+ サーバーがブロードキャストに応答し、その位置情報をクライアントのコールドスタートファイルに追加します。

ホスト名により NIS+ クライアントを初期設定する

クライアントをホスト名によって初期化する場合、信頼できるサーバーの IP アドレスを明確に指摘します。そしてこのサーバー名、位置情報、公開鍵がクライアントのコールドスタートファイルに格納されます。

この方法は、クライアントがサーバーの IP アドレスを指定するので、自分で自分を識別してくるサーバーに応答するブロードキャストよりも安全です。しかし、クライアントと信頼できるサーバーの間にルーターが介在している場合、正しい IP アドレスへのメッセージを横取りし、不正なサーバーに送ることもあり得ます。

ホスト名によりクライアントを初期設定する場合のセキュリティについて

この作業は、クライアント上のスーパーユーザーとして実行しなければなりません。

ホスト名によりクライアントを初期設定するための前提条件

必要な情報

信頼できるサーバー名と IP アドレスが必要です。

ホスト名により NIS+ クライアントを初期設定する — 作業マップ

表 6–4 ホスト名により NIS+ Client を初期設定する

作業 

目的 

参照先 

ホスト名によりクライアントを初期設定する 

nisinit コマンドを使って、NIS+ クライアントをホスト名により初期設定する

「ホスト名によりクライアントを初期設定する方法」

ホスト名によりクライアントを初期設定する方法

  1. クライアントの /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを確認します。

    クライアントが、信頼できるサーバーのエントリを持っていることを確認します。

  2. クライアントを初期設定します。

    この手順では、クライアントを初期設定し、その /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 ファイルまたは /etc/inet/ipnodes ファイル内でサーバーのアドレスを探します。したがって、サーバーにドメイン名を付加しないでください。ドメイン名を付加した場合、このユーティリティはサーバーのアドレスを見つけることができません。

コールドスタートファイルを使用してクライアントを初期設定する

ここでは、NIS+ クライアントを初期設定するために、別の NIS+ クライアント (できれば同じドメインから) の COLD_START を使用します。NIS+ クライアントを設定する方法としてはこれがもっとも安全です。これにより、クライアントは、信頼できるサーバーから確実に NIS+ 情報を得ることができます。これはホスト名やブロードキャストによる初期化では保証されません。

コールドスタートファイルを使用してクライアントを初期設定する場合のセキュリティについて

この作業は、クライアント上のスーパーユーザーとして実行しなければなりません。

コールドスタートファイルを使用してクライアントを初期設定するための前提条件

COLD_START ファイルに指定されたサーバーは、すでに構成されており、NIS+ を実行していなければなりません。

クライアントは、マスターサーバーで使用するのと同じ Diffie-Hellman キー長を使用する必要があります。nisauthconf(1M) を参照してください。

必要な情報

コピーする COLD_START ファイルの名前と位置が必要です。

コールドスタートファイルを使用して NIS+ クライアントを初期設定する —作業マップ

表 6–5 コールドスタートファイルを使用して NIS+ クライアントを初期設定する

作業 

目的 

参照先 

コールドスタートファイル経由でクライアントを初期設定する 

nisinit コマンドを使って、NIS+ クライアントをコールドスタートファイル経由で初期設定する

「COLD_START 経由で NIS+ クライアントを初期設定する方法」

COLD_START 経由で NIS+ クライアントを初期設定する方法

  1. ほかのクライアントの COLD_START ファイルをコピーします。

    ほかのクライアントの COLD_START ファイルを、新しいクライアントのディレクトリにコピーします。これを行うには、クライアント上のスーパーユーザーとしてではなく、自分のユーザー名でログインしている間に行う方が簡単です。クライアントを初期設定する前に、必ずスーパーユーザーになってください。

    ただし、NIS_COLD_START ファイルを /var/nis にコピーしないでください。初期設定中にこのファイルは上書きされます。次の例では、client1 のコールドスタートファイルを、初期設定されていない client2/tmp ディレクトリにコピーします。


    client2# exit
    client2% rcp client1:/var/nis/NIS_COLD_START /tmp
    client2% su
  2. 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.

NIS+ クライアント構成の要覧

クライアントの構成に必要な手順を表 6–6 にまとめます。クライアントは doc.com ドメインにある client1 とします 。これはもっとも簡単なケースを想定しているため、このまとめを参考用として使用するには、その前に自分の実際の作業の詳細を理解することが必要です。簡略化のため、ここでは各コマンドに対するサーバーの応答を示していません。

表 6–6 クライアントを設定する - コマンドのまとめ

作業 

コマンド 

ドメインのマスターサーバーにログインする 

rootmaster%

クライアントの DES 資格を作成する 

rootmaster% nisaddcred -p unix.client1.doc.com -P client1.doc.com. des

Diffie-Hellman キー長を確認する 

rootmaster% nisauthconf

クライアントにスーパーユーザーとしてログインする 

client1% su

Password:

クライアントのドメイン名を設定する 

client1# domainname doc.com

client1# domainname > /etc/defaultdomain

クライアントのスイッチ構成ファイルが正しく設定されていることをチェックする 

client1# more /etc/nsswitch.conf

Diffie-Hellman キー長を設定する 

client1# nisauthconf dh640-0 des

/var/nis の下のファイルを削除する

client1# rm -rf /var/nis/*

クライアントを初期設定する 

client1# nisinit -c -H rootmaster

/etc/.rootkey ファイルを削除し、キーサーバーを再起動する

client1# svcadm disable network/rpc/keyserv

client1# rm -f /etc/.rootkey

client1# svcadm enable network/rpc/keyserv

クライアント上でキーログインを実行する 

client1# keylogin -r password:

クライアントを再起動する 

client1# reboot