nss -
名前サービス切り替え
(Name Service Switch) の設定ファイル
パスワードやグループのデータベースなどのシステムデータベースからのデータ取得の関数の呼び出しは、
GNU C
ライブラリの名前サービス切り替えの実装により処理される。
提供されている様々なサービスは個別のモジュールにより実装されており、
各モジュールは本質的に大きく異なっている。
GNU C
ライブラリでのデフォルト実装は、
デフォルトでは保守的になっており、
安全でないデータは使用しない。
これはいくつかの状況、
特にデータベースが大きい場合、では非常にコストがかかることがある。
いくつかのモジュールでは、
安全であると分かっている場合、
システム管理者がショットカットを使うようにすることができる。
この前提が正しいことを保証するのはシステム管理者の責任である。
他には実装が時間を追って変化しているモジュールもある。
モジュールの実装がメモリー使用量を優先してスピードを犠牲にしていた場合、
優先度を変更すると問題が起こる場合がある。
/etc/default/nss
ファイルには変数がいくつかある。
各変数は一つもしくは複数の
NSS
モジュールの動作を制御する。
ホワイトスペースは無視される。
'#'
で始まる行はコメントとして扱われる。
現在のところ認識される変数は次の通り。
-
NETID_AUTHORITATIVE = TRUE|FALSE
- TRUE
に設定されると、
initgroups(3) 関数の NIS
バックエンドが
netid.byname NIS
マップからの情報を信頼できるものとして受け取る。
group.byname
マップが大きい場合、
これによりこの関数を大きくスピードアップできる。
netid.byname
マップの内容は
そのまま使用される。
システム管理者は内容が正しく生成されていることを保証しなければならない。
-
SERVICES_AUTHORITATIVE =
TRUE|FALSE
- TRUE
に設定されると、
関数 getservbyname(3) と
getservbyname_r(3) の NIS
バックエンドが
services.byservicename NIS
マップが存在し、その情報を信頼できるものとみなす。
特に、
サービス名とサービス別名の両方に対して
/proto ありと /proto
なしの両方のキーが含まれているとみなす。
システム管理者は内容が正しく生成されていることを保証しなければならない。
-
SETENT_BATCH_READ = TRUE|FALSE
- TRUE
に設定されると、
関数 setpwent(3) と setgrent(3) の
NIS バックエンドは、
全データベースを一度に読み込み、
それから対応する
getpwent(3) や getgrent(3)
の呼び出しで一つ一つ要求を処理する。
TRUE でない場合、 getpwent(3)
や getgrent(3)
の各々の呼び出しで、
次のエントリーを取得するためにサーバーとのネットワーク通信が発生する。
/etc/default/nss
デフォルト設定は、
以下の設定ファイルと同じである。
NETID_AUTHORITATIVE=FALSE
SERVICES_AUTHORITATIVE=FALSE
SETENT_BATCH_READ=FALSE
nsswitch.conf
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。