ネームサービススイッチは nsswitch.conf という名前のファイルです。 クライアントのマシンやアプリケーションがネットワーク情報を得る方法を管理します。 ネームサービススイッチは、次のような getXbyY() インタフェースのいずれかを呼び出すクライアントアプリケーションによって使用されます。
各マシンの /etc ディレクトリには、スイッチファイルがあります。 ファイルの各行は、ホスト、パスワード、グループなどの特定タイプのネットワーク情報を識別します。その後に 1 つまたは複数のネットワーク情報の場所が続きます。
クライアントは、1 つまたは複数のスイッチのソースからネーミング情報を入手できます。 たとえば、NIS+ のクライアントは、NIS+ テーブルからホスト情報を、ローカルの /etc ファイルからパスワード情報をそれぞれ入手できます。 さらに、クライアントはスイッチが各ソースを使用する条件を指定することもできます。 表 2–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.ldap が nsswitch.conf にコピーされます。 特殊な名前空間を持っている場合を除き、通常の操作には nsswitch.conf にコピーされるデフォルトのテンプレートファイルを使用します。
DNS 用のデフォルトファイルは提供されませんが、これら 4 つのファイルのどれでも編集して DNS 用に使用できます。 詳細は、DNS とインターネットでのアクセス を参照してください。
マシンの主要なネームサービスを後から変更する場合は、該当する代替スイッチファイルを nsswitch.conf にコピーします。 nsswitch.conf テンプレートファイル を参照してください。 NIS 管理者はまた、/etc/nsswitch.conf ファイルの該当行を編集することによって、クライアントで使用する特定タイプのネットワーク情報のソースを変更できます。 構文について、以下に説明します。 詳細については、ネームサービススイッチを変更する方法 を参照してください。
nsswitch.conf ファイルは、基本的には 16 種類の情報とそのソース (getXXbyYY() 関数の情報検索先) のリストです。 16 種類の情報は次のとおりです (順序は、必ずしも次のとおりではありません)。
aliases
bootparams
ethers
group
hosts
ipnodes
netgroup
netmasks
networks
passwd (シャドウ情報含む)
protocols
publickey
rpc
services
automount
sendmailvars
次の表に、上記の情報タイプのスイッチファイルの中に表示できるソースの種類とその説明を示します。
表 2–1 スイッチファイルの情報ソース
ソース |
説明 |
---|---|
files |
クライアントの /etc ディレクトリに格納されているローカルファイル (/etc/passwd など) |
nisplus |
NIS+ テーブル。 hosts テーブルなど |
nis |
NIS マップ。 hosts マップなど。 |
compat |
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 ファイルの状態メッセージと動作オプションの組み合わせによって、関数の各ステップでの動作が決まります。 状態と動作を組み合わせて、「検索基準」を構成します。
スイッチのデフォルト検索基準は、どのソースについても同じです。 これらを上記の状態メッセージに基づいて説明すると、次のようになります。
UNAVAIL=continue。 次のソース (nsswitch.conf ファイルに指定されたもの) を使用して検索を続行する。 次のソースがなければ、「NOTFOUND」という状態メッセージを返す
NOTFOUND=continue。 次のソース (nsswitch.conf ファイルに指定されたもの) を使用して検索を続行する。 次のソースがなければ、「NOTFOUND」という状態メッセージを返す
TRYAGAIN=continue。 次のソース (nsswitch.conf ファイルに指定されたもの) を使用して検索を続行する。 次のソースがなければ、「NOTFOUND」という状態メッセージを返す
ほかの検索基準を明示的に指定してデフォルトの検索基準を変更するには、上記の STATUS=action という構文を使用します。 たとえば、NOTFOUND 状態に対し、デフォルトの動作では次のソースに対する検索を続行しますが、 NOTFOUND 状態の場合に検索を停止するように networks の設定を変更するには、スイッチファイルの networks 行を次のように編集します。
networks: nis [NOTFOUND=return] files |
networks: nis [NOTFOUND=return] files 行は、NOTFOUND 状態に関してデフォルトでない検索基準を設定しています。 デフォルト以外の設定をするときは [ ] を使用します。
この例では、検索関数は以下のような働きをします。
networks マップが見つかり必要な情報があった場合、関数は「SUCCESS」という状態メッセージを返します。
networks マップが見つからなかった場合、関数は「UNAVAIL」という状態メッセージを返し、 デフォルトで適切な /etc ファイルの検索を続行します。
networksマップは見つかったがマップの中に必要な情報がなかった場合、関数は「NOTFOUND」という状態メッセージを返します。 そして /etc ファイルの検索を続行する (デフォルトの設定) 代わりに検索を停止します。
networksマップが使用中の場合、関数は TRYAGAIN という状態メッセージを返し、デフォルトで適当な /etc ファイルの検索を続行します。
クライアントのライブラリ関数には、nsswitch.conf ファイルにおいて「必要なエントリがない」、「エントリの構文が誤っている」といった場合に使用される、コンパイル時に組み込まれるデフォルトエントリがあります。 これらのエントリは nsswitch.conf ファイルのデフォルトエントリと同じものです。
ネームサービススイッチは、テーブル名やソース名のスペルが正しいものとして処理をします。 テーブル名やソース名のスペルが正しくない場合は、デフォルト値が使用されます。
auto_home テーブル、auto_master テーブルとマップのスイッチ検索基準は、automount と呼ばれる 1 つのカテゴリに統合されます。
timezone テーブルはスイッチを使用しないため、スイッチファイルのリストには含まれていません。
nsswitch.conf ファイル中の行のうち、コメント文字 (#) で始まっているものはコメント行として解釈され、 ファイルを検索する関数では無視されます。
コメント文字の前の文字列は、nsswitch.conf ファイルを検索する関数によって解釈されます。 コメント文字よりあとの文字列は、コメントとして解釈され、無視されます。
表 2–4 スイッチファイルのコメント例
行の種類 |
例 |
---|---|
コメント行 |
#hosts: nisplus [NOTFOUND=return] files |
解釈される行 |
hosts: nisplus [NOTFOUND=return] file |
部分的に解釈される行 (「files」の部分は解釈されない) |
hosts: nisplus [NOTFOUND=return] # files |
nsswitch.conf に変更を加えた後は、キーサーバーを再起動する必要があります。
キーサーバーは、起動時にだけネームサービススイッチ構成ファイルの publickey エントリを参照します。 スイッチ構成ファイルを変更しても再起動しない限り、キーサーバーは変更を登録しません。