NSSWITCH.CONF(5)

名称
nsswitch.conf - ネームサービススイッチの設定ファイル

解説
nsswitch.conf ファイルは C ライブラリでの nsdispatch(3) (ネームサービス スイッチディスパッチャ) ルーチンをどのように作動させるかを 設定します。

この設定ファイルは、host, user (password), group などに関する 情報を持つ様々なデータベースを調べるための プロセスをコントロールします。 各データベースは (ローカルファイル、DNS、 NIS のような) ソースから生成され、 そのソースを指定する順を nsswitch.conf で設定します。

nsswitch.conf の各エントリはデータベース名と、スペースで区切られた ソースのリストで構成されています。 各ソースには、リストの次のソースを使うか、現在のソースで終わりにするか 決める基準を後ろに書けます。 各基準は、1 つもしくは、それ以上のステータスコードと、 そのステータスコードが発生した際に行う動作から成り立ってます。

  ソース
以下のソースが実装されています:

ソース 解説
files
    /etc/hosts や /etc/passwd などのローカルファイル。
dns インターネットドメインネームシステム。 “hosts” や ‘networks’ は、 IN クラスを使用し、その他全ては HS クラス (Hesiod) を使用します。
nis NIS (以前は YP)
compat
    “passwd” と “group” のデータベースの ‘+/-’ をサポートします。 これがある場合、エントリのソースは、これのみです。

  データベース
以下のデータベースは、以下の C ライブラリ関数によって使用されます:

データベース
    使用先
group
    getgrent(3)
hosts
    gethostbyname(3)
networks
    getnetbyname(3)
passwd
    getpwent(3)
shells
    getusershell(3)

  ステータスコード
以下のステータスコードが利用可能です:

ステータスコード
    解説
success
    要求したエントリが見つかりました。
notfound
    このソースには、エントリがありませんでした。
tryagain
    ソースがビジー状態です。再試行可能です。
unavail
    ソースの応答がないか、エントリが壊れています。

  アクション
それぞれのステータスコードにおいて、以下のアクションが可能です:

アクション
    解説
continue
    次のソースを試行。
return
    現在の結果で戻る。

  ファイルフォーマット
nsswitch.conf の BNF 構文は以下の通りです:

<entry>
    ::= <database> ":" [<source> [<criteria>]]*
<criteria>
    ::= "[" <criterion>+ "]"
<criterion>
    ::= <status> "=" <action>
<status>
    ::= "success" | "notfound" | "unavail" | "tryagain"
<action>
    ::= "return" | "continue"

各エントリはファイル内の新しい行からスタートします。 行中の ‘#’ は、行末までコメントとされます。 空行は無視されます。 行末に ‘\’ がある場合は改行を無視し、 次の行を現在の行の続きとします。 全てのエントリは、大文字と小文字を区別しません。

デフォルト基準は “success” の場合は return になり、それ以外の場合は continue になります。 (つまり、 [success=return notfound=continue unavail=continue tryagain=continue])

  compat モード: +/- シンタックス
歴史的なマルチソース実装において、 ‘+’ と ‘-’ 文字は、ユーザパスワードと グループ情報を NIS から取り込むよう、指定するために使われます。 NIS などで配布されているソースにアクセスする別の方法を nsswitch.conf は提供しますが、ソースに単一の “compat” を指定すると歴史的な動作方法を提供します。

“passwd_compat: source” を指定すると ‘+/-’ 経由でアクセスされた情報を代替の ソースに使用することができます。 この場合の “source” には、 ‘dns’, ‘nis’ と ‘files’, ‘compat’ 以外のその他のソースがあてはまります。

  注釈
歴史的な、多くのデータベースには、 getXXXent() 形式の列挙関数があります。 (各サイズが不明な) データベースがローカルファイルのときは、理にかなっていますが、 多数のソースの場合は、 ほとんど意味がないか、妥当ではありません。 このインタフェースはまだ互換性のために用意されていますが、 ソースが完全なエントリを提供できないかもしれません。 または、似通った情報を保持している複数のソースを指定した場合、 重複したエントリが返されるかもしれません。

以前の実装と、現在の実装との互換性を確実にするために “compat” ソースは指定するデータベースに、単独で存在しなければなりません。

  デフォルトソースのリスト
あらゆる設定上において 何らかの理由で nsswitch.conf が存在していないか、または 欠けていたり壊れたエントリがあった場合 nsdispatch(3) は要求されたデータベースには “files” のエントリをデフォルトとします。 例外は以下の通りです:

データベース
    デフォルトソースのリスト
group
    compat
group_compat
    nis
hosts
    files dns
passwd
    compat
passwd_compat
    nis

関連ファイル
/etc/nsswitch.conf
    nsswitch.conf ファイルは /etc にあります。

例
ホスト情報を /etc/hosts その後 DNS で検索し、ユーザ情報を NIS その後 files で検索するには以下を使用してください:

hosts:
    files dns
passwd:
    nis [notfound=return] files
group:
    nis [notfound=return] files

“[notfound=return]” の基準は、"NIS が notfound を返した場合、files は検索しない" という設定になります。 NIS サーバがダウンしている時を除いて、NIS のみを 正式な情報として取り扱います。

注
システムが NO_NIS でコンパイルされている場合 ‘nis’ のエントリは外してください。

関連項目
nsdispatch(3), resolv.conf(5), named(8), ypbind(8)

歴史
nsswitch.conf ファイルフォーマットは FreeBSD 5.0 ではじめて登場しました。 これは NetBSD 1.4 ではじめて登場した NetBSD プロジェクトからインポートされました。

作者
Luke Mewburn <lukem@netbsd.org> は ULTRIX svc.conf(5) と Solaris nsswitch.conf(4) マニュアルページからのアイディアを元に、 この自由に再配布可能なネームサービス スイッチの実装を記述しました。