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

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

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

各マシンの /etc ディレクトリには、スイッチファイルがあります。ファイルの各行は、ホスト、パスワード、グループなどの特定タイプのネットワーク情報を識別します。そのあとに 1 つまたは複数のネットワーク情報の場所が続きます。

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

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

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

DNS 用のデフォルトファイルは提供されませんが、これらのファイルのどれでも編集して DNS 用に使用できます。詳細は、「DNS とインターネットでのアクセス」を参照してください。

マシンの主要なネームサービスを後から変更する場合は、該当する代替スイッチファイルを nsswitch.conf にコピーします。nsswitch.conf テンプレートファイル」を参照してください。NIS 管理者はまた、/etc/nsswitch.conf ファイルの該当行を編集することによって、クライアントで使用する特定タイプのネットワーク情報のソースを変更できます。構文は次で説明します。また、その他の説明は、「ネームサービススイッチを変更する方法」に記載されています。

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

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

次の表に、スイッチファイルの中で上記の情報タイプ用に表示できるソースの種類とその説明を示します。

表 2–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 種類のエラー状態メッセージのいずれかが返されます。表示される状態メッセージを次の表に示します。

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

状態メッセージ 

意味 

SUCCESS

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

UNAVAIL

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

NOTFOUND

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

TRYAGAIN

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

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

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

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

動作 

意味 

return

情報の検索を停止します。 

continue

次のソースの検索を試みます。 

デフォルト検索基準

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

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

前に示した STATUS=action 構文を使用することで、ほかの検索基準を明示的に指定してデフォルトの検索基準を変更できます。たとえば、NOTFOUND 状態に対し、デフォルトの動作では次のソースに対する検索を続行しますが、NOTFOUND 状態の場合に検索を停止するように networks の設定を変更するには、スイッチファイルの networks 行を編集します。この行を次のようにします。


networks: nis [NOTFOUND=return] files

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

この例では、検索ルーチンは次のような働きをします。


注 –

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


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

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

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

auto_homeauto_master

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

時間帯とスイッチファイル

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

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

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

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

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

行の種類 

例 

コメント行。 

#hosts: nisplus [NOTFOUND=return] files 

解釈される行。 

hosts: nisplus [NOTFOUND=return] file 

部分的に解釈される行。「files」の部分は解釈されません。

hosts: nisplus [NOTFOUND=return] # files 

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


注意 – 注意 –

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


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