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) デーモンを利用します。
データベース
次のデータベースは、次の C ライブラリ関数によって使用されます:
- データベース
- 使用先
- group
- getgrent(3), getgrent_r(3), getgrgid_r(3), getgrnam_r(3), setgrent(3), endgrent(3)
- hosts
- getaddrinfo(3), gethostbyaddr(3), gethostbyaddr_r(3), gethostbyname(3), gethostbyname2(3), gethostbyname_r(3), getipnodebyaddr(3), getipnodebyname(3)
- networks
- getnetbyaddr(3), getnetbyaddr_r(3), getnetbyname(3), getnetbyname_r(3)
- passwd
- getpwent(3), getpwent_r(3), getpwnam_r(3), getpwuid_r(3), setpwent(3), endpwent(3)
- shells
- getusershell(3)
- services
- getservent(3)
- rpc
- getrpcbyname(3), getrpcbynumber(3), getrpcent(3)
- proto
- getprotobyname(3), getprotobynumber(3), getprotoent(3)
- netgroup
- getnetgrent(3), setnetgrent(3), innetgr(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]
)
キャッシュ
利用者は、 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’のエントリは、外してください。 FreeBSD の Standard 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 |