本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 4 : ファイルフォーマット > n

nsswitch.conf(4)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

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

構文

/etc/nsswitch.conf

説明

オペレーティングシステムでは、ホスト、ユーザー (passwd) 、グループなどに関する多くの情報はデータベースを使用して管理します。 これらのデータは各種のソースから得られます。例えば、ホスト名およびホストアドレスは、 /etc/hosts 、NIS、NIS+、LDAP または DNS 内で見つけることができます。 それぞれのデータベースに 1 つまたは複数のソースが使用される可能性があります。これらのソースおよびその検索順序は、 /etc/nsswitch.conf ファイル内に指定されています。

以下のデータベースがスイッチを使用します。

データベース  

参照元

aliases  

sendmail

automount  

automount

group  

getgrnam()

hosts  

gethostbyname()

netgroup  

innetgr()

networks  

getnetbyname()

passwd  

getpwnam()getspnam()

protocols  

getprotobyname()

publickey  

getpublickey()secure_rpc()

rpc  

getrpcbyname()

sendmailvars  

sendmail

services  

getservbyname()

ipnodes  

getipnodebyname()

以下のソースが使用されます。

ソース  

参照

files  

/etc/hosts/etc/passwd など

nis  

NIS (YP)

nisplus  

NIS+

ldap  

LDAP ディレクトリサーバー

dns  

hostsipnodes の場合だけ有効。インターネットのドメインネームサービスを使用します。

compat  

passwd および group の場合だけ有効。"+" および "-" を使用します

( 後述の「 +/- 構文によるやりとり」を参照してください)。

/etc/nsswitch.conf には、各データベースごとに 1 つのエントリーがあります。 通常、これらのエントリーは、"protocols: files" または "networks: files nisplus" などのように単純です。 ただし、複数のソースが指定される場合には、それぞれのソースが使用される状況別に定義することが必要です。 ソースは、以下のコードの 1 つを戻します。

ステータス  

意味

SUCCESS  

指定したデータベースエントリーが見つかりました。

UNAVAIL  

ソースの応答がないか、または破壊されています。

NOTFOUND  

ソースが "no such entry" (そのエントリーがありません) と応答しました。

TRYAGAIN  

ソースがビジー状態です。再試行してください。

それぞれのステータスコードに対して、次の 2 つのアクションが可能です。

アクション  

意味

continue  

リスト内の次のソースを試してみます。

return  

この時点で戻ります。

エントリーの完全な構文は、次のとおりです。

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

それぞれのエントリーは、ファイル内で 1 行を形成します。 空白の行またはスペース文字で始まる行は無視されます。 行中では、 # 文字以降も無視されます。つまり、 # を行中の任意の位置に置くと、コメントが書き込めます。 database および source の名前は、大文字と小文字を区別しますが action および status の名前は大文字と小文字を区別しません。

デフォルトの基準では、 SUCCESS 以外の場合は continue になります。つまり、 [SUCCESS=return NOTFOUND=continue UNAVAIL=continue TRYAGAIN=continue] となります。

エントリー内の最後のソースに続くデフォルトの基準または明示的に指定した基準は、無効です。つまりアクションは、ソースが戻すステータスコードに関係なく常に呼び出しを行ったユーザーに戻るので、この基準は無視されます。

netconfig とのやりとり

エントリーの inet ファミリに基づく、一貫性ある結果で統一するために、 gethostbyname(), getservbyname() および netdir_getbyname() 関数はすべて同じ内部スイッチライブラリを使用します。 これらの関数は、システム全体で hosts および services を検索する場合に、 netconfig() 内の inet ファミリエントリーに基づいた方法を採用します。 services および hosts の場合だけ、最後のカラムの "-" がサポートされています。これは名前対アドレスのライブラリを表します。

YP 互換モードでの NIS+ とのやりとり

NIS+ サーバーは「YP 互換モード」で実行できます。この場合、NIS+ 要求と同様に NIS (YP) 要求も処理します。 この場合には、クライアントは、"nisplus" と同じ結果を "nis" ソースから入手します。しかし、"nis" の代わりに "nisplus" を使用することをお勧めします。

DNS 転送モードでの NIS (YP) サーバーとのやりとり

NIS (YP) サーバーは「DNS 転送モード」で実行することができます。この場合、データベース内に存在しないホスト名およびホストアドレスを求める検索要求を DNS に転送することができます。 この場合には、"hosts" のソースとして "nis" を指定すれば、DNS 検索結果を入手するのに十分です。つまり、"dns" をソースとして、明示的に指定する必要はありません。

「YP 互換モード」の NIS+ サーバーは、「DNS 転送モード」で実行することもできます ( rpc.nisd(1M) を参照してください)。 転送は、YP クライアントから行われた要求の場合だけ有効です。つまり、これらのクライアントに関する "hosts" ポリシーが正しく設定されていなければなりません。

+/- 構文によるやりとり

HP-UX 10.30 以前のリリースでは、パスワードおよびグループに対するネームサービススイッチのサポートがありませんが、ユーザーになんらかのポリシーを管理することを許可していました。 /etc/passwd 内に、 +user (NIS passwd.byname で指定したユーザーを含む)、 -user (指定したユーザーを除外する) および + (除外されたユーザーを除き、すべての NIS passwd.byname を含む) 形式のエントリーを持つことができました。 そして、 /etc/passwd の最後に単なる + を記述して「NIS 内のすべてを最後に指定したファイル内のすべて」を記述するのが一般的でした。 スイッチは、 /etc/passwd ファイル内に + エントリーを記述しなくても、このような ("passwd: files nis") 機能を提供します。

それでも不十分な場合には、"compat" ソースを指定して、完全な +/- 構文を使用します。 これは、 getpwnam() 関数用に /etc/passwd を読み取り、 +/- エントリーを見つけたら、適切なソースを呼び出します。 デフォルトの場合、ソースは "nis" ですが、これは擬似データベース passwd_compat のソースとして "nisplus" を指定することによって上書きすることができます。

compat ソースは、 group に対しても完全な +/- 構文を与え、関連擬似データベースは group_compat となります。

このライブラリ関数には、内部的に組み込まれているデフォルトのエントリーがあり、nsswitch.conf 内に適切なエントリーが存在しない場合や構文が正しくない場合に使用されます。エントリーは以下のようになっています。

passwd:  

files nis

group:  

files nis

hosts:  

dns [NOTFOUND=return] nis [NOTFOUND=return] files

networks:  

nis [NOTFOUND=return] files

protocols:  

nis [NOTFOUND=return] files

rpc:  

nis [NOTFOUND=return] files

publickey:  

nis [NOTFOUND=return] files

netgroup:  

nis [NOTFOUND=return] files

automount:  

files nis

aliases:  

files nis

services:  

nis [NOTFOUND=return] files

ipnodes:  

dns [NOTFOUND = return] files

有効な設定

すべてのデータベースのコンパイル済みデフォルトエントリーは、NIS (YP) を全社レベルのネームサービスとして使用するもので、このファイルのデフォルトの設定と同一です。

passwd:  

files nis

group:  

files nis

hosts:  

nis [NOTFOUND=return] files

networks:  

nis [NOTFOUND=return] files

protocols:  

nis [NOTFOUND=return] files

rpc:  

nis [NOTFOUND=return] files

publickey:  

nis [NOTFOUND=return] files

netgroup:  

nis

automount:  

files nis

aliases:  

files nis

services:  

files nis

sendmailvars:  

files

ipnodes:  

files

nis [NOTFOUND=return] files というポリシーは、「 nisUNAVAIL を戻した場合には、 files を続行し、 nisNOTFOUND を戻した場合には、呼び出し元に戻る、つまり、 nis を正式な情報のソースとして扱い、 nis が 実行していない場合にだけ files を試してみる」という意味です。

パスワードおよびグループに +/- 構文への適合性が要求される場合には、単に、 passwd および group のエントリーを次のように修正します。

passwd:  

compat

group:  

compat

NIS+ が全社レベルのネームサービスの場合には、クライアントマシン上のすべてのデータベースに対して nis の代わりに nisplus を使用するようにデフォルトの設定を修正しなければなりません。 ファイル /etc/nsswitch.nisplus には、このポリシーを設定するサンプルの設定があります。 /etc/nsswitch.conf にコピーしてください。

nisplus とともに +/- 構文を使用する場合には、以下の 4 つのエントリーを使用します。

passwd:  

compat

passwd_compat:  

nisplus

group:  

compat

group_compat:  

nisplus

全社レベルのネームサービスの NIS+ 内にリストされていないホストの情報をインターネットドメインネームサービスから入手するには、次の設定を使用して /etc/resolv.conf ファイルをセットアップします。詳細は、 resolver(4) を参照してください。

hosts:  

nisplus dns [NOTFOUND=return] files

ipnodes:  

dns [NOTFOUND=return] files

/etc/nsswitch.ldap ファイルには、 /etc/nsswitch.conf にコピーして LDAP ポリシーを設定できるサンプルの設定ファイルが入っています。 (nisnisplus が定義するアクセス制御で使う) +/- netgroup 構文が必要なら、管理者は /etc/pam.conf ファイルの libpam_authz.1 を構成する必要があります。 LDAP-UX の詳細は ldapux(5) のマンページを、 libpam_authz.1 の詳細は pam_authz(5) のマンページを、 +/- netgroup 構文の詳細は passwd(4) をそれぞれ参照してください。 ldapux(5)pam_authz(5) のマンページは、LDAP-UX 統合製品に入っています。

列挙関数 -- getXXXent()

多くのデータベースには、列挙関数があります。たとえば、 passwd には getpwent() があり、 hosts には gethostent() があります。 ソースが files だけであった場合にはこれらの関数は理にかなっていましたが、多数のエントリーを含む階層構造のソースの場合にはあまり意味がなく、複数のソースの場合にはほとんど意味がありません。 このインタフェースはまだ提供されていて、意味のある結果を出すように努力しますが、戻されたデータは不完全なものであったり (hosts の列挙関数は dns ソースではサポートされていません)、矛盾するものであったり (複数のソースが使用される場合)、予想外の形式でフォーマッティングされていたり (1 つの 正式名称と 3 つの別名を持つホストの場合、 nisplus ソースは 4 つのエントリーを戻し、それらは連続していない可能性もあります)、非常に高価であったり (5000 人のユーザーの passwd データベースを列挙するのはあまり好ましくない方法です) します。 さらに、同じ再入力可能な列挙関数 (getXXXent_r() がサポートされています) を使用する同一プロセスの複数スレッドは、同じ列挙位置を共有します。つまり、これらの関数が交互に呼び出しを行うと、同じデータベースのばらばらなサブセットを列挙することになります。

通常の場合は、列挙関数を使用しないようにします。 passwd および group の場合は、 fgetgrent()fgetpwent() および fgetspent() (それぞれ、 getgrent(3C) および getpwent(3C) を参照) の使用が適切なことが多くあります。これらの関数は files ソースだけを使用します。

警告

nsswitch.conf() を使用する各プロセスは、ファイル全体を一度だけ読み取ります。 このファイルが後で変更されても、プロセスは古い設定を使用し続けます。

getXXbyYY() 関数を使用すると、動的リンカの機能を用いて共有オブジェクト /usr/lib/nss_SSS.sl.1 にアクセスするので、この関数を使用するプログラムは、静的にリンクにより実行できません。

nis および nisplus を同じデータベースのソースとして使用しないように強くお勧めします。その理由は、両方のネームサービスが似た情報を保存することが予測されるために、要求時に処理を行うネームサーバーの種類によって、データベースの検索で異なる結果を与える可能性があるからです。

ソースおよびデータベースの名前のスペルを間違えても、その名前がソースおよびデータベースの正しい名前 (ほとんどの場合存在しない) として処理されます。

fgetgrent()fgetpwent()fgetspent()getpw() および putpwent() 関数はスイッチを使用しません

関数 getipnodebyname() および getipnodebyaddr()libc.2 に導入されているものであり、 libc.1 には 含まれません。

libc.1 にリンクされたアプリケーションは、NOTFOUND および TRYAGAIN に対して異なったデフォルトアクションを表示します。 libc.1 にリンクされたアプリケーションでは、ネームサービスが NOTFOUND または TRYAGAIN のどちらかの結果を返す場合に、スイッチサーチターミネイトが発生します。

このスイッチサーチターミネイトは、 source エントリーの間に criterion を含まないネームサービスの検索範囲が指定された、既存の nsswitch.conf ファイルにおいて発生します。

例: hosts: dns files

libc.1 にリンクされたアプリケーションの場合は、ファイルへのフォールバックは、DNSUNAVAIL を返す場合にのみ発生します。 その他のすべてのアプリケーションの場合は、ファイルへのフォールバックは、DNSSUCCESS を返さない場合に発生します。

libc.1 にリンクされたアプリケーションやその他のアプリケーションが同じ動作をするためには、 source の間で criterion が設定されなければなりません。

libc.1 の動作の場合

hosts: dns [NOTFOUND=return TRYAGAIN=return] files

デフォルトシステムの動作の場合

hosts: dns [NOTFOUND=continue TRYAGAIN=continue] files

著者

nsswitch.conf は、Sun Microsystems,Inc.で開発されました。

ファイル

/usr/lib 内の nss_SSS.1 共有オブジェクトが、SSS と名付けられるファイルを作成します。

/etc/nsswitch.conf
  

設定ファイル

/usr/lib/nss_compat.1
  

"compat" ソースを作成

/usr/lib/nss_dns.1
  

"dns" ソースを作成

/usr/lib/nss_files.1
  

"files" ソースを作成

/usr/lib/nss_nis.1
  

"nis" ソースを作成

/usr/lib/nss_nisplus.1
  

"nisplus" ソースを作成

/usr/lib/nss_ldap.1
  

"ldap" ソースを作成

/etc/netconfig  

ホスト / サービスのポリシーをスイッチにリダイレクトする netdir() 関数のための設定ファイル

/etc/nsswitch.files
  

"files" だけを使用するサンプルの設定ファイル

/etc/nsswitch.nis
  

"files" および "nis" を使用するサンプルの設定ファイル

/etc/nsswitch.nisplus
  

"files" および "nisplus" を使用するサンプルの設定ファイル

/etc/nsswitch.ldap
  

"files" および "ldap" を使用するサンプルの設定ファイル

参照

nis+(1)、automount(1M)、rpc.nisd(1M)、sendmail(1M)、getgrent(3C)、getpwent(3C)、gethostent(3N)、getnetent(3N)、getnetgrent(3C)、getprotoent(3N)、getpublickey(3N)、getrpcent(3C)、getservent(3N)、netdir(3N)、secure_rpc(3N)、netconfig(4)、resolver(4)、ypfiles(4)、LDAP-UX 統合製品の中の ldapux(5)、pam_authz(5)

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.