ここでは、Solaris オペレーティング環境のネームサービスとディレクトリサービスについて概要を説明します。また、異なるサービスと組み合わせて使用する際に利用する nsswitch.conf ファイルについても説明します。
この章では、Solaris で使用されるネームサービスとディレクトリサービスの概要について説明します。また、DNS、NIS、および LDAP ネームサービスについても簡潔に説明します。NIS+ および FNS の詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。
「ネームサービス」は、ユーザー、マシン、およびアプリケーションがネットワーク経由で通信するための情報を集中管理することを可能にします。格納される情報には、以下が含まれます。
マシン (ホスト) 名とアドレス
ユーザ名
パスワード
アクセス権
グループのメンバーシップ、プリンタなど
集中化されたネームサービスが存在しない場合、マシンごとに、これらの情報のコピーを管理する必要があります。ネームサービス情報はファイルまたはマップ、データベーステーブルの形で格納できます。すべてのデータを1 カ所で管理すれば、管理がより簡単になります。
ネームサービスは、どのようなコンピュータネットワークにも欠かせないものです。ネームサービスは、他の機能に加え、次の機能を提供します。
名前とオブジェクトを対応付ける (バインドする)
オブジェクトの名前を解決する
バインドを解除する
名前を一覧表示する
名前を変更する
ネットワーク情報サービスを使用すると、数値アドレスの代わりに一般的な名前でマシンを識別できます。これにより、ユーザーは 192.168.00.00 のような扱いにくい数値アドレスを記憶して入力する必要がなくなるため、通信がより簡単になります。
たとえば、pine、elm、oak という 3 台のマシンで構成されるネットワークを考えてみましょう。 pine が elm または oak にメッセージを送信するには、pine はそれら 2 台のネットワークアドレスを知る必要があります。 そのため pine は、自分自身を含めたネットワーク内のすべてのマシンのネットワークアドレスを格納する /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを保持しています。
同様に、elm や oak が pine と通信したり、お互いに通信するためには、上記のようなファイルを保持している必要があります。
マシンには、アドレスに加え、セキュリティ情報、メールデータ、ネットワークサービスについての情報なども格納されます。ネットワークによって提供されるサービスが増えるにつれて、格納する情報の種類も増えていきます。その結果、各マシンで /etc/hosts や /etc/inet/ipnodes のようなファイルのセット全部を保持する必要がでてくる可能性があります。
ネットワーク情報サービスは、サーバー上にネットワーク情報を格納し、照会を実行するマシンに情報を提供します。
照会を実行するマシンは、サーバーの「クライアント」と呼ばれます。次の図に、クライアントとサーバーの関係を示します。ネットワークについての情報が変更されるたびに、各クライアントのローカルファイルを変更する代わりに、管理者はネットワーク情報サービスが格納する情報だけを更新します。これによって、エラー、クライアント間の不一致、そして作業量を減らすことができます。
このように、サーバーがネットワークを通してサービスをまとめてクライアントに提供する方法を「クライアントサーバーコンピューティング」と呼びます。
ネットワーク情報サービスの第一の目的は情報の一元管理ですが、もう1 つの目的はネットワーク名の簡素化です。たとえば、ある会社がネットワークを設定して、インターネットに接続したと仮定します。インターネットはその会社に 192.68.0.0 というネットワーク番号と、doc.com というドメインネームを割り当てました。会社には「営業 (Sales)」と「製造 (Manf)」という 2 つの部門があるため、このネットワークは 1 つのメインネットと、各部門に 1 つのサブネットに分割されます。各ネットには独自のアドレスがあります。
上に示すように、各部はネットワークアドレスで識別することもできますが、ネームサービスによって使用可能となる説明的な名前の方が便利です。
メールやその他のネットワーク通信の送信先を 129.44.1.0 というアドレスで指定する代わりに、単に doc と指定できます。 また、メールの送信先を 192.68.2.0 や 192.68.3.0 と指定する代わりに、sales.doc や manf.doc と指定できます。
名前はまた、物理アドレスよりもはるかに柔軟です。物理的なネットワークはめったに変更されませんが、企業の組織はよく変化します。
たとえば、doc.com ネットワークが、S1、S2、S3 の 3 台の サーバーによってサポートされ、そのうち 2 台のサーバー (S1 と S3) がクライアントをサポートしているとします。
クライアント C1、C2、C3 はネットワーク情報をサーバー S1 から入手します。クライアント C4、C5、C6 は、サーバー S3 から情報を入手します。結果として構成されるネットワークの概要を、次の表に示します表は、前記のネットワークを一般化して表現したもので、実際のネットワーク情報マップとは異なります。
表 1–1 docs.com ネットワークの構成
ネットワークアドレス |
ネットワーク名 |
サーバ |
クライアント |
---|---|---|---|
192.68.1.0 |
doc |
S1 |
|
192.68.2.0 |
sales.doc |
S2 |
C1、C2、C3 |
192.68.3.0 |
manf.doc |
S3 |
C4、C5、C6 |
2 つの部門からある人数の人材を借りて第 3 の部門 Test を新設し、第 3 のサブネットは開設しなかったとします。その結果、物理ネットワークは、企業の組織とは対応しなくなります。
Test 部門のトラフィックには専用のサブネットがなく、192.68.2.0 と 192.68.3.0 に分割されます。 ここで、ネットワーク情報サービスを使用することにより、Test 部門のトラフィックにも専用のネットワークを備えることができます。
このように、組織が変更された場合、そのネットワーク情報サービスでは以下に示すようにマッピングを変更できます。
この変更の結果、クライアントC1 とC2 はサーバーS2 から、C3、C4、C5 はサーバーS3 から情報を入手するようになります。
組織内でその後に行われる変更に対しては、ハードウェアのネットワーク構造を再編成することなく、ネットワーク情報構造を変更することにより対応できます。
Solaris オペレーティング環境は、以下のネームサービスを提供します。
DNS (ドメインネームシステム、Domain Name System) - DNS ネームサービスの説明を参照してください。
/etc ファイル - 初期の UNIX® のネームシステム。/etc ファイルネームサービスの説明を参照してください。
NIS (ネットワーク情報サービス、Network Information Service) - NIS ネームサービスの説明を参照してください。
NIS+ (ネットワーク情報サービスプラス、Network Information Service Plus) - 『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。
FNS (フェデレーテッド・ネーミング・サービス、Federated Naming Service) - 『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。
LDAP (Lightweight Directory Access Protocol) (パート Vの「LDAP ネームサービスの設定と管理」を参照)。
最近のほとんどのネットワークでは、これらのサービスを 2 つ、またはそれ以上組み合わせて使用します。複数のサービスを使用するときは、nsswitch.conf ファイルで調整します。このファイルについては第 2 章「ネームサービススイッチ (概要)」で説明します。
DNS は TCP/IP ネットワーク用にインターネットが提供するネームサービスです。DNS はネットワーク上のマシンがインターネットアドレスではなく、普通の名前で識別できるように開発されたものです。DNS は、ローカルの管理ドメイン内と、複数の管理ドメイン間においてホスト名の管理を行います。
DNS を使用する、ネットワークに接続されたマシンの集合のことを「DNS 名前空間」と呼びます。DNS 名前空間は階層をなす複数の「ドメイン」に分けることができます。DNS ドメインは、複数のマシンからなるグループです。各ドメインは複数の「ネームサーバー」、つまり、1 つの主サーバーと 1 つまたは複数の副サーバーよってサポートされます。各サーバーは in.named デーモンを実行することによってDNS を実装しています。クライアント側は、「リゾルバ」によって DNS を実装します。リゾルバの機能は、ユーザーによる参照を解決することです。リゾルバがネームサーバーに照会すると、ネームサーバーは要求された情報か、または他のサーバーに照会する旨を返します。
ホストを基本とした初期の UNIX のネームシステムは、スタンドアロンの UNIX マシン用に開発された後、ネットワークで使用されるようになりました。UNIX オペレーティングシステムの旧版や UNIX マシンの多くは、現在でもこのシステムを使用していますが、大規模で複雑なネットワークにはあまり適切ではありません。
ネットワーク情報サービス (NIS) は、DNS とは独立して開発されました。 DNS が数値 IP アドレスの代わりにマシン名を使うことによって、通信を簡略化することに焦点を当てているのに対して、NIS は、多様なネットワーク情報を集中管理することによりネットワーク管理機能を高めることに焦点を当てています。NIS には、ネットワーク、マシンの名前とアドレス、ユーザー、およびネット ワークサービスに関する情報も格納されます。このようなネットワーク情報の集合体を、「NIS 名前空間」と呼びます。
NIS 名前空間情報は NIS マップに格納されています。NIS マップは、UNIX の /etc ファイルおよび他の構成ファイルを置換するように設計されているので、名前やアドレスよりはるかに多くの情報を保存できます。その結果、NIS 名前空間には非常に大きなマップの集合が含まれることになります。詳細については、NIS マップに関する作業を参照してください。
NIS は DNS に似たクライアントサーバーの配列を持っています。複製の NIS サーバーは NIS クライアントへサービスを提供します。主サーバーは「マスター」サーバーと呼ばれ、信頼性を保証するためにバックアップつまり「スレーブ」サーバーを持っています。 どちらのサーバーも NIS 検索ソフトウェアを使用し、NIS マップを格納します。NIS アーキテクチャおよび NIS の管理方法の詳細については、第 8 章「NIS サービスの設定と構成」および第 9 章「NIS の管理 (手順)」を参照してください。
ネットワーク情報サービスプラス (NIS+) は、NIS によく似たネットワークネームサービスですが、より多くの機能を備えています。ただし、NIS+ は NIS の拡張機能ではありません。
NIS+ ネームサービスは、組織の形態に適合するように設計されています。NIS とは異なり、NIS+ の名前空間は動的な構成で、正規ユーザーであればいつでも更新できます。
NIS+ を使用すると、マシンのアドレス、セキュリティ情報、メール情報、Ethernet インタフェース、ネットワークサービスなどの情報を 1 カ所に格納できます。このように構成されたネットワーク情報を、NIS+「名前空間」と呼びます。
NIS+ 名前空間は階層構造となっていて、UNIX のディレクトリファイルシステムによく似ています。階層構造になっていることから、NIS+ 名前空間を企業組織の階層に合わせて構成できます。名前空間における情報の配置は、物理的な配置とは関係ありません。したがって、NIS+ 名前空間は、独立して管理できる複数のドメインに分割できます。クライアントは、適切なアクセス権があれば、自分のドメイン以外のドメインの情報にもアクセスできます。
NIS+ はクライアントサーバーモデルを使用して、NIS+ 名前空間に情報を格納し、またその情報にアクセスできます。各ドメインは複数のサーバーによってサポートされます。メインのサーバーは「主」サーバーと呼ばれ、バックアップサーバーは「副」サーバーと呼ばれます。ネットワーク情報は、内部 NIS+ データベース内にある 16 個の標準 NIS+ テーブルに格納されています。主サーバーと副サーバーの両方で NIS+ サーバーソフトウェアが動作しており、NIS+ テーブルのコピーを管理しています。マスターサーバー上の NIS+ データの変更は、副サーバーにも自動的に伝達されます。
NIS+ には、名前空間の構造とその情報を保護するために、高度なセキュリティシステムが組み込まれています。NIS+ は、情報にアクセスしようとしているクライアントが正当なものであるかどうかを認証と承認によって確認します。「認証」とは、情報の要求者がネットワークの正当なユーザーであるかどうかを判定することです。「承認」では、特定のユーザーが情報を所有したり修正したりできるかどうかを確認します。NIS+ のセキュリティの詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。
NIS+ から LDAP への移行の詳細については、 第 20 章「NIS+ から LDAP への移行」を参照してください。
FNS の詳細については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』 を参照してください。
Solaris 9 は、Sun ONE Directory Server (以前の名称は iPlanet Directory Server) および他の LDAP Directory Server を使用する場合、LDAP (Lightweight Directory Access Protocol) をサポートします。
LDAP ネームサービスの詳細は、第 12 章「LDAP ネームサービスの紹介 (概要/リファレンス)」を参照してください。
NIS から LDAP、または NIS+ から LDAP への移行についての詳細は、第 19 章「NIS から LDAP への移行 (概要と手順)」または第 20 章「NIS+ から LDAP への移行」を参照してください。
|
DNS |
NIS |
NIS+ |
FNS |
LDAP * |
---|---|---|---|---|---|
名前空間 |
階層 |
Flat |
階層 |
階層 |
階層 |
データ記憶領域 |
ファイル/リソースレコード |
2 列のマップ |
複数列のテーブル |
マップ |
ディレクトリ (可変) |
サーバー名 |
マスター/スレーブ |
マスター/スレーブ |
ルートマスター/非ルートマスター 主/副 キャッシュ/スタブ |
なし |
マスター/複製 |
セキュリティ |
SSL |
なし (root またはなし) |
DES 認証 |
なし (root または、なし) |
SSL |
トランスポート |
TCP/IP |
LAN |
LAN |
LAN |
TCP/IP |
スケール |
グローバル |
LAN |
LAN |
グローバル (DNS 付)/LAN |
グローバル |
この章では、ネームサービススイッチについて説明します。ネームサービススイッチは、異なるネームサービスの使用方法を調整するために使います。
ネームサービススイッチは nsswitch.conf という名前のファイルです。 クライアントのマシンやアプリケーションがネットワーク情報を得る方法を管理します。ネームサービススイッチは、次のような getXbyY() インタフェースのいずれかを呼び出すクライアントアプリケーションによって使用されます。
各マシンの /etc ディレクトリには、スイッチファイルがあります。ファイルの各行は、ホスト、パスワード、グループなどの特定タイプのネットワーク情報を識別します。その後に 1 つまたは複数のネットワーク情報の場所が続きます。
クライアントは、1 つまたは複数のスイッチのソースからネーミング情報を入手できます。たとえば、NIS+ のクライアントは、NIS+ テーブルからホスト情報を、ローカルの /etc ファイルからパスワード情報をそれぞれ入手できます。さらに、クライアントはスイッチが各ソースを使用する条件を指定することもできます。表 2–1 を参照してください。
Solaris オペレーティング環境では、インストールの過程で、各マシンの /etc ディレクトリに nsswitch.conf ファイルが自動的にロードされます。LDAP、NIS、NIS+ またはローカルファイル用にスイッチファイルの 4 つの代替 (テンプレート) バージョンも /etc にロードされます。nsswitch.conf テンプレートファイルを参照してください。
これら 4 つのファイルは、代替デフォルトスイッチファイルです。各ファイルはそれぞれ /etc ファイル、NIS、NIS+、LDAP という異なる主要なネームサービス用に設計されています。Solaris ソフトウェアをマシンに最初にインストールする時に、インストール担当者はマシンのデフォルトのネームサービス(NIS+、NIS、ローカルファイル、または LDAP) を選択します。インストール中に、対応するテンプレートファイルが nsswitch.conf ファイルにコピーされます。たとえば、LDAP を使用するクライアントマシンでは、インストールの過程で nsswitch.ldap が nsswitch.conf にコピーされます。 特殊な名前空間を持っている場合を除き、通常の操作には nsswitch.conf にコピーされるデフォルトのテンプレートファイルを使用できます。
DNS 用のデフォルトファイルは提供されませんが、これら 4 つのファイルのどれでも編集して DNS 用に使用できます。詳細は、DNS とインターネットでのアクセスを参照してください。
マシンの主要なネームサービスを後から変更する場合は、該当する代替スイッチファイルを nsswitch.conf にコピーします。nsswitch.conf テンプレートファイルを参照してください。NIS 管理者はまた、/etc/nsswitch.conf ファイルの該当行を編集することによって、クライアントで使用する特定タイプのネットワーク情報のソースを変更できます。構文について、以下に説明します。 詳細については、ネームサービススイッチを変更する方法 を参照してください。
nsswitch.conf ファイルは、基本的には 16 種類の情報とそのソース (getXXbyYY() 関数の情報検索先) のリストです。16 種類の情報は次のとおりです (順序は、必ずしも次のとおりではありません)。
aliases
bootparams
ethers
group
hosts
ipnodes
netgroup
netmasks
networks
passwd (シャドウ情報含む)
protocols
publickey
rpc
services
automount
sendmailvars
次の表に、上記の情報タイプのスイッチファイルの中に表示できるソースの種類とその説明を示します。
表 2–1 スイッチファイルの情報ソース
ソース |
説明 |
---|---|
files |
クライアントの /etc ディレクトリに格納されているローカルファイル (/etc/passwd など) |
nisplus |
NIS+ テーブル。(hosts テーブルなど) |
nis |
NIS マップ。(hosts マップなど) |
compat |
compat パスワードとグループ情報を対象に、/etc/passwd、/etc/shadow、/etc/group ファイルで旧形式の「+」または「-」構文をサポートする |
dns |
ホスト情報を DNS から入手するように指定する |
ldap |
エントリを LDAP ディレクトリから入手するように指定する |
「単一ソース」。 nisplus のような情報のソースが 1 つだけの場合、スイッチを使用している関数は、そのソースだけで情報を検索します。 情報が見つかった場合、「success」という状態メッセージが返されます。情報が見つからない場合は、検索が停止され、「success」 以外の状態メッセージが返されます。状態メッセージに基づいて何をするかは、関数によって異なります。
「複数ソース」。テーブルに特定の情報タイプのソースが複数ある場合、スイッチは最初のソースから検索を行うように関数に指示します。情報が見つかった場合、「success」という状態メッセージが返されます。最初のソースで情報が見つからない場合は、次のソースが検索されます。関数は情報が見つかるか、return 処理によって中止されるまで全ソースを検索します。必要な情報がどのソースにもなかったとき、関数は検索を停止し、non-success という状態メッセージを返します。
情報が見つかると、「success」という状態メッセージが返されます。 探している情報が見つからない場合は、3 種類のエラー状態メッセージのいずれかが返されます。表示される状態メッセージを次の表に示します。
表 2–2 スイッチ状態メッセージ
状態メッセージ |
意味 |
---|---|
SUCCESS |
要求されたエントリがソース内で発見された |
UNAVAIL |
ソースが応答しない、または使用不可。つまり、NIS+ テーブル、NIS マップ、または /etc ディレクトリのファイルが見つからなかったかアクセスできなかった |
NOTFOUND |
ソースが「エントリなし」と応答した。テーブル、マップ、ファイルにアクセスしたが、必要な情報は見つからなかった |
TRYAGAIN |
ソース使用中のため再検索の必要あり。テーブル、マップ、ファイルは見つかったが、照会に対して応答しなかった |
次の表に示すように、状態メッセージに対して 2 つの「動作」のどちらかで応答するようにスイッチに指示できます。
表 2–3 スイッチ状態メッセージへの応答
動作 |
意味 |
---|---|
return |
情報の検索を停止する |
continue |
次のソースの検索を試みる |
nsswitch.conf ファイルの状態メッセージと動作オプションの組み合わせによって、関数の各ステップでの動作が決まります。 状態と動作を組み合わせて、「検索基準」を構成します。
スイッチのデフォルト検索規準は、どのソースについても同じです。これらを上記の状態メッセージに基づいて説明すると、次のようになります。
UNAVAIL=continue。次のソース (nsswitch.conf ファイルに指定されたもの) を使用して検索を続行する。次のソースがなければ、「NOTFOUND」という状態メッセージを返す
NOTFOUND=continue。次のソース (nsswitch.conf ファイルに指定されたもの) を使用して検索を続行する。次のソースがなければ、「NOTFOUND」という状態メッセージを返す
TRYAGAIN=continue。次のソース (nsswitch.conf ファイルに指定されたもの) を使用して検索を続行する。次のソースがなければ、「NOTFOUND」という状態メッセージを返す
ほかの検索基準を明示的に指定してデフォルトの検索基準を変更するには、上記の STATUS=action という構文を使用します。たとえば、NOTFOUND 状態に対し、デフォルトの動作では次のソースに対する検索を続行しますが、NOTFOUND 状態の場合に検索を停止するように networks の設定を変更するには、スイッチファイルの networks 行を次のように編集します。
networks: nis [NOTFOUND=return] files |
networks: nis [NOTFOUND=return] files 行は、NOTFOUND 状態に関してデフォルトでない検索基準を設定しています。デフォルト以外の設定をするときは [ ] を使用します。
この例では、検索関数は以下のような働きをします。
networks マップが見つかり必要な情報があった場合、関数は「SUCCESS」という状態メッセージを返します。
networks マップが見つからなかった場合、関数は「UNAVAIL」という状態メッセージを返し、デフォルトで適切な /etc ファイルの検索を続行します。
networksマップは見つかったがマップの中に必要な情報がなかった場合、関数は「NOTFOUND」という状態メッセージを返します。そして /etc ファイルの検索を続行する (デフォルトの設定) 代わりに検索を停止します。
networksマップが使用中の場合、関数は TRYAGAIN という状態メッセージを返し、デフォルトで適当な /etc ファイルの検索を続行します。
クライアントのライブラリ関数には、nsswitch.conf ファイルにおいて「必要なエントリがない」、「エントリの構文が誤っている」といった場合に使用される、コンパイル時に組み込まれるデフォルトエントリがあります。これらのエントリは nsswitch.conf ファイルのデフォルトエントリと同じものです。
ネームサービススイッチは、テーブル名やソース名のスペルが正しいものとして処理をします。テーブル名やソース名のスペルが正しくない場合は、デフォルト値が使用されます。
auto_home テーブル、auto_master テーブルとマップのスイッチ検索基準は、automount と呼ばれる 1 つのカテゴリに統合されます。
timezone テーブルはスイッチを使用しないため、スイッチファイルのリストには含まれていません。
nsswitch.conf ファイル中の行のうち、コメント文字 (#) で始まっているものはコメント行として解釈され、ファイルを検索する関数では無視されます。
コメント文字の前の文字列は、nsswitch.conf ファイルを検索する関数によって解釈されます。コメント文字よりあとの文字列は、コメントとして解釈され、無視されます。
表 2–4 スイッチファイルのコメント例
行の種類 |
例 |
---|---|
コメント行 |
#hosts: nisplus [NOTFOUND=return] files |
解釈される行 |
hosts: nisplus [NOTFOUND=return] file |
部分的に解釈される行(「files」の部分は解釈されない) |
hosts: nisplus [NOTFOUND=return] # files |
nsswitch.conf に変更を加えた後は、キーサーバーを再起動する必要があります。
キーサーバーは、起動時にだけネームサービススイッチ構成ファイルの publickey エントリを参照します。スイッチ構成ファイルを変更しても再起動しない限り、キーバーサーバーは変更を登録しません。
Solaris オペレーティング環境では、さまざまなネームサービスに対応できるように、スイッチテンプレートファイルが 4 つ用意されています。ファイルごとに、異なるデフォルトの情報ソースセットが提供されます。
4 つのテンプレートファイルは、次のとおりです。
「LDAP テンプレートファイル」(nsswitch.ldap ファイル)。この構成ファイルでは、マシンの情報の一次ソースとして LDAP ディレクトリが指定されています。
LDAP ネームサービスを使用するには、すべての LDAP クライアントマシンを正しく設定し、nsswitch.conf を変更する必要があります。 詳細については、第 16 章「クライアントの設定 (手順)」を参照してください。
「NIS+ テンプレートファイル」(nsswitch.nisplus ファイル)。nsswitch.nisplus 構成ファイルでは、passwd、group、automount、aliases を除くすべての情報の一次ソースとして NIS+ が指定されています。 これら 4 つのファイルでは、一次ソースはローカルの /etc ディレクトリのファイルで、二次ソースは NIS+ テーブルです。[NOTFOUND=return] という検索基準は、スイッチが「No such entry」というメッセージを受け取ったら NIS+ テーブルの検索を停止するという意味です。スイッチは、NIS+ サーバーを使用できない場合、ローカルファイルのみ検索します。
「NIS テンプレートファイル」(nsswitch.nis ファイル)。この構成ファイルは、NIS+ テーブルではなく NIS マップを使用するという点を除けば、NIS+ テンプレートファイルとほぼ同じです。 passwd、group の情報に関しては files nis という順序で検索するよう指定されているため、/etc/passwd と /etc/group に + エントリを指定する必要はありません。
「Files テンプレートファイル」(nsswitch.files ファイル)。この構成ファイルでは、マシンの情報ソースとしてローカルの /etc ディレクトリのファイルだけが指定されています。 netgroup に関する files のソースは存在しないため、クライアントがスイッチファイルでこのエントリを使用することはありません。
要件に一番近いテンプレートファイルを nsswitch.conf 構成ファイルにコピーして、必要に応じてファイルを変更します。
たとえば、LDAP テンプレートファイルを使用する場合は、次のコマンドを入力します。
mymachine# cp /etc/nsswitch.ldap /etc/nsswitch.conf |
Solaris オペレーティング環境で用意されている 4 つのスイッチファイルは、次のとおりです。
# # /etc/nsswitch.nisplus: # # An example file that could be copied over to /etc/nsswitch.conf; # it uses NIS+ (NIS Version 3) in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" # transports. # the following two lines obviate the "+" entry in /etc/passwd # and /etc/group. passwd: files nisplus group: files nisplus # consult /etc "files" only if nisplus is down. hosts: nisplus [NOTFOUND=return] files # Uncomment the following line, and comment out the above, to use # both DNS and NIS+. You must also set up the /etc/resolv.conf # file for DNS name server lookup. See resolv.conf(4). # hosts: nisplus dns [NOTFOUND=return] files services: nisplus [NOTFOUND=return] files networks: nisplus [NOTFOUND=return] files protocols: nisplus [NOTFOUND=return] files rpc: nisplus [NOTFOUND=return] files ethers: nisplus [NOTFOUND=return] files netmasks: nisplus [NOTFOUND=return] files bootparams: nisplus [NOTFOUND=return] files publickey: nisplus netgroup: nisplus automount: files nisplus aliases: files nisplus sendmailvars: files nisplus |
# # /etc/nsswitch.nis: # # An example file that could be copied over to /etc/nsswitch.conf; # it uses NIS (YP) in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" # transports. # # the following two lines obviate the "+" entry in /etc/passwd # and /etc/group. passwd: files nis group: files nis # consult /etc "files" only if nis is down. hosts: nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files netmasks: nis [NOTFOUND=return] files bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files netgroup: nis automount: files nis aliases: files nis # for efficient getservbyname() avoid nis services: files nis sendmailvars: files |
# # /etc/nsswitch.files: # # An example file that could be copied over to /etc/nsswitch.conf; # it does not use any naming service. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" # transports. passwd: files group: files hosts: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files publickey: files # At present there isn't a 'files' backend for netgroup; # the system will figure it out pretty quickly, and will notuse # netgroups at all. netgroup: files automount: files aliases: files services: files sendmailvars: files |
# # /etc/nsswitch.ldap: # # An example file that could be copied over to /etc/nsswitch.conf; it # uses LDAP in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports. # the following two lines obviate the "+" entry in /etc/passwd and /etc/group. passwd: files ldap group: files ldap hosts: ldap [NOTFOUND=return] files networks: ldap [NOTFOUND=return] files protocols: ldap [NOTFOUND=return] files rpc: ldap [NOTFOUND=return] files ethers: ldap [NOTFOUND=return] files netmasks: ldap [NOTFOUND=return] files bootparams: ldap [NOTFOUND=return] files publickey: ldap [NOTFOUND=return] files netgroup: ldap automount: files ldap aliases: files ldap # for efficient getservbyname() avoid ldap services: files ldap sendmailvars: files |
Solaris オペレーティング環境と共にインストールされるデフォルトの nsswitch.conf ファイルは、インストール時に選択したネームサービスで決まります。 ファイルの各行は、ネットワーク情報の種類 (ホスト、パスワード、グループなど) と、それに対する情報ソース (NIS+ テーブル、NIS マップ、DNS ホストテーブル、同一マシン上の /etc など) を対応させています。ネームサービスを選択すると、そのサービスのスイッチテンプレートファイルがコピーされ新しい nsswitch.conf ファイルが作成されます。たとえば、NIS+ を選択した場合は、nsswitch.nisplus ファイルがコピーされ新しい nsswitch.conf ファイルが作成されます。
nsswitch.conf ファイルは、Solaris 9 リリースをインストールすると各マシンの /etc ディレクトリに自動的に作成されます。また、次の 4 つの代替テンプレートファイルも作成されます。
これらの 4 つの代替テンプレートファイルには、それぞれネットワーク情報の情報ソースとして NIS+、NIS、ローカルファイル、 または LDAP を使用する標準的なスイッチ構成が設定されています。DNS 用のデフォルトファイルは提供されませんが、これら 4 つのファイルのどれでも編集して DNS 用に使用できます。第 5 章「DNS の管理 (参照情報)」を参照してください。Solaris オペレーティング環境をマシンに最初にインストールするとき、インストーラによりマシンのデフォルトのネームサービスが選択されます。 インストール中に、選択されたネームサービスに対応するテンプレートファイルが /etc/nsswitch.conf にコピーされます。たとえば、NIS+ を使用しているクライアントマシンでは、インストールの過程で nsswitch.nisplus が nsswitch.conf にコピーされます。
ネットワークがインターネットに接続されており、ユーザーが DNS を使用してインターネット上のホストにアクセスする必要がある場合は、DNS 転送を有効にする必要があります。
特殊な名前空間を持っている場合を除き、通常の操作には nsswitch.conf にコピーされるデフォルトのテンプレートファイルを使用します。
マシンのネームサービスを変更するときは、そのマシンのスイッチファイルを新しいネームサービスに対応させて変更する必要があります。たとえば、マシンのネームサービスを NIS から NIS+ に変更する場合、スイッチファイルを NIS+ に対応したものに変更する必要があります。スイッチファイルを変更するには、対応するテンプレートファイルを nsswitch.conf にコピーします。
NIS+ インストールスクリプトを使って NIS+ をマシンにインストールすると、NIS+ テンプレートファイルが自動的に nsswitch.conf にコピーされます。この場合、特にスイッチファイルをカスタマイズしたいというのでなければ、スイッチファイルを明示的に変更する必要はありません。
スイッチファイルを変更する前に、ファイルに列挙されている情報ソースが正しく設定されていることを確認してください。たとえば、NIS+ 用スイッチファイルに変更するのであれば、ワークステーションには NIS+ サービスへのアクセス権が必要になり、ローカルファイル用スイッチファイルに変更するのであれば、それらのローカルファイルがワークステーション上に正しく設定されている必要があります。
スイッチファイルを変更する場合は、次の手順に従います。
スーパーユーザーになります。
使用するネームサービス用のテンプレートファイルを nsswitch.conf にコピーします。
「NIS+ 用」(NIS+ スクリプトにより自動的にコピーされる)
client1# cd /etc client1# cp nsswitch.nisplus nsswitch.conf |
「NIS 用」
client1# cd /etc client1# cp nsswitch.nis nsswitch.conf |
「ローカルの /etc ファイル用」
client1# cd /etc client1# cp nsswitch.files nsswitch.conf |
マシンをリブートします。
nscd デーモンによってスイッチ情報がキャッシュに書き込まれます。ライブラリ関数の中には、nsswitch.conf ファイルが変更されたかどうかを定期的にチェックしないものがあります。このため、マシンをリブートして、nscd とこれらのライブラリ関数が確実に最新スイッチの情報を持つようにする必要があります。
LDAP ネームサービスを使用するには、すべての LDAP クライアントマシンを正しく設定し、nsswitch.conf を変更する必要があります。 詳細については、第 16 章「クライアントの設定 (手順)」を参照してください。
nsswitch.conf ファイルでは、以下のいくつかのセクションで説明するとおり、クライアントの DNS 転送も制御されます。DNS 転送によって、クライアントへのインターネットでのアクセスが可能になります。NIS と NIS+ 用に DNS 転送を設定する方法については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)』を参照してください。
NIS、NIS+、および LDAP では、IPv6 データを格納できるだけでなく、プロトコルのトラフィックに IPv6 トランスポートを使用することもできます。DNS は、クライアント側でのみ IPv6 トランスポートの使用をサポートします。BIND Version 8.3.3 では、DNS サーバーは IPv6 トランスポートをサポートしません。
nsswitch.conf ファイルは、IPv6 アドレスの検索基準を制御します。IPv6 は、32 ビットから 128 ビットまで IP アドレスサイズを大きくして、より多くのアドレス階層をサポートし、より多くのノードにアドレス指定できるようにします。IPv6 の構成と実装の詳細については、『Solaris のシステム管理 (IP サービス)』を参照してください。
IPv6 アドレスには、新しい ipnodes ソースを使用してください。/etc/inet/ipnodes ファイルには、IPv4 と IPv6 のアドレスが格納されています。/etc/inet/ipnodes ファイルは、/etc/hosts ファイルと同じフォーマットを使用します。
IPv6 のネームサービスでは、 検索用に新しい ipnodes ソースを使用しています。たとえば、LDAP で IPv6 アドレスを認識させる場合は、次のように指定します。
ipnodes: ldap [NOTFOUND=return] files |
起こり得る遅延の問題について
ipnodes は、デフォルトでは files です。 IPv4 から IPv6 への変更中には、すべてのネームサービスが、IPv6 アドレスを認識できるわけではないので、デフォルトの files を使用します。このデフォルトを使用しない場合には、アドレスの解決中に不必要な遅延が生じることがあります (ブート時の遅延など)。
アプリケーションは、、IPv4 のアドレスを ipnodes データベースで検索してから、hosts データベースを検索します。ipnodes を指定する前に、IPv4 アドレスの両方のデータベースを検索する時間を考慮にいれる必要があります。
/etc/passwd、/etc/shadow、/etc/group の各ファイルで +/- 構文を使用する場合は、nsswitch.conf ファイルを変更して互換性を確保する必要があります。
「NIS+」。NIS+ で +/- 構文と同じ効果を得るには、passwd および groups のソースを compat に変更します。次に passwd_compat: nisplus というエントリを、nsswitch.conf ファイルの passwd または group エントリの後に追加します。
passwd: compat passwd_compat: nisplus group: compat group_compat: nisplus |
上記の指定により、/etc ファイルと NIS+ テーブルから +/- エントリで指定されているとおりにネットワーク情報が入手されます。
「NIS」。Sun オペレーティング環境 4.x リリースの構文と同じ効果を得るには、passwd と groups の各ソースを compat に変更します。
passwd: compat group: compat |
この指定により、 /etc ファイルと NIS マップから+/- エントリで指定されているとおりにネットワーク情報が入手されます。
NIS+ サーバーが NIS 互換モードで動作している場合、クライアントマシンでは netgroup テーブルに対して ypcat を実行できません。 実行すると、エントリの有無に関わらず「テーブルが空である」という結果が返されます。
nsswitch.conf ファイルでは、passwd 情報のために files を 1 番目のソースにしてください。 files が 1 番目のソースでない場合は、ネットワークセキュリティが低くなるか、ログインが難しくなります。
たとえば、NIS+ の環境では、nsswitch.conf ファイルの passwd 行は次のようになります。
passwd: files nisplus |
NIS の環境では、nsswitch.conf ファイルの passwd 行は次のようになります。
passwd: files nis |