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

ネームサービススイッチについて

ネームサービススイッチは nsswitch.conf という名前のファイルで、クライアントのマシンやアプリケーションがネットワーク情報を得る方法を管理します。これは、クライアントマシンまたはクライアントアプリケーションがネットワーク情報を取得する方法を制御します。ネームサービススイッチは、次のような getXbyY() インタフェースのいずれかを呼び出すクライアントアプリケーションによって使用されます。

各マシンの /etc ディレクトリには、スイッチファイルがあります。ファイルの各行は、hostpasswdgroup などの特定タイプのネットワーク情報を識別します。その後には、クライアントがネットワーク情報を探すための 1 つまたは複数のソースが続きます。

クライアントは、1 つまたは複数のスイッチのソースからネーミング情報を入手できます。たとえば、NIS+ のクライアントは、NIS+ テーブルからホスト情報を、ローカルの /etc ファイルからパスワード情報をそれぞれ入手できます。さらに、スイッチが各ソースを使用する条件を指定することもできます。 表 1–1 を参照してください。

Solaris ソフトウェアは、インストールの過程において各マシンの /etc ディレクトリに nsswitch.conf ファイルを自動的に配置します。LDAP、NIS、NIS+、またはファイル用にスイッチファイルの 4 つの代替 (テンプレート) バージョンも /etc ディレクトリにロードされます。nsswitch.conf テンプレートファイル」を参照してください。

これら 4 つのファイルは、代替デフォルトスイッチファイルです。各ファイルはそれぞれ/etc ファイル、NIS、NIS+、LDAP という異なる主要なネームサービス用に設計されています。Solaris ソフトウェアをマシンに最初にインストールする時に、インストール担当者はマシンのデフォルトのネームサービス (NIS+、NIS、ローカルファイル、または LDAP) を選択します。インストール中に、対応するテンプレートファイルが nsswitch.conf ファイルにコピーされます。たとえば、LDAP を使用しているクライアントマシンでは、インストールの過程で nsswitch.ldapnsswitch.conf にコピーされます。特殊な名前空間を持っている場合を除き、通常の操作には nsswitch.conf にコピーされるデフォルトのテンプレートファイルを使用します。

マシンの主要なネームサービスを後から変更する場合は、該当する代替スイッチファイルを nsswitch.conf にコピーします (nsswitch.conf テンプレートファイル」 を参照)。また、/etc/nsswitch.conf ファイルの該当行を編集することで、クライアントが使用するネットワーク情報のソースを変更することもできます。この構文については以下で説明します。詳細については、「ネームサービススイッチの変更」を参照してください。

nsswitch.conf ファイルのフォーマット

nsswitch.conf ファイルは、基本的には 16 種類の情報とそのソース (getXXbyYY() 関数の情報検索先) のリストです。順序は必ずしも以下のとおりではありません。

次の表に、スイッチファイル内で上記の各情報タイプ用に指定できるソースの種類の詳細を示します。

表 1–1 スイッチソースの例

ソース 

目的 

files

クライアントの /etc ディレクトリに格納されているローカルファイル/etc/passwd など

nisplus

NIS+ テーブル。hosts テーブルなど

nis

NIS マップ。hosts マップなど

compat

パスワードとグループ情報を対象に、/etc/passwd/etc/shadow/etc/group ファイルで旧書式の「+」または「-」構文をサポートする

dns

ホスト情報を DNS から入手するように指定する 

ldap

エントリを LDAP ディレクトリから入手するように指定する 

検索規準

「単一ソース」。nisplus のような情報のソースが 1 つだけの場合、スイッチを使用している関数は、そのソースだけで情報を検索します。情報が見つかった場合、success という状態メッセージを返します。情報が見つからない場合は、検索が停止され、success 以外の状態メッセージを返します。状態メッセージに基づいて何をするかは、関数によって異なります。

「複数ソース」。テーブルに複数のソースがある場合、スイッチは最初のソースから情報検索を始めるように関数に指示します。情報が見つかった場合、success という状態メッセージを返します。情報が見つからない場合は、次のソースが検索されます。関数は必要な情報が見つかるか、return 処理によって中止されるまで全ソースの検索を続けます。必要な情報がどのソースにもなかったとき、関数は検索を停止し、non-success という状態メッセージを返します。

スイッチ状態メッセージ

関数は情報を見つけると、success という状態メッセージを返します。情報が見つからない場合は、その理由に応じて 3 種類のメッセージのうちの 1 つを返します。表示される状態メッセージを次の表に示します。

表 1–2 スイッチ状態メッセージ

状態メッセージ 

意味 

SUCCESS

要求されたエントリがソース内で発見された 

UNAVAIL

ソースが応答しない、または使用不可。つまり、NIS+ テーブル、NIS マップ、または /etc ディレクトリのファイルが見つからなかった (アクセスできなかった)

NOTFOUND

エントリなし。テーブル、マップ、ファイルにアクセスしたが、必要な情報は見つからなかった 

TRYAGAIN

ソース使用中のため再検索の必要あり。テーブル、マップ、ファイルは見つかったが、照会に対して応答しなかった 

スイッチの動作に関するオプション

次の表に示すように、状態メッセージに対して次の 2 つの動作のどちらかで応答するようにスイッチに指示できます。

表 1–3 スイッチ状態メッセージへの応答

動作 

意味 

return

情報の検索を中止する 

continue

次のソースがあれば、それを検索する 

デフォルト検索基準

nsswitch.conf ファイルの状態メッセージと動作オプションの組み合わせによって、関数の各ステップでの動作が決まります。この状態と動作の組み合わせのことを、「検索基準」と呼びます。

スイッチのデフォルト検索規準は、どのソースについても同じです。これらを上記の状態メッセージに基づいて説明すれば次のようになります。

これらはデフォルトの検索基準であるため、暗黙的に使用されます。つまり、スイッチファイルで、はっきりと指定する必要はありません。ほかの検索基準を明示してデフォルトの検索基準を変更するには、上記の STATUS=action という構文を使用します。たとえば、NOTFOUND 状態に対し、デフォルトの動作では次のソースに移って検索を続行します。networks など、特定の情報を設定して検索すると、検索は NOTFOUND で中止します。スイッチファイルの networks の行を、以下のように編集してください。


networks: nis [NOTFOUND=return] files

networks: nis [NOTFOUND=return] files は、NOTFOUND に関してデフォルトでない検索基準を設定するものです。デフォルト以外の設定をするときは [ ] を使用します。

この例では、検索関数は以下のような働きをします。


注 –

nsswitch.conf ファイル内の検索は、項目の記載順に実行されます。ただし、passwd -r repository コマンドで指定されていない限り、パスワードの更新は逆順で実行されます。詳細については、「スイッチファイルとパスワード情報」を参照してください。


構文が正しくない場合の処理

クライアントのライブラリ関数には、nsswitch.conf ファイルにおいて「必要なエントリがない」、「エントリの構文が誤っている」といった場合に使用されるコンパイル時に組み込まれるデフォルトエントリが含まれています。これらのエントリは nsswitch.conf ファイルのデフォルトエントリと同じものです。

ネームサービススイッチは、テーブル名やソース名のスペルが正しいものとして処理をします。スペルが正しくない場合は、デフォルト値が使用されます。

auto_home と auto_master

auto_home テーブル、auto_master テーブルとマップのスイッチ検索基準は、automount と呼ばれる1つのカテゴリに統合されます。

Timezone とスイッチファイル

timezone テーブルはスイッチを使用しないため、スイッチファイルのリストには含まれていません。

nsswitch.conf ファイル中のコメント

nsswitch.conf ファイル中の行のうち、「#」で始まっているものはコメント行として解釈され、ファイルを検索する関数では無視されます。

行の途中にコメント文字 (#) が含まれる場合、コメント文字の前の文字列は nsswitch.conf ファイルを検索するルーチンによって解釈されます。コメント文字よりあとの文字列は、コメントとして解釈され、無視されます。

表 1–4 スイッチファイルのコメント例

行の種類 

コメント例 

コメント行 (無視される) 

# hosts: nisplus [NOTFOUND=return] files 

完全に解釈される行 

hosts: nisplus [NOTFOUND=return] file 

部分的に解釈される行 (「files」の部分は解釈されない)

hosts: nisplus [NOTFOUND=return] # files 

キーサーバーとスイッチファイルの publickey エントリ


注意 – 注意 –

nsswitch.conf に変更を加えた後は、キーサーバーを再起動する必要があります。


キーサーバーは、起動時にだけネームサービススイッチ構成ファイルの publickey エントリを参照します。つまり、スイッチ構成ファイルを更新しても、再起動しない限りキーサーバーは publickey エントリへの変更を認識しません。