nsswitch.conf(5) ネームサービススイッチの設定ファイル

説明

ネームサービススイッチ (Name Service Switch; NSS) の設定ファイル /etc/nsswitch.conf は、 GNU C ライブラリが いろいろなカテゴリの名前サービス情報を、どの情報源から どの順序で取得するかを判断するのに使用される (情報の各カテゴリはデータベース名で識別される)。

設定ファイルは通常の ASCII テキストで、列はスペースかタブ文字で 区切られる。最初の列はデータベース名を示す。 残りの列は、情報を問い合わせる情報源の順序と、 検索結果に対して実行するアクションを規定する。

GNU C ライブラリでは以下のデータベースを扱うことができる。

aliases
メールのエイリアス。 getaliasent(3) や関連する関数が使用する。
ethers
イーサーネット番号。
group
ユーザーのグループ。 getgrent(3) や関連する関数が使用する。
hosts
ホスト名とホスト番号。 gethostbyname(3) や関連する関数が使用する。
initgroups
補助グループアクセスリスト。 getgrouplist(3) 関数が使用する。
netgroup
ネットワークワイドに用いられるホストやユーザーのリスト。アクセス制限に利用 される。 glibc 2.1 より前の C ライブラリは、 NIS による netgroup のみを サポートしていた。
networks
ネットワーク名と番号。 getnetent(3) と関連する関数が使用する。
passwd
ユーザーパスワード。 getpwent(3) や関連する関数が使用する。
protocols
ネットワークプロトコル。 getprotoent(3) や関連する関数が使用する。
publickey
NIS+ と NFS によって用いられる secure_rpc の公開鍵と秘密鍵。
rpc
リモート手続き呼び出し (remote procedure call) の名前と番号。 getrpcbyname(3) と関連する関数が使用する。
services
ネットワークサービス。 getservent(3) や関連する関数が使用する。
shadow
シャドウユーザーパスワード。 getspnam(3) や関連する関数が使用する。

以下は /etc/nsswitch.conf ファイルの例である。

passwd:
compat
group:
compat
shadow:
compat

hosts:
dns [!UNAVAIL=return] files
networks:
nis [NOTFOUND=return] files
ethers:
nis [NOTFOUND=return] files
protocols:
nis [NOTFOUND=return] files
rpc:
nis [NOTFOUND=return] files
services:
nis [NOTFOUND=return] files

最初の列はデータベース名である。 残りの列で以下を指定する。

*
1 個以上のサービス指定 (例: "files", "db", "nis")。この行に記載された サービスの順序で、結果が得られるまで、指定されたサービスに対する 問い合わせが順番に行われる。
*
特定の結果が直前のサービスで得られた場合に実行されるアクション (例: "[NOTFOUND=return]")。アクションは省略可能である。

利用しているシステムでどのサービス指定が利用できるかは、共有ライブラリ があるかどうかに依存しており、そのためサービス指定は拡張できるように なっている。/lib/libnss_SERVICE.so.X という名前のライブラリが SERVICE という名前のサービスを提供する。標準のインストールを行った 場合、"files", "db", "nis", "nisplus" が利用できる。 データベース hosts の場合には、追加で "dns" も指定できる。 データベース passwd, group, shadow の場合には、追加で "compat" (下記の 互換モード を参照)。バージョン番号 X は、 glibc 2.0 の場合は 1、glibc 2.1 の場合は 2 で、それ以降も同様である。 追加のライブラリがインストールされているシステムでは、"hesiod", "ldap", "winbind", "wins" などの追加のサービスが利用できる。

サービス指定の次にアクションを指定することもできる。アクションを 使うと、直前のデータ源から結果が得られた後の動作を変更できる。 アクション指定は、一般的には以下の形式となる。

[STATUS=ACTION]
[!STATUS=ACTION]

STATUS と ACTION はそれぞれ以下の値を取る。

STATUS => success | notfound | unavail | tryagain
ACTION => return | continue

! はテスト結果を反転させる。 つまり、指定された以外の全ての結果にマッチする。 キーワードの大文字、小文字は無視される。

STATUS は、直前のサービス指定で呼び出しされた検索処理の結果に 対して照合が行われる。 STATUS には以下のいずれかを指定できる。

success
エラーは発生せず、要求されたエントリが返された。 この場合のデフォルトのアクションは "return" である。
notfound
検索は成功したが、要求されたエントリが見つからなかった。 この場合のデフォルトのアクションは "continue" である。
unavail
サービスが永続的に利用できない。 必要なファイルを読み込むことができない、 ネットワークサービスの場合には、サーバが利用できないとか、 サーバが問い合わせを許可していない、などが考えられる。 この場合のデフォルトのアクションは "continue" である。
tryagain
サービスが一時的に利用できない。 ファイルがロックされている、サーバがこれ以上接続を受け付けることができない、 などが考えられる。デフォル トのアクションは "continue" である。

ACTION には以下のいずれかを指定できる。

return
結果をすぐに返す。 これ以上検索処理は呼び出されない。 ただし、互換性のため、 選択されたアクションが group データベースに対するもので、 ステータスが notfound であった場合で、 設定ファイルに initgroups の行が含まれていない場合には、次の検索処理は常に呼び出される (検索結果への影響はない)。
continue
次の検索処理を呼び出す。

互換モード (compat)

NSS "compat" サービスは "files" と似ているが、システムにアクセスできる ユーザやネットグループ (netgroup) のメンバの指定に /etc/passwd で 特別なエントリを追加で使うことができる点が異なる。 このモードでは、以下のエントリを使うことができる。
+user
NIS パスワードマップの指定された user を含める。
+@netgroup
指定された netgroup の全ユーザを含める。
-user
NIS パスワードマップの指定された user を除外する。
-@netgroup
指定された netgroup の全ユーザを除外する。
+
NIS パスワードマップのユーザのうち、 それまでに除外されていない全てのユーザを含める。

デフォルトでは、データ源は "nis" だが、 擬似データベース passwd_compat, group_compat, shadow_compat ではデータ源として "nisplus" を指定することもできる。

ファイル

SERVICE という名前のサービスは libnss_SERVICE.so.X という 名前の共有オブジェクトライブラリで実装されている。 これは /lib に置かれる。
/etc/nsswitch.conf NSS の設定ファイル。
/lib/libnss_compat.so.X
"compat" ソースを実装したもの。
/lib/libnss_db.so.X
"db" ソースを実装したもの。
/lib/libnss_dns.so.X
"dns" ソースを実装したもの。
/lib/libnss_files.so.X
"files" ソースを実装したもの。
/lib/libnss_hesiod.so.X
"hesoid" ソースを実装したもの。
/lib/libnss_nis.so.X
"nis" ソースを実装したもの。
/lib/libnss_nisplus.so.X
"nisplus" ソースを実装したもの。

注意

nsswitch.conf を利用するプロセスは、ファイルは一度しか読み込まない。 その後で nsswitch.conf が書き換えられても、そのプロセスは古い設定のままで 動作を継続する。

伝統的には、サービス情報の情報源は一つだけであり、 その設定ファイルの形式も一つであった (例えば /etc/passwd)。 一方で、 Network Information Service (NIS) や Domain Name Service (DNS) などの他の名前サービスが一般的になるに連れて、C ライブラリに埋め 込まれた固定順序ではなく、検索順序を柔軟に指定する方法が必要になった。 ネームサービススイッチ機構は、この問題に対するよりきれいな解決方法と なっている。ネームサービススイッチ機構は、 Sun Microsystems が Solaris 2 の C ライブラリで使った機構が基になっている。

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。