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

マスターサーバーの準備

以下の節では、マスターサーバーのソースファイルと 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 マップが転送されます。