| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 4 : ファイルフォーマット > nnsswitch.conf(4)HP-UX 11i Version 2: September 2004 |
|
名称nsswitch.conf ― ネームサービススイッチの設定ファイル 説明オペレーティングシステムでは、ホスト、ユーザー (passwd) 、グループなどに関する多くの情報はデータベースを使用して管理します。 これらのデータは各種のソースから得られます。例えば、ホスト名およびホストアドレスは、 /etc/hosts 、NIS、NIS+、LDAP または DNS 内で見つけることができます。 それぞれのデータベースに 1 つまたは複数のソースが使用される可能性があります。これらのソースおよびその検索順序は、 /etc/nsswitch.conf ファイル内に指定されています。 以下のデータベースがスイッチを使用します。
以下のソースが使用されます。
/etc/nsswitch.conf には、各データベースごとに 1 つのエントリーがあります。 通常、これらのエントリーは、"protocols: files" または "networks: files nisplus" などのように単純です。 ただし、複数のソースが指定される場合には、それぞれのソースが使用される状況別に定義することが必要です。 ソースは、以下のコードの 1 つを戻します。
それぞれのステータスコードに対して、次の 2 つのアクションが可能です。
エントリーの完全な構文は、次のとおりです。 <entry> ::= <database> ":" [<source> [<criteria>]]* <source> それぞれのエントリーは、ファイル内で 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 内に適切なエントリーが存在しない場合や構文が正しくない場合に使用されます。エントリーは以下のようになっています。
有効な設定すべてのデータベースのコンパイル済みデフォルトエントリーは、NIS (YP) を全社レベルのネームサービスとして使用するもので、このファイルのデフォルトの設定と同一です。
nis [NOTFOUND=return] files というポリシーは、「 nis が UNAVAIL を戻した場合には、 files を続行し、 nis が NOTFOUND を戻した場合には、呼び出し元に戻る、つまり、 nis を正式な情報のソースとして扱い、 nis が 実行していない場合にだけ files を試してみる」という意味です。 パスワードおよびグループに +/- 構文への適合性が要求される場合には、単に、 passwd および group のエントリーを次のように修正します。
NIS+ が全社レベルのネームサービスの場合には、クライアントマシン上のすべてのデータベースに対して nis の代わりに nisplus を使用するようにデフォルトの設定を修正しなければなりません。 ファイル /etc/nsswitch.nisplus には、このポリシーを設定するサンプルの設定があります。 /etc/nsswitch.conf にコピーしてください。 nisplus とともに +/- 構文を使用する場合には、以下の 4 つのエントリーを使用します。
全社レベルのネームサービスの NIS+ 内にリストされていないホストの情報をインターネットドメインネームサービスから入手するには、次の設定を使用して /etc/resolv.conf ファイルをセットアップします。詳細は、 resolver(4) を参照してください。
/etc/nsswitch.ldap ファイルには、 /etc/nsswitch.conf にコピーして LDAP ポリシーを設定できるサンプルの設定ファイルが入っています。 (nis と nisplus が定義するアクセス制御で使う) +/- 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 にリンクされたアプリケーションの場合は、ファイルへのフォールバックは、DNS が UNAVAIL を返す場合にのみ発生します。 その他のすべてのアプリケーションの場合は、ファイルへのフォールバックは、DNS が SUCCESS を返さない場合に発生します。 libc.1 にリンクされたアプリケーションやその他のアプリケーションが同じ動作をするためには、 source の間で criterion が設定されなければなりません。 libc.1 の動作の場合 hosts: dns [NOTFOUND=return TRYAGAIN=return] files デフォルトシステムの動作の場合 hosts: dns [NOTFOUND=continue TRYAGAIN=continue] files ファイル/usr/lib 内の nss_SSS.1 共有オブジェクトが、SSS と名付けられるファイルを作成します。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||