nsswitch (2015-12-23)
nsswitch は Name Service Switch で、設定は /etc/nsswich.conf などに記載する。
各カテゴリーの名前サービス情報を、どの情報源から どの順序で取得するかを判断する。
以下、記載例
$ cat /etc/nsswitch.conf
passwd: compat
group: compat
hosts: dns [!UNAVAIL=return] files
networks: nis [NOTFOUND=return] files
例えば、ホスト名 hoge.co.jp のIPアドレスを解決する時には、
「hosts:」行にある通り、dns を利用して解決を試みて、検索が成功した場合以外は終了、(DNSサーバに接続できないなど)失敗した場合はファイル /etc/hosts で解決しようとする。
という内容になります。*1
最初の passwd: やら group: やらはサービス名ですね。
/etc/passwd のように、大体の場合は同じ名前の情報ファイルが /etc 配下にありそうです。
compatやdns、files などが情報収集先の指定ですね。
files と compat*2 はファイルから情報を収集する。
dns は Domain Name Servive から、
nis は Network Information Service から情報を取得するということ。
左から、書いた順番の情報収集先から取得しようとします。
[NOTFOUND=return] の記載は「検索したけど情報が見つからない」場合に「終了する」ということ。
情報の取得に失敗した場合(NOTFOUND、UNAVAIL、TRYAGAIN)のデフォルト動作はcontinue(次の情報源へ進む)なのですが、あえて中断するならば return させるようです。
!マークはその逆。!UNAVAIL は接続失敗以外(接続成功と、たぶんNOTFOUNDやTRYAGAINも含む)になります。
いままで見たケースだと、nsswitch の書式があっているか云々よりも、そもそも nsswitch の存在を忘れている場合が多かったです。
/etc/hosts ファイル修正したのに何で反映されないんだろうとか悩んでいたら、files の前に nis や dns が先だったことに気が付かなかったとか。