この章では、ネットワーク情報サービス (NIS) の初期設定と構成について説明します。
「マシン」名の代わりに「ホスト」名が使われることがあります。この解説では「マシン」名が使われていますが、一部の画面メッセージまたは NIS マップ名では「ホスト」名または「マシン」名が使われています。
この章の内容は次のとおりです。
作業 |
参照先 |
---|---|
変換用のソースファイルを準備します。 | |
ypinit を使用してマスターサーバーを設定します | |
マスターサーバーで NIS を起動します。 | |
スレーブサーバーを設定します。 | |
NIS クライアントを設定します。 |
NIS の名前空間を構成する前に、次の操作を行う必要があります。
NIS を使用する予定のすべてのマシンで、正しく構成された nsswitch.conf ファイルをインストールする。詳細については、第 2 章ネームサービススイッチ (概要)を参照してください。
NIS ドメインを設計する。
NIS サービスはサービス管理機能によって管理されます。SMF の概要については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」を参照してください。また、詳細については、svcadm(1M) および svcs(1) のマニュアルページを参照してください。
このサービスに関する有効化、無効化、再起動などの管理アクションは svcadm コマンドを使用して実行できます。NIS を開始または停止するには、コマンド行から ypstart および ypstop も使用できます。詳細については、ypstart(1M) および ypstop(1M) のマニュアルページを参照してください。
-t オプションを使用してサービスを一時的に無効化すると、そのサービス構成に対していくらかの保護を提供できます。-t オプションを指定してサービスを無効にした場合、リブート後に元の設定が復元されます。-t オプションを指定しないでサービスを無効にした場合、リブート後もそのサービスは無効のままです。
NIS の障害管理リソース識別子 (FMRI) は、NIS サーバーに対しては svc:/network/nis/server:<instance>、NIS クライアントに対しては svc:/network/nis/client:<instance> です。
svcs コマンドを使用して NIS の状態を照会できます。
svcs コマンドと出力の例を、次に示します。
# svcs network/nis/server STATE STIME FMRI online Jan_10 svc:/network/nis/server:default |
# svcs \*nis\* STATE STIME FMRI disabled 12:39:18 svc:/network/rpc/nisplus:default disabled 12:39:18 svc:/network/nis/server:default disabled 12:39:20 svc:/network/nis/passwd:default disabled 12:39:20 svc:/network/nis/update:default disabled 12:39:20 svc:/network/nis/xfr:default online 12:42:16 svc:/network/nis/client:default |
svcs -l コマンドと出力の例を、次に示します。
# svcs -l /network/nis/client fmri svc:/network/nis/client:default enabled true state online next_state none restarter svc:/system/svc/restarter:default contract_id 99 dependency exclude_all/none svc:/network/nis/server (offline) dependency require_all/none svc:/system/identity:domain (online) dependency require_all/restart svc:/network/rpc/bind (online) dependency require_all/none svc:/system/filesystem/minimal (online) |
サービスに関してより詳細な情報を得るには、svccfg ユーティリティーを使用します。svccfg(1M) のマニュアルページを参照してください。
デーモンの存在は ps コマンドを使用して確認できます。
# ps -e | grep rpcbind daemon 100806 1 0 Sep 01 ? 25:28 /usr/sbin/rpcbind |
-f オプションを ps で使用しないでください。このオプションはユーザー ID を名前に変換しようとするため、より多くのネームサービス検索が失敗する可能性があります。
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 コマンドによって使用されます。ディスクレスマシンは、そのブートサーバーからこれらのファイルを読み取ります。
マスターサーバーになるマシンを 1 つ選択します。スレーブサーバーを作成する場合は、スレーブサーバー用のマシンを決定します。
NIS クライアントになるマシンを決定します。通常は、ドメイン内のすべてのマシンが NIS クライアントになるように設定されますが、これは必須ではありません。
以降の節では、マスターサーバーのソースファイルと passwd ファイルを準備する方法を説明します。
ソースファイルは、マスターサーバーの /etc ディレクトリか、その他のディレクトリにあります。ソースファイルを /etc に入れることは望ましくありません。マップの内容がマスターサーバー上のローカルファイルの内容と同じになるからです。これは passwd ファイルと shadow ファイルに固有の問題です。ユーザー全員がマスターサーバーのマップにアクセスし、passwd マップを通じてすべての NIS クライアントに root パスワードが渡されるためです。詳細については、「passwd ファイルと名前空間のセキュリティー」を参照してください。
ただし、ソースファイルをほかのディレクトリに入れた場合は、/var/yp 内の Makefile の DIR=/etc 行を DIR=/your-choice に変更する必要があります。your-choice はソースファイルを格納するためのディレクトリの名前です。これによって、サーバー上のローカルファイルをクライアント上のファイルのように扱うことができます。編集前の Makefile のコピーを保存しておくことをお勧めします。
また、audit_user、auth_attr、exec_attr、prof_attr がデフォルト以外のディレクトリから取り出される場合は、RBACDIR=/etc/security を RBACDIR=/your-choice に変更します。
passwd マップは特殊なケースです。この NIS 実装では、NIS パスワードマップを作成するための入力として、Solaris 1 の passwd ファイルのフォーマットに加え、/etc/passwd ファイルと /etc/shadow ファイルのフォーマットも使用できます。
セキュリティー上の理由から未承認の root アクセスを防ぐために、NIS のパスワードマップの構築に使用されるファイルには root のエントリを含めないでください。このため、パスワードマップはマスターサーバーの /etc ディレクトリに置かれたファイルから構築しないでください。パスワードマップの構築に使用されるパスワードファイルは、root エントリが削除された上、未承認のアクセスから保護されるディレクトリに置かれている必要があります。
たとえば、マスターサーバーのパスワード入力ファイルは、ファイル自体が別のファイルへのリンクではなく、ファイルの場所が Makefile に指定されている限り、/var/yp/ などのディレクトリに格納されているか、選択したディレクトリに格納されている必要があります。Makefile に指定された構成に従って、適正なディレクトリオプションが自動的に設定されます。
PWDDIR
によってディレクトリ内に指定された passwd ファイルに root のエントリが含まれないようにしてください。
ソースファイルが /etc 以外のディレクトリにある場合は、Makefile の PWDIR
パスワードマクロが、passwd ファイルと shadow ファイルが入っているディレクトリを参照するように変更します。この操作を行うには、PWDIR=/etc 行を PWDIR=/your-choice に変更します。your-choice は、passwd マップソースファイルを格納するのに使用するディレクトリの名前です。
NIS マップへの変換用のソースファイルを準備します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。
マスターサーバーのソースファイルをチェックして、それらのファイルがシステムの最新の状態を反映しているかどうか確認します。
次のファイルを確認します。
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
passwd ファイルを、選択した PWDIR ディレクトリにコピーします。
audit_user、auth_attr、exec_attr、prof_attr を、選択した RBACDIR ディレクトリにコピーします。
ほかのソースファイルと異なり、/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 の更新と使用」を参照してください。
ソースファイルからすべてのコメントと、その他の余計な行や情報を取り除きます。
これらの操作は、sed または awk の各スクリプトで、またはテキストエディタを使用して実行できます。Makefile はソースファイルから不要なエントリをある程度自動的に削除しますが、これらのファイルを手動で検証し、クリーンアップしてから実行することをお勧めします。
すべてのソースファイルのデータが正しい形式になっていることを確認します。
ソースファイルのデータは、それぞれのファイルに適した形式で格納されている必要があります。該当するマニュアルページを参照して、各ファイルが正しい形式になっていることを確認します。
ソースファイルをチェックしてソースファイルディレクトリにコピーしたら、NIS サービスが使用する ndbm 形式のマップにそのソースファイルを変換する必要があります。「ypinit によるマスターサーバーの設定」の節で説明しているように、この処理は、マスターサーバーで呼び出されると ypinit によって自動的に行われます。
ypinit スクリプトはプログラム make を呼び出します。このプログラムは、/var/yp ディレクトリに置かれた Makefile を使用します。/var/yp ディレクトリにはデフォルトの Makefile が用意されており、この中には要求された ndbm 形式のマップにソースファイルを変換するためのコマンドが入っています。
デフォルトの Makefile は、そのまま使用することも必要に応じて修正することもできます。(デフォルトの Makefile を修正するときは、将来必要な場合に備えて、必ず最初に修正前の Makefile をコピーして保存するようにしてください。)次に説明する Makefile への修正のうち、必要に応じて 1 つまたは複数を実行します。
「デフォルトではないマップ」
デフォルトではない自分専用のソースファイルを作成して NIS マップに変換する場合は、そのソースファイルを Makefile に追加する必要があります。
「DIR
の値」
「ソースファイルディレクトリ」で説明しているように、/etc 以外のディレクトリに格納されたソースファイルを Makefile で使用する場合は、Makefile の DIR
の値を、使用するディレクトリに変更してください。この値を Makefile で変更するときは行をインデントしないでください。
「PWDIR
の値」
/etc 以外のディレクトリに格納された passwd、shadow、adjunct の各ソースファイルを Makefile で使用する場合は、Makefile の PWDIR
の値を、使用するディレクトリに変更します。この値を Makefile で変更するときは行をインデントしないでください。
「ドメインネームリゾルバ」
現在のドメインにはないマシンに対して NIS サーバーがドメインネームリゾルバを使用するようにする場合は、Makefile の B= 行をコメントアウトし、B=-b 行のコメントを解除します (有効にする)。
Makefile の機能は、all の下にリストされるデータベースのそれぞれに対して適切な NIS マップを作成することです。データは makedbm で処理され、mapname.dir と mapname.pag の 2 つのファイルに保存されます。この両ファイルは、マスターサーバーの /var/yp/domainname ディレクトリに置かれます。
Makefile は必要に応じて、/PWDIR/passwd、/PWDIR/shadow、/PWDIR/security/passwd.adjunct の各ファイルから passwd マップを構築します。
ypinit スクリプトは、マスターサーバー、スレーブサーバー、クライアントが NIS を使用するように設定します。また最初に make を実行して、マスターサーバー上にマップを作成します。
ypinit を使用して新規に NIS マップセットをマスターサーバーに作成する場合は、次の手順に従います。
マスターサーバーで、スーパーユーザーになるか、同等の役割になります。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。
nsswitch.files ファイルの内容を nsswitch.conf ファイルにコピーします。
# cp /etc/nsswitch.files /etc/nsswitch.conf |
/etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、NIS サーバーのそれぞれの名前と IP アドレスを追加します。
新しいマップをマスターサーバーに作成します。
# /usr/sbin/ypinit -m |
ypinit によって NIS スレーブサーバーになるほかのマシンのリストを求めるプロンプトが表示されたら、作業中のサーバー名と NIS スレーブサーバー名を入力します。
致命的でないエラーが発生したときにすぐに処理を終了するか、引き続き処理を継続するかを ypinit が尋ねてきたら、y と入力します。
y を選択すると、ypinit は最初の問題が発生すると終了します。問題を解決して ypinit を再起動します。ypinit を初めて実行する場合はこの手順に従うようにしてください。処理を継続する場合は、発生する問題をすべて手動で解決してから ypinit を再起動します。
マップファイルの一部が存在しないと、致命的でないエラーが発生することがあります。これは NIS の機能に影響するエラーではありません。マップが自動的に作成されない場合は、必要に応じて手動で追加します。すべてのデフォルトの NIS マップの詳細については、「デフォルトの NIS マップ」を参照してください。
/var/yp/domainname ディレクトリ内の既存のファイルを破棄してもよいかどうか ypinit が尋ねてきます。
このメッセージは、NIS が以前に設定されている場合にだけ表示されます。
ypinit は、サーバーのリストを作成し終わると make を起動します。
このプログラムは、 /var/yp に置かれた Makefile (デフォルトまたは修正されたもの) に含まれている命令を使用します。make コマンドは、指定したファイルにコメント行があればその行を取り除きます。また、指定したファイルに対して makedbm を実行して適切なマップを作成し、各マップにマスターサーバー名を設定します。
マスターサーバー上で domainname コマンドを実行すると返されるドメイン以外に対するマップの転送を Makefile で行う場合は、ypinit シェルスクリプトの中で make コマンドの変数 DOM に適切なドメイン名を指定して起動すれば、マップを正しいドメインに転送することができます。次のように入力してください。
# make DOM=domainname password |
このコマンドによって、マスターサーバーが属するドメインではなく目的のドメインに password マップが転送されます。
次のように入力してネームサービスとして NIS を有効にします。
# cp /etc/nsswitch.nis /etc/nsswitch.conf |
現在のスイッチファイルが、デフォルトの NIS 用スイッチファイルに置き換えられます。このファイルは必要に応じて編集可能です。
NIS マスターサーバーは通常、NIS ドメインだけをサポートします。ただし、マスターサーバーを使用して複数のドメインをサポートする場合は、「ypinit によるマスターサーバーの設定」で説明したように、追加のドメイン用にサーバーを設定するときに手順を若干修正する必要があります。
サーバー上で domainname コマンドを実行します。このコマンドによって返されるドメイン名はサーバーのデフォルトドメインです。「ypinit によるマスターサーバーの設定」で説明した手順は、そのドメインへのサービスの設定では正しく機能します。ほかのドメインへのサービスを設定する場合は、ypinit シェルスクリプトを次のように修正する必要があります。
# make DOM=correct-domain passwd |
correct-domain はサービスを設定しているほかのドメインの名前であり、passwd は make のターゲットです。このコマンドによって、マスターサーバーが属するドメインではなく目的のドメインに passwd マップが転送されます。
マスターサーバーのマップが作成されると、NIS デーモンをマスターサーバーで起動してサービスを開始できます。NIS サービスを有効にすると、ypserv と ypbind がサーバー上で起動されます。クライアントがサーバーの情報を要求すると、ypserv デーモンは NIS マップ内で検索してクライアントからの情報の要求に応答します。ypserv デーモンと ypbind デーモンは 1 単位として管理されます。
サーバー上で NIS サービスを開始または停止するには、次の 3 つの方法があります。
ブートプロセス中に /usr/lib/netsvc/yp/ypstart スクリプトを自動的に起動する
コマンド行からサービス管理機能の svcadm enable <fmri> コマンドおよび svcadm disable <fmri> コマンドを使用する
SMF の詳細については、svcadm(1M) を参照してください。
コマンド行から ypstart(1M) コマンドおよび ypstop(1M) コマンドを使用する
ypinit を実行して NIS マスターサーバーを構成し終わると、マシンのブート時に ypstart が自動的に起動され、 ypserv が開始されます。「ypinit によるマスターサーバーの設定」を参照してください。
サービス管理機能の 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> |
ネットワークは 1 つ以上のスレーブサーバーを持つことができます。スレーブサーバーを持つことで、マスターサーバーが利用できない場合にも NIS サービスを継続して利用できます。
ypinit を実際に実行してスレーブサーバーを作成する前に、domainname コマンドを NIS スレーブサーバーごとに実行してドメイン名がマスターサーバーと一致していることを確認するようにしてください。
ドメイン名は大文字と小文字を区別します。
ネットワークが正しく機能していることを確認してから、NIS スレーブサーバーを構成してください。特に、rcp を使用して NIS マスターサーバーから NIS スレーブサーバーにファイルを送れるかどうかを確認してください。
次の手順はスレーブサーバーの設定方法を示しています。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。
スレーブサーバー上で /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、ほかのすべての NIS サーバー名と IP アドレスを追加します。
スレーブサーバー上の /var/yp にディレクトリを変更します。
まず、新しいスレーブサーバーを NIS クライアントとして構成して、最初にマスターサーバーから NIS マップを入手できるようにします。詳細については、「NIS クライアントの設定」を参照してください。
スレーブサーバーをクライアントとして初期化します。
# /usr/sbin/ypinit -c |
ypinit コマンドによって、NIS サーバーのリストを求めるプロンプトが表示されます。作業中のローカルマシン (スレーブ) の名前を最初に入力してからマスターサーバーを入力し、そのあとにドメイン内のほかの NIS スレーブサーバーをネットワーク的に近いものから遠いものの順番で入力します。
NIS クライアントが実行されているかどうかを確認し、必要に応じてクライアントサービスを開始します。
# svcs network/nis/client STATE STIME FMRI online 20:32:56 svc:/network/nis/client:default |
svc:/network/nis/client の状態が online と表示される場合、NIS は実行されています。サービスの状態が無効となっている場合、NIS は実行されていません。
このマシンをスレーブサーバーとして初期設定します。
# /usr/sbin/ypinit -s master |
master は、既存の NIS マスターサーバーのマシン名です。
この節で説明した手順を、NIS スレーブサーバーとして構成するマシンごとに繰り返します。
次の手順は、スレーブサーバーで NIS サービスを開始する方法を示しています。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。
ネームサービスとして NIS を使用するようにクライアントマシンを設定するには、次の 2 つの方法があります。
Solaris オペレーティングシステムは、NIS クライアントとネイティブな LDAP クライアントが同一のクライアントマシン上に共存する構成をサポートしません。
「ypinit」。NIS を使用するようにクライアントマシンを設定する場合は、マシンに root としてログインして ypinit -c を実行する方法をお勧めします。
# ypinit -c |
NIS サーバーを指定するように求められます。クライアントは NIS サーバーからネームサービス情報を得ます。必要な数だけマスターサーバーやスレーブサーバーを指定できます。指定するサーバーはドメイン内のどこにあってもかまいません。クライアントにネットワーク的に近いサーバーから遠いサーバーの順に指定することをお勧めします。
「ブロードキャスト方式」。NIS を使用するようにクライアントマシンを設定する旧式の方法です。マシンに root としてログインし、domainname コマンドでドメイン名を設定してから、ypbind を実行します。
/var/yp/binding/`domainname`/ypservers ファイルが存在しない場合、ypstart は NIS クライアントをブロードキャストモードで自動的に起動します (ypbind -broadcast)。
# domainname doc.com # mv /var/yp/binding/`domainname`/ypservers /var/yp/binding/`domainname`\ /ypservers.bak # ypstart |
ypbind を実行すると、NIS サーバーがローカルサブネットで検索されます。NIS サーバーが見つかると、ypbind はそのサーバーにバインドします。この検索を「ブロードキャスト」と呼びます。クライアントのローカルサブネットに NIS サーバーがない場合、ypbind によるバインドは失敗し、クライアントマシンは NIS サービスから名前空間データを入手することができません。
セキュリティーと管理の意味から、クライアントにブロードキャストを使ってサーバーを検索させるのではなく、クライアントの ypservers ファイルでクライアントのバインド先のサーバーを指定してください。ブロードキャストは、ネットワークの速度を落とし、クライアントの速度も落とします。また、異なるクライアントに対して異なるサーバーをリストするため、サーバー負荷の均衡がとれなくなります。