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

第 8 章 NIS サービスの設定と構成

この章では、ネットワーク情報サービス (NIS) の初期設定と構成について説明します。


注 –

「マシン」名の代わりに「ホスト」名が使われることがあります。 この解説では「マシン」名が使われていますが、一部の画面メッセージまたは NIS マップ名では「ホスト」名または「マシン」名が使われています。


この章の内容は次のとおりです。

NIS の構成 — 作業マップ

作業 

参照先 

変換用のソースファイルを準備する 

NIS マップへの変換用のソースファイルを準備する

ypinit を使用してマスターサーバーを設定する

ypinit によるマスターサーバーの設定

マスターサーバーで NIS を起動する 

マスターサーバーでの NIS サービスの開始

スレーブサーバーを設定する 

スレーブサーバーを設定する

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

NIS クライアントの設定

NIS の構成を始める前に

NIS の名前空間を構成する前に、次の操作を行う必要があります。

NISドメインの設計

NIS サーバーまたはクライアントとしてマシンを構成する前に、NIS ドメインを設計する必要があります。

まず、NIS ドメインに入れるマシンを決めます。 NIS ドメインは、ネットワークと同一である必要はありません。 ネットワークには複数の NIS ドメインが存在でき、NIS ドメインに属さないマシンもネットワーク上に存在できます。

次に、NIS ドメイン名を選択します。NIS ドメイン名には、最高 256 文字を指定できます。 ドメイン名が 32 文字を超えないように制限するとよいでしょう。 ドメイン名は大文字と小文字を区別します。 便宜上、インターネットのドメイン名に基づいて NIS ドメイン名を指定することもできます。 たとえば、インターネットのドメイン名が doc.com の場合、NIS ドメインも doc.com にすることができます。doc.com を 2 つの NIS ドメインに分けて、1 つを営業部門に、もう 1 つを製造部門に使用する場合は、一方を sales.doc.com とし、もう一方を manf.doc.com とできます。

NIS ドメイン名とマシン名を正しく設定しないと、マシンが NIS サービスを使用できるようになりません。 マシン名はマシンの /etc/nodename ファイルによって設定され、マシンのドメイン名はマシンの /etc/defaultdomain ファイルによって設定されます。 これらファイルはブート時に読み取られ、その内容はそれぞれ uname -S コマンドと domainname コマンドによって使用されます。 ディスクレスマシンは、そのブートサーバーからこれらのファイルを読み取ります。

NIS サーバーとクライアントを特定する

マスターサーバーになるマシンを 1 つ選択します。 スレーブサーバーを作成する場合は、スレーブサーバー用のマシンを決定します。

NIS クライアントになるマシンを決定します。 通常は、ドメイン内のすべてのマシンが NIS クライアントになるように設定されますが、これは必須ではありません。

マスターサーバーの準備

以下の節では、マスターサーバーのソースファイルと passwd ファイルを準備する方法を説明します。

ソースファイルディレクトリ

ソースファイルは、マスターサーバーの /etc ディレクトリか、その他のディレクトリにあります。 ソースファイルを /etc に入れることは望ましくありません。 マップの内容がマスターサーバー上のローカルファイルの内容と同じになるからです。 これは passwd ファイルと shadow ファイルに固有の問題です。 ユーザー全員がマスターサーバーのマップにアクセスし、passwd マップを通じてすべての NIS クライアントに root パスワードが渡されるためです。 詳細については、passwd ファイルと名前空間のセキュリティ を参照してください。

ただし、ソースファイルを他のディレクトリに入れた場合は、/var/yp 内の MakefileDIR=/etc 行を DIR=/your-choice に変更する必要があります。your-choice はソースファイルを格納するためのディレクトリの名前です。 これによって、サーバー上のローカルファイルをクライアント上のファイルのように扱うことができます。 (編集前の Makefile のコピーを保存しておくことをお勧めします)。

また、audit_userauth_attrexec_attrprof_attr がデフォルト以外のディレクトリから取り出される場合は、RBACDIR=/etc/securityRBACDIR=/your-choice に変更します。

passwd ファイルと名前空間のセキュリティ

passwd マップは特殊なケースです。 この NIS 実装では、NIS パスワードマップを作成するための入力として、Solaris 1 の passwd ファイルのフォーマットに加え、Solaris 7 の /etc/passwd ファイルと /etc/shadow ファイルのフォーマットも使用できます。

セキュリティ上の理由から未承認の root アクセスを防ぐために、NIS のパスワードマップの構築に使用されるファイルには root のエントリを含めないでください。 このため、パスワードマップはマスターサーバーの /etc ディレクトリに置かれたファイルから構築しないでください。 パスワードマップの構築に使用されるパスワードファイルは、root エントリが削除された上、未承認のアクセスから保護されるディレクトリに置かれている必要があります。

たとえば、マスターサーバーのパスワード入力ファイルは、ファイル自体が別のファイルへのリンクではなく、ファイルの場所が Makefile に指定されている限り、/var/yp/ などのディレクトリに格納されているか、選択したディレクトリに格納されている必要があります。 /usr/lib/netsvc/yp/ypstart スクリプトは、Makefile に指定された構成に従って適切なディレクトリオプションを自動的に設定します。


注意 – 注意 –

PWDIR によってディレクトリ内に指定された passwd ファイルに root のエントリが含まれないようにしてください。


ソースファイルが /etc 以外のディレクトリにある場合は、MakefilePWDIR パスワードマクロが、passwd ファイルと shadow ファイルが入っているディレクトリを参照するように変更します。この操作を行うには、PWDIR=/etc 行を PWDIR=/your-choice に変更します。your-choice は、passwd マップソースファイルを格納するのに使用するディレクトリの名前です。

NIS マップへの変換用のソースファイルを準備する

NIS マップへの変換用のソースファイルを準備します。

変換用のソースファイルを準備する方法
  1. スーパーユーザーになります。

  2. マスターサーバーのソースファイルをチェックして、それらのファイルが環境の最新の状態を反映しているかどうか確認します。

    次のファイルを確認します。

    • auto.home または auto_home

    • auto.master または auto_master

    • bootparams

    • ethers

    • group

    • hosts

    • ipnodes

    • netgroup

    • netmasks

    • networks

    • passwd

    • protocols

    • rpc

    • services

    • shadow

    • user_attr

  3. これらのソースファイル (passwd を除く) をすべて、選択した DIR ディレクトリにコピーします。

  4. passwd ファイルを、選択した PWDIR ディレクトリにコピーします。

  5. audit_userauth_attrexec_attrprof_attr を、選択した RBACDIR ディレクトリにコピーします。

  6. /etc/mail/aliases ファイルを確認します。

    他のソースファイルと異なり、/etc/mail/aliases ファイルは別のディレクトリに移動できません。 このファイルは /etc/mail ディレクトリに格納されていなければなりません。 ドメイン全体で利用するメールエイリアスがすべて /etc/mail/aliases ソースファイルに含まれていることを確認します。 詳細については、aliases(4) のマニュアルページを参照してください。

  7. ソースファイルからすべてのコメントと、その他の余計な行や情報を取り除きます。

    これらの操作は、sed または awk の各スクリプトを通じて、またはテキストエディタを使用して行えます。 Makefile はソースファイルから不要なエントリをある程度自動的に削除しますが、これらのファイルを手動で検証し、クリーンアップしてから実行することをお勧めします。

  8. すべてのソースファイルのデータが正しい形式になっていることを確認します。

    ソースファイルのデータは、それぞれのファイルに適した形式で格納されている必要があります。 該当するマニュアルページを参照して、各ファイルが正しい形式になっていることを確認します。

Makefile を準備する

ソースファイルをチェックしてソースファイルディレクトリにコピーしたら、NIS サービスが使用する ndbm 形式のマップにそのソースファイルを変換する必要があります。 次のypinit によるマスターサーバーの設定の節で説明しているように、この処理は、マスターサーバーで ypinit が実行されると自動的に行われます。

ypinit スクリプトはプログラム make を呼び出します。このプログラムは、/var/yp ディレクトリに置かれた Makefile を使用します。 /var/yp ディレクトリにはデフォルトの Makefile が用意されており、この中にはソースファイルを要求された ndbm 形式のマップに変換するためのコマンドが入っています。

デフォルトの Makefile は、そのまま使用することも必要に応じて修正することもできます。 (デフォルトの Makefile を修正するときは、将来必要な場合に備えて、必ず最初に修正前の Makefile をコピーして保存するようにしてください。) 次に説明する Makefile への修正のうち、必要に応じて1 つまたは複数を実行します。

Makefile は、all の下にリストされるデータベースのそれぞれに対して適切な NIS マップを作成します。 データは makedbm で処理され、mapname.dirmapname.pag の 2 つのファイルに保存されます。 この両ファイルは、マスターサーバーの /var/yp/domainname ディレクトリに置かれます。

Makefile は必要に応じて、/PWDIR/passwd/PWDIR/shadow/PWDIR/security/passwd.adjunct の各ファイルから passwd マップを作成します。

ypinit によるマスターサーバーの設定

ypinit スクリプトは、マスターサーバー、スレーブサーバー、クライアントが NIS を使用するように設定します。 また最初に make を実行して、マスターサーバー上にマップを作成します。

ypinit を使用して新規に NIS マップセットをマスターサーバーに作成する場合は、次の手順に従います。

ypinit を使用してマスターサーバーを設定する方法
  1. マスターサーバーでスーパーユーザーになります。

  2. nsswitch.files ファイルの内容を nsswitch.conf ファイルにコピーします。

    # cp /etc/nsswitch.files /etc/nsswitch.conf

  3. /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、NIS サーバーのそれぞれの名前と IP アドレスを追加します。

  4. 新しいマップをマスターサーバーに作成します。

    # /usr/sbin/ypinit -m

  5. ypinit によって NIS スレーブサーバーになる他のマシンのリストを求めるプロンプトが表示されたら、作業中のサーバー名と NIS スレーブサーバー名を入力します。

  6. 致命的でないエラーが発生したときにすぐに処理を終了するか、引き続き処理を継続するかを ypinit が尋ねてきたら、y と入力します。

    y を選択すると、ypinit は最初の問題が発生すると終了します。問題を解決して ypinit を再起動します。 ypinit を初めて実行する場合はこの手順に従うようにしてください。 処理を継続する場合は、発生する問題をすべて手動で解決してから ypinit を再起動します。


    注 –

    マップファイルの一部が存在しないと、致命的でないエラーが発生することがあります。 これは NIS の機能に影響するエラーではありません。 マップが自動的に作成されない場合は、必要に応じて手動で追加します。 デフォルトの NIS マップの詳細については、デフォルトの NIS マップ を参照してください。


  7. /var/yp/domainname ディレクトリ内の既存のファイルを破棄してもよいかどうか ypinit が尋ねてきます。

    このメッセージは、NIS が以前に設定されている場合にだけ表示されます。

  8. ypinit は、サーバーのリストを作成し終わると make を起動します。

    このプログラムは、/var/yp に置かれた Makefile (デフォルトまたは修正されたもの) に含まれている命令を使用します。 make コマンドは、指定したファイルにコメント行があればその行を取り除きます。 また、指定したファイルに対して makedbm を実行して適切なマップを作成し、各マップにマスターサーバー名を設定します。

    マスターサーバー上で domainname コマンドを実行すると返されるドメイン以外に対するマップの転送を Makefile で行う場合は、ypinit シェルスクリプトの中で make コマンドの変数 DOM に適切なドメイン名を指定して起動すれば、マップを正しいドメインに転送することができます。次のように入力してください。


    # make DOM=domainname password
    

    このコマンドによって、マスターサーバーが属するドメインではなく目的のドメインに password マップが転送されます。

  9. 次のように入力してネームサービスとして NIS を有効にします。

    # cp /etc/nsswitch.nis /etc/nsswitch.conf

    現在のスイッチファイルが、デフォルトの NIS 用スイッチファイルに置き換えられます。 このファイルは必要に応じて編集可能です。

複数の NIS ドメインをサポートするマスターサーバー

NIS マスターサーバーは通常、NIS ドメインだけをサポートします。 ただし、マスターサーバーを使用して複数のドメインをサポートする場合は、前の節で説明したように、追加のドメイン用にサーバーを設定するときに手順を若干修正する必要があります。

サーバー上で domainname コマンドを実行します。 このコマンドによって返されるドメイン名はサーバーのデフォルトドメインです。 前の節で説明した手順は、このデフォルトドメインへのサービスを設定する場合は正しく機能します。 他のドメインへのサービスを設定する場合は、ypinit シェルスクリプトを次のように修正する必要があります。

# make DOM=correct-domain passwd

correct-domain はサービスを設定している他のドメインの名前であり、passwdmake のターゲットです。 このコマンドによって、マスターサーバーが属するドメインではなく目的のドメインに passwd マップが転送されます。

マスターサーバーでの NIS サービスの開始

マスターサーバーのマップが作成されると、NIS デーモンをマスターサーバーで起動してサービスを開始できます。 これを行うには、ypserv をサーバー上で起動して、ypbind を実行する必要があります。 クライアントがサーバーの情報を要求すると、ypserv デーモンは NIS マップ内で検索してクライアントからの情報の要求に応答します。

サーバー上で NIS サービスを起動するには 2 つの方法があります。

NIS サービスを自動的に開始する

ypinit を実行して NIS マスターサーバーを構成し終わると、マシンのブート時に ypstart が自動的に起動され、ypserv が開始されます。 ypinit によるマスターサーバーの設定を参照してください。

コマンド行から NIS を開始または停止する

NIS サービスをコマンド行から開始する場合は、ypstart スクリプトを実行します。

# /usr/lib/netsvc/yp/ypstart


注 –

起動後に ypserv が呼び出しに応答できるようになるまでに若干の遅延があります。プログラムまたはスクリプトの内部から呼び出す場合は、ypstart の実行後に 3 - 5 秒間スリープ状態にしてください。


NIS サービスを停止する場合は、ypstop スクリプトを実行します。

# /usr/lib/netsvc/yp/ypstop

NIS スレーブサーバーの設定

ネットワークは 1 つ以上のスレーブサーバーを持つことができます。 スレーブサーバーを持つことで、マスターサーバーが利用できない場合にも NIS サービスを継続して利用できます。

スレーブサーバーを準備する

ypinit を実際に実行してスレーブサーバーを作成する前に、domainname コマンドを NIS スレーブサーバーごとに実行してドメイン名がマスターサーバーと一致していることを確認します。


注 –

ドメイン名は大文字と小文字を区別します。


ネットワークが正しく機能していることを確認してから、NIS スレーブサーバーを構成してください。 特に、rcp を使用して NIS マスターサーバーから NIS スレーブサーバーにファイルを送れるかどうかを確認してください。

スレーブサーバーを設定する

次の手順はスレーブサーバーの設定方法を示しています。

スレーブサーバーを設定する方法
  1. スーパーユーザーになります。

  2. スレーブサーバー上で /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、他のすべての NIS サーバー名と IP アドレスを追加します。

  3. スレーブサーバー上の /var/yp にディレクトリを変更します。


    注 –

    まず、新しいスレーブサーバーを NIS クライアントとして構成して、最初にマスターサーバーから NIS マップを入手できるようにします。 詳細については、NIS クライアントの設定 を参照してください。


  4. 次のように入力して、スレーブサーバーにするマシンをクライアントとして初期設定します。

    # /usr/sbin/ypinit -c

    ypinit コマンドによって、NIS サーバーのリストを求めるプロンプトが表示されます。 作業中のローカルマシン (スレーブ) の名前を最初に入力してからマスターサーバーを入力し、その後にドメイン内の他の NIS スレーブサーバーをネットワーク的に近いものから遠いものの順番で入力します。

  5. 次のように入力して、ypbind が実行されているかどうか確認します。

    # ps -ef | grep ypbind

    リストが表示されたら、ypbind は実行されています。

  6. ypbind が実行中である場合は停止します。

    # /usr/lib/netsvc/yp/ypstop

  7. 次のように入力して ypbind を再起動します。

    # /usr/lib/netsvc/yp/ypstart

  8. 次のように入力して、このマシンをスレーブサーバーとして初期設定します。

    # /usr/sbin/ypinit -s master

    master は、既存の NIS マスターサーバーのマシン名です。

    この節で説明した手順を、NIS スレーブサーバーとして構成するマシンごとに繰り返します。

次の手順は、スレーブサーバーで NIS サービスを開始する方法を示しています。

スレーブサーバーで NIS を開始する方法
  1. スーパーユーザーになります。

  2. 既存の yp プロセスをすべて停止します。

    # /usr/lib/netsvc/yp/ypstop

  3. スレーブサーバーで ypserve を起動して、ypbind を実行します。

    # /usr/lib/netsvc/yp/ypstart

    この方法とは別に、スレーブサーバーをリブートしてデーモンを自動的に開始することもできます。

NIS クライアントの設定

ネームサービスとして NIS を使用するようにクライアントマシンを設定するには、次の 2 つの方法があります。