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

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

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

Auto_homeAuto_master

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

Timezone とスイッチファイル

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