この章では、ネットワーク情報サービス (NIS) の初期設定と構成について説明します。
「マシン」名の代わりに「ホスト」名が使われることがあります。この解説では「マシン」名が使われていますが、一部の画面メッセージや NIS マップ名では「ホスト」名または「マシン」名が使われています。
この章の内容は次のとおりです。
作業 |
参照先 |
---|---|
変換用のソースファイルを準備する | |
ypinit を使用してマスターサーバーを設定する | |
マスターサーバーで NIS を起動する | |
スレーブサーバーを設定する | |
NIS クライアントを設定する |
NIS の名前空間を構成する前に、次の操作を行う必要があります。
NIS を使用するすべてのマシンで、正しく構成された nsswitch.conf ファイルをインストールする。詳細については、第 2 章「ネームサービススイッチ (概要)」を参照してください。
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 コマンドによって使用されます。ディスクレスマシンは、そのブートサーバーからこれらのファイルを読み取ります。
マスターサーバーになるマシンを 1 つ選択します。スレーブサーバーを作成する場合は、スレーブサーバー用のマシンを決定します。
NIS クライアントになるマシンを決定します。通常は、ドメイン内のすべてのマシンが NIS クライアントになるように設定されますが、これは必須ではありません。
ソースファイルは、マスターサーバーの /etc ディレクトリか、その他のディレクトリにあります。ソースファイルを /etc に入れることは望ましくありません。マップの内容がマスターサーバー上のローカルファイルの内容と同じになるからです。これは passwd ファイルと shadow ファイルに固有の問題です。ユーザー全員がマスターサーバーのマップにアクセスし、passwd マップを通じてすべての YP クライアントに root パスワードが渡されるためです。詳細については、「passwd ファイルと名前空間のセキュリティ」を参照してください。
ただし、ソースファイルを他のディレクトリに入れた場合は、/var/yp 内の Makefile の DIR=/etc 行を DIR=/your-choice に変更する必要があります。your-choice はソースファイルを格納するためのディレクトリの名前です。これによって、サーバー上のローカルファイルをクライアント上のファイルのように扱うことができます。Makefile を編集する前に、編集前の Makefile のコピーを保存しておくことをお勧めします。
また、audit_user、auth_attr、exec_attr、prof_attr がデフォルト以外のディレクトリから取り出される場合は、RBACDIR=/etc/security を RBACDIR=your-choice に変更します。your-choice は取り出し元のディレクトリの名前です。
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 以外のディレクトリにある場合は、Makefile の PWDIR
パスワードマクロが、passwd ファイルと shadow ファイルが入っているディレクトリを参照するように変更します。この操作を行うには、PWDIR=/etc 行を PWDIR=/your-choice に変更します。your-choice は、passwd マップソースファイルを格納するのに使用するディレクトリの名前です。
NIS マップへの変換用のソースファイルを準備します。
スーパーユーザーになります。
マスターサーバーのソースファイルをチェックして、それらのファイルが環境の最新の状態を反映しているかどうか確認します。
次のファイルを確認します。
auto.home または auto_home
auto.master または auto_master
bootparams
ethers
group
hosts
ipnodes
netgroup
netmasks
networks
passwd
protocols
rpc
services
shadow
user_attr
passwd ファイルを、選択した PWDIR ディレクトリにコピーします。
audit_user、auth_attr、exec_attr、prof_attr を、選択した RBACDIR ディレクトリにコピーします。
他の入力ファイルと異なり、/etc/mail/aliases ファイルは別のディレクトリに移動できません。このファイルは /etc/mail ディレクトリに格納されていなければなりません。ドメイン全体で利用するメールエイリアスがすべて /etc/mail/aliases ソースファイルに含まれていることを確認します。詳細については、aliases(4) のマニュアルページを参照してください。
ソースファイルからすべてのコメントと、その他の余計な行や情報を取り除きます。
これらの操作は、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 マップセットをマスターサーバーに作成する場合は、次の手順に従います。
マスターサーバーでスーパーユーザーになります。
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 ドメインだけをサポートします。ただし、マスターサーバーを使用して複数のドメインをサポートする場合は、前の節で説明したように、追加のドメイン用にサーバーを設定するときに手順を若干修正する必要があります。
サーバー上で domainname コマンドを実行します。このコマンドによって返されるドメイン名はサーバーのデフォルトドメインです。前の節で説明した手順は、このデフォルトドメインへのサービスを設定する場合は正しく機能します。他のドメインへのサービスを設定する場合は、ypinit シェルスクリプトを次のように修正する必要があります。
# make DOM=correct-domain passwd
correct-domain はサービスを設定している他のドメインの名前であり、passwd は make のターゲットです。このコマンドによって、マスターサーバーが属するドメインではなく目的のドメインに passwd マップが転送されます。
マスターサーバーのマップが作成されると、NIS デーモンをマスターサーバーで起動してサービスを開始できます。これを行うには、ypserv をサーバー上で起動して、ypbind を実行する必要があります。クライアントがサーバーの情報を要求すると、ypserv デーモンは NIS マップ内で検索してクライアントからの情報の要求に応答します。
サーバー上で NIS サービスを起動するには 2 つの方法があります。
ypinit を実行して NIS マスターサーバーを構成し終わると、マシンのブート時に ypstart が自動的に起動され、ypserve が開始されます。「ypinit を使用してマスターサーバーを設定する」を参照してください。
NIS サービスをコマンド行から開始する場合は、ypstart スクリプトを実行します。
# /usr/lib/netsvc/yp/ypstart
起動後に ypserv が呼び出しに応答できるようになるまでに若干の遅延があります。プログラムまたはスクリプトの内部から呼び出す場合は、ypstart の実行後に 3 - 5 秒間スリープ状態にしてください。
NIS サービスを停止する場合は、ypstop スクリプトを実行します。
# /usr/lib/netsvc/yp/ypstop
ネットワークは 1 つ以上のスレーブサーバーを持つことができます。スレーブサーバーを持つことで、マスターサーバーが利用できない場合にも NIS サービスを継続して利用できます。
ypinit を実際に実行してスレーブサーバーを作成する前に、domainname コマンドを NIS スレーブサーバーごとに実行してドメイン名がマスターサーバーと一致していることを確認します。
ドメイン名は大文字と小文字を区別します。
ネットワークが正しく機能していることを確認してから、NIS スレーブサーバーを構成してください。特に、rcp を使用して NIS マスターサーバーから NIS スレーブサーバーにファイルを送れるかどうかを確認してください。
次の手順はスレーブサーバーの設定方法を示しています。
スーパーユーザーになります。
スレーブサーバーで /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、他のすべての NIS サーバーの名前と IP アドレスを追加します。
スレーブサーバー上の /var/yp にディレクトリを変更します。
まず、新しいスレーブサーバーを NIS クライアントとして構成して、最初にマスターサーバーから NIS マップを入手できるようにします。詳細については、「NIS クライアントの設定」を参照してください。
次のように入力して、スレーブサーバーにするマシンをクライアントとして初期設定します。
# /usr/sbin/ypinit -c
ypinit コマンドによって、NIS サーバーのリストを求めるプロンプトが表示されます。作業中のローカルマシン (スレーブ) の名前を入力してからマスターサーバーを入力し、その後にドメイン内の他の NIS スレーブサーバーをネットワーク的に近いものから遠いものの順に入力します。
次のように入力して、ypbindが実行されているかどうか確認します。
# ps -ef | grep ypbind
リストが表示されたら、ypbind は実行されています。
ypbind が実行中である場合は停止します。
# /usr/lib/netsvc/yp/ypstop
次のように入力して ypbind を再起動します。
# /usr/lib/netsvc/yp/ypstart
次のように入力して、このマシンをスレーブサーバーとして初期設定します。
# /usr/sbin/ypinit -s master
master は、既存の NIS マスターサーバーのマシン名です。
この節で説明した手順を、NIS スレーブサーバーとして構成するマシンごとに繰り返します。
次の手順は、スレーブサーバーで NIS サービスを開始する方法を示しています。
スーパーユーザーになります。
既存の yp プロセスをすべて停止します。
# /usr/lib/netsvc/yp/ypstop
スレーブサーバーで ypserve を起動して、ypbind を実行します。
# /usr/lib/netsvc/yp/ypstart
この方法とは別に、スレーブサーバーをリブートしてデーモンを自動的に開始することもできます。
ネームサービスとして NIS を使用するようにマシンを設定するには、次の 2 つの方法があります。
「ypinit」。NIS を使用するようにクライアントマシンを設定する場合は、マシンに root としてログインして ypinit -c を実行する方法をお勧めします。
# ypinit -c
NIS サーバーを指定するように求められます。クライアントは NIS サーバーからネームサービス情報を得ます。必要な数だけマスターサーバーやスレーブサーバーを指定できます。指定するサーバーはドメイン内のどこにあってもかまいません。クライアントにネットワーク的に近いサーバーから遠いサーバーの順に指定することをお勧めします。
「ブロードキャスト方式」。NIS を使用するようにクライアントマシンを設定する旧式の方法です。マシンに root としてログインし、domainname コマンドでドメイン名を設定してから、ypbind を実行します。
# domainname doc.com
# ypbind -broadcast
ypbind を実行すると、NIS サーバーがローカルサブネットで検索されます。NIS サーバーが見つかると、ypbind はそのサーバーにバインドします。この検索を「ブロードキャスト」と呼びます。クライアントのローカルサブネットに NIS サーバーがない場合、ypbind によるバインドは失敗し、クライアントマシンは NIS サービスから名前空間データを入手することができません。