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

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

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


注 –

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


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

NIS の構成 — 作業マップ

作業 

参照先 

変換用のソースファイルを準備します。 

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

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

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

マスターサーバーで NIS を起動します。 

「マスターサーバーでの NIS サービスの開始と停止」

スレーブサーバーを設定します。 

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

NIS クライアントを設定します。 

「NIS クライアントの設定」

NIS の構成を始める前に

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

NIS とサービス管理機能

NIS サービスはサービス管理機能によって管理されます。SMF の概要については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」を参照してください。また、詳細については、svcadm(1M) および svcs(1) のマニュアルページを参照してください。

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 ファイルのフォーマットに加え、/etc/passwd ファイルと /etc/shadow ファイルのフォーマットも使用できます。

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

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


注意 – 注意 –

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


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

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

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

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

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

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

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

    • auto.home または auto_home

    • auto.master または auto_master

    • audit_user

    • auth_attr

    • bootparams

    • ethers

    • exec_attr

    • group

    • hosts

    • ipnodes

    • netgroup

    • netmasks

    • networks

    • passwd

    • protocols

    • rpc

    • サービス

    • 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 ディレクトリに格納されていなければなりません。詳細については、aliases(4) のマニュアルページを参照してください。


    注 –

    /var/yp/Makefile 内の ALIASES = /etc/mail/aliases エントリを変更して別の場所を指すようにすることで、NIS 固有のメールエイリアスファイルを追加することができます。make を実行すると、ALIASES エントリによって mail.aliases マップが作成されます。/etc/nsswitch.conf ファイルで files のほかに nis が適切に指定されている場合、sendmail サービスは /etc/mail/aliases ファイルに加えてこのマップを使用します。Makefile の更新と使用」を参照してください。


  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 マップセットをマスターサーバーに作成する場合は、次の手順に従います。

Procedureypinit を使用してマスターサーバーを設定する方法

  1. マスターサーバーで、スーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

  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 ドメインだけをサポートします。ただし、マスターサーバーを使用して複数のドメインをサポートする場合は、ypinit によるマスターサーバーの設定」で説明したように、追加のドメイン用にサーバーを設定するときに手順を若干修正する必要があります。

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


# make DOM=correct-domain passwd

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

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

マスターサーバーのマップが作成されると、NIS デーモンをマスターサーバーで起動してサービスを開始できます。NIS サービスを有効にすると、ypservypbind がサーバー上で起動されます。クライアントがサーバーの情報を要求すると、ypserv デーモンは NIS マップ内で検索してクライアントからの情報の要求に応答します。ypserv デーモンと ypbind デーモンは 1 単位として管理されます。

サーバー上で NIS サービスを開始または停止するには、次の 3 つの方法があります。

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

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

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

サービス管理機能の svcadm コマンド、または ypstart/ypstop コマンドを使用して、コマンド行から NIS を開始および停止します。svcadm コマンドを使用する場合、サービスのインスタンスを複数実行しているときにのみインスタンス名が必要です。詳細については、「NIS とサービス管理機能」、または svcadm(1M)ypstart(1M)、および ypstop(1M) のマニュアルページを参照してください。

コマンド行から NIS を開始するには、svcadm enable コマンドまたは ypstart コマンドを使用します。


# svcadm enable network/nis/server:<instance>
# svcadm enable network/nis/client:<instance>
or
# ypstart

注 –

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


NIS サービスを停止するには、svcadm disable コマンドまたは ypstop コマンドを実行します。


# svcadm disable network/nis/server:<instance>
# svcadm disable network/nis/client:<instance>
or
# ypstop

NIS サービスを停止してすぐに再起動するには、svcadm restart コマンドを使用します。


# svcadm restart network/nis/server:<instance>
# svcadm restart network/nis/client:<instance>

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

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

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

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


注 –

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


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

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

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

Procedureスレーブサーバーを設定する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

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

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


    注 –

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


  4. スレーブサーバーをクライアントとして初期化します。


    # /usr/sbin/ypinit -c
    

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

  5. NIS クライアントが実行されているかどうかを確認し、必要に応じてクライアントサービスを開始します。


    # svcs network/nis/client
    STATE          STIME     FMRI
    online         20:32:56  svc:/network/nis/client:default

    svc:/network/nis/client の状態が online と表示される場合、NIS は実行されています。サービスの状態が無効となっている場合、NIS は実行されていません。

    1. NIS クライアントが実行されている場合、クライアントサービスを再起動します。


      # svcadm restart network/nis/client
      
    2. NIS クライアントが実行されていない場合、クライアントサービスを開始します。


      # svcadm enable network/nis/client
      
  6. このマシンをスレーブサーバーとして初期設定します。


    # /usr/sbin/ypinit -s master
    

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

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

Procedureスレーブサーバーで NIS を開始する方法

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

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。

NIS クライアントの設定

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


注 –

Solaris オペレーティングシステムは、NIS クライアントとネイティブな LDAP クライアントが同一のクライアントマシン上に共存する構成をサポートしません。



注 –

セキュリティーと管理の意味から、クライアントにブロードキャストを使ってサーバーを検索させるのではなく、クライアントの ypservers ファイルでクライアントのバインド先のサーバーを指定してください。ブロードキャストは、ネットワークの速度を落とし、クライアントの速度も落とします。また、異なるクライアントに対して異なるサーバーをリストするため、サーバー負荷の均衡がとれなくなります。