EN JA
NSSWITCH.CONF(5)
NSSWITCH.CONF(5) FreeBSD File Formats Manual 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 などのローカルファイル。
db
ローカルデータベース。
dns
インターネットドメインネームシステム。“hosts”や‘networks’は、 IN クラスを使用し、その他全ては、 HS クラス (Hesiod) を使用します。
nis
NIS (以前は、YP)
compat
“passwd”と“group”のデータベースの‘+/-’をサポートします。これがある場合、エントリのソースは、これのみです。
cache
nscd(8) デーモンを利用します。

ステータスコード

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

ステータスコード
解説
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])

キャッシュ

利用者は、 nsswitch.conf(5) ファイルの最初のソースとして“cache”を指定することによって、特定のデータベースのためのキャッシュを有効にすることができます。利用者は、 nscd.conf(5) のこのデータベースのキャッシュも有効にするべきです。“cache”ソースが特定の問い合わせのために成功を返すなら、さらなるソースは、問い合わせされません。他方では、以前にキャッシュされたデータがないなら、他のすべてのソースが処理された後に、問い合わせ結果は、直ちにキャッシュに置かれます。その“cache”は、実行している nscd(8) デーモンを必要とすることに注意してください。

互換モード: +/- シンタックス

歴史的なマルチソース実装において、‘+’と‘-’文字は、ユーザパスワードとグループ情報を 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
services
compat
services_compat
nis

関連ファイル

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

キャッシュ、次に、 /etc/hosts と次に DNS からホストを検索するため、そして NIS と、次に files からユーザ情報を検索するためには、次を使用します:

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

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

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

FreeBSDStandard C Library (libc, -lc) は、 GNU C ライブラリ nsswitch インタフェースのために書かれた NSS モジュールとの互換性のあるスタブを提供します。しかしながら、これらのスタブは、“ passwd”と“ group”データベースの使用のみをサポートします。

歴史

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

作者

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