Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)

パート III NIS+ の管理

このパートでは、Solaris オペレーティング環境上での NIS+ ネームサービスの管理および問題解決について説明します。

第 10 章 NIS+ のテーブルと情報

この章では、これらのテーブルの構造と設定方法の概要について説明します。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ テーブル構造

NIS+ は、さまざまなネットワーク情報をテーブルに格納します。NIS+ テーブルには、単純なテキストファイルやマップには見られない機能がいくつかあります。これらのテーブルは列エントリ構造をもち、検索パスを使用することや、リンクすることができ、しかも複数の設定方法があります。NIS+ にはあらかじめ構成された 16 個のシステムテーブルがあり、独自のテーブルを作成することもできます。表 10–1 は、事前構成した NIS+ テーブルを示します。

表 10–1 NIS+ テーブル

テーブル 

テーブル内の情報 

hosts

ドメイン内にあるすべてのマシンのネットワークアドレスとホスト名 

bootparams

ドメイン内の全ディスクレスクライアントのルート、スワップ、およびダンプパーティションの位置  

passwd

ドメイン内の全ユーザーに関するパスワード情報 

cred

ドメインに属する主体の資格 

group

ドメイン内の全 UNIX グループのグループ名、グループパスワード、グループ ID、およびメンバー 

netgroup

ドメイン内のマシンやユーザーが所属できるネットグループ 

mail_aliases

ドメイン内のユーザーのメール別名に関する情報 

timezone

ドメイン内の全マシンの時間帯 

networks

ドメイン内のネットワークとこれらの標準の名前 

netmasks

ドメイン内のネットワークとこれらに関連付けられているネットマスク 

ethers

ドメイン内の全マシンの Ethernet アドレス 

services

ドメイン内で使用される IP サービス名とそれらのポート番号 

protocols

ドメイン内で使用される IP プロトコルのリスト 

RPC

ドメインで使用できる RPC サービスの RPC プログラム番号 

auto_home

ドメイン内の全ユーザーのホームディレクトリの位置 

auto_master

自動マウンタのマップ情報 

cred テーブルには NIS+ のセキュリティに関係する情報だけが入っています。これについては第 12 章「NIS+ 資格の管理」で説明します。

これらのテーブルには、ユーザー名からインターネットサービスまでの幅広い情報が格納されています。この情報の多くは、設定時または構成の手順の中で生成されます。たとえば、password テーブル内のエントリは、ユーザーアカウントが設定されたときに作成されます。hosts テーブル内のエントリは、マシンがネットワークに追加されたときに作成されます。また、networks テーブル内のエントリは、新しいネットワークが設定されたときに作成されます。

この情報はこのような広範囲にわたる操作によって生成されるため、このマニュアルでは詳細を説明していません。ただし、使いやすさを考慮して、テーブルの各列に含まれる情報は、第 23 章「NIS+ テーブルの情報」 に要約してあります。詳細な説明は、グループを NIS+ グループやネットグループと区別する場合など、理解しにくい内容についてのみ行います。テーブルの情報の詳細は、Solaris の「システム管理マニュアルセット」と「ネットワーク管理マニュアルセット」を参照してください。


注 –

ドメインにさらに多くのオートマウントマップを作成できますが、必ず NIS+ テーブルとして格納し、auto_master テーブルの中に入れてください。オートマウントマップを作成して、ユーザー用に作成された auto_master に追加するときは、列名にはキーが必要です。オートマウントの詳細は、オートマウントまたは NFS ファイルシステムの関連マニュアルを参照してください。



注 –

ネームサービスとして、NIS+ テーブルはオブジェクト自体ではなく、オブジェクトの参照情報を格納するように設計されています。そのため、NIS+ はエントリの大きなテーブルをサポートできません。テーブルに非常に大きなエントリがある場合、rpc.nisd は機能しません。


列とエントリ

NIS+ テーブルにはさまざまな種類の情報が格納されていますが、これらの基本構造はすべて同じで、行と列から構成されます。この列は、「エントリ」または「エントリオブジェクト」と呼ばれます。

この図は、ホスト名列のエントリを示しています。

クライアントは、キー、または検索可能な任意の列によりアクセスできます。たとえば、baseball という名前のマシンのネットワークアドレスを見つけるには、ホスト名の列を探して baseball を見つけます。

 この図は、クライアントがホスト名列の 'baseball' エントリにアクセスしていることを示しています。

次に、baseball のエントリ行を移動して、そのネットワークアドレスを見つけます。

この図は、アドレス列の 'baseball' エントリの IP アドレスを示しています。

クライアントは、任意のレベルでテーブル情報にアクセスできる (つまり、テーブルに全体としてアクセスできる) ため、NIS+ は 3 つのレベルすべてにセキュリティ機構を提供しています。たとえば、管理者は、オブジェクトレベルで全員にテーブルの読み取り権を割り当て、列レベルで所有者に変更権を割り当て、エントリレベルでグループに変更権を割り当てることができます。テーブルのセキュリティの詳細は、第 15 章「NIS+ のアクセス権の管理」で説明します。

検索パス

テーブルには、その「ローカル」ドメインについての情報だけが収められています。たとえば、doc.com. ドメイン内のテーブルには、doc.com. ドメインのユーザー、クライアント、およびサービスについての情報だけが収められています。 たとえば、sales.doc.com. ドメイン内のテーブルには、sales.doc.com. ドメインのユーザー、クライアント、およびサービスについての情報だけが収められています。

あるドメイン内のクライアントが、別のドメインに格納されている情報を見つけようとした場合、完全指定名を使用しなければなりません。環境変数 NIS_PATHに説明されているように、環境変数 NIS_PATH が正しく設定されていれば、NIS+ サービスによって自動的に処理されます。

情報を探すときにサーバーがたどる「検索パス」をどの NIS+ テーブルでも指定できます。この検索パスは、NIS+ テーブルをコロンで区切って順番に並べたものです。


table:table:table...

検索パス内のテーブル名は、完全指定する必要はありません。テーブル名は、コマンド行で入力された名前と同じように展開されます。サーバーが自分のローカルテーブル内に情報を検出できなかった場合、サーバーはクライアントにテーブルの検索パスを返します。クライアントはそのパスを使用して、その情報が見つかるかまたは最後まで、検索パスに名前があるすべてのテーブルを順番に探していきます。

検索パスのメリットを次に示します。次のようなドメイン階層があるとします。

この図は、manf.doc.com および sales.doc.com で構成される doc.com 階層を示しています。

下位にある 3 つのドメインの hosts テーブルの内容は次のようになります。

表 10–2 hosts テーブルの例

sales.doc.com. 

 

manf.doc.com. 

 

127.0.0.1

localhost

127.0.0.1

localhost

111.22.3.22

luna

123.45.6.1

sirius

111.22.3.24

phoebus

123.45.6.112

rigel

111.22.3.25

europa

123.45.6.90

antares

111.22.3.27

ganymede

123.45.6.101

polaris

111.22.3.28

mailhost

123.45.6.79

mailhost

ここで、sales.doc.com. ドメイン内の luna にログインしたユーザーが、別のクライアントにリモートログインする場合を考えてみます。このユーザーが完全指定名を指定しない場合、そのユーザーがリモートログインできるのは localhost phoebuseuropaganymede、および mailhost の 5 台のマシンだけです。

sales.doc.com. ドメインの hosts テーブルの検索パスに、manf.doc.com. ドメインの hosts テーブルが指定されていると仮定します。


hosts.org_dir.manf.doc.com.

これで sales.doc.com. ドメイン内のユーザーは、たとえば、rlogin sirius と入力することができ、NIS+ サーバーはこれを検出します。NIS+ サーバーはまずローカルドメインで sirius を探し、見つからなければ manf.doc.com. ドメイン内を探します。 クライアントは manf.doc.com. ドメインをどのように認識するのでしょうか。 第 2 章「NIS+ の紹介」で説明したように、この情報はディレクトリキャッシュに格納されています。これがディレクトリキャッシュにない場合、クライアントは、第 2 章「NIS+ の紹介」で説明したプロセスに従ってこの情報を入手します。

ただし、検索パスを指定する方法には、若干の欠点があります。ユーザーがたとえば、rlogin luba (luna でなく) などと間違った名前を入力した場合、サーバーは 1 つのテーブルではなく、3 つのテーブルを探さなければエラーメッセージを返せません。名前空間の全域に検索パスを設定した場合、1 つの操作は 2、3 のドメインではなく、10 個のドメイン内のテーブルを検索してから終了します。もう 1 つの欠点は、多数のクライアントが NIS+ テーブルにアクセスする必要があるとき、複数のサーバーのセットと通信するために、パフォーマンスの低下を招くという点です。

また、mailhost は別名として使用されることが多いため、特定のメールホストについての情報を探したいときは、その完全指定名 (mailhost.sales.doc.com. など ) を使用しなければなりません。そうしないと、NIS+ は検索したすべてのドメインで見つけたすべてのメールホストを返します。そうしないと、 NIS+ は、検索したすべてのドメインで見つかったメールホストをすべて返します。

テーブルの検索パスを指定するには、nistbladm コマンドで説明するように、nistbladm コマンドに -p オプションを付けて実行します。

テーブルの設定方法

NIS+ テーブルの設定には 3 つまたは 4 つの作業が伴います。

  1. org_dir ディレクトリの作成

  2. システムテーブルの作成

  3. システムテーブル以外のテーブルの作成 (必要に応じて)

  4. 情報を入力してテーブルを生成 (populate) する

NIS+ のファイルとディレクトリで説明したように、NIS+ のシステムテーブルは org_dir ディレクトリに格納されます。したがって、テーブルを作成するには、その前にテーブルを入れる org_dir ディレクトリを作成しなければなりません。これには 3 つの方法があります。

nisserver スクリプトと、nissetup および nismkdir ユーティリティについては、nismkdir コマンド を参照してください。また、nismkdir コマンドの詳細については、nismkdir コマンド を参照してください。

nissetup ユーティリティのメリットは、サーバーが NIS 互換モードで動作しているドメインのテーブルに対して、適切なアクセス権を割り当てる機能です。-Y フラグを付けて実行すると、このユーティリティは作成するオブジェクトの「未認証」カテゴリに読み取りアクセス権を割り当てます。その結果、未認証の NIS クライアントは、そのドメインの NIS+ テーブルから情報を得ることができます。

NIS+ の 16 個のシステムテーブルと、これらに格納される情報の種類については、第 10 章「NIS+ のテーブルと情報」で説明します。これらを作成するには、前述の 3 つの方法を使用できます。nistbladm コマンドは NIS+ テーブルの作成と変更を行います。nistbladm コマンドで名前空間内のすべてのテーブルを作成できますが、入力量が多くなり、列の正確な名前やアクセス権を知っている必要があります。nisserver スクリプトを使う方がはるかに簡単です。

システムテーブル以外のテーブル、つまり NIS+ によってまだ構成されていないテーブルを作成するには、nistbladm コマンドを使用します。オートマウントマップを追加する場合は、キーの列と値の列が必要です。

NIS+ テーブルを生成するには、NIS マップから行う方法、ASCII ファイル (/etc 内のファイルなど) から行う方法、および手作業の 3 つの方法があります。

NIS サービスからアップグレードしている場合、すでにネットワーク情報の大部分が NIS マップに格納されています。この情報を NIS+ テーブルに手作業で再入力する必要はありません。nispopulate スクリプトか nisaddent ユーティリティで自動的に転送できます。

他のネットワーク情報サービスを使用していない場合で、しかもネットワークデータを /etc 内のファイルで管理しているときも、この情報を再入力する必要はありません。nispopulate スクリプトか nisaddent ユーティリティを使用すれば自動的に転送できます。

初めてネットワークを設定する場合、十分なネットワーク情報がどこにも格納されていないことがあります。この場合、まず情報を入手して、次に NIS+ テーブルに手作業で入力する必要があります。これを行うには、nistbladm コマンドを使用できます。また、特定のテーブルの全情報を「入力ファイル」(これは本質的に /etc 内のファイルと同じです) に入力し、次に、nispopulate スクリプトか nisaddent ユーティリティを使用してファイルの内容を転送することによっても同じことが行えます。

テーブルの更新方法

ドメインが設定されると、サーバーはそのドメインの NIS+ テーブルの最初のバージョンを受け取ります。これらのバージョンはディスクに格納されますが、サーバーは起動されると、これらをメモリーにロードします。サーバーがテーブルに対する更新を受信すると、サーバーはそのメモリーにあるテーブルをすぐに更新します。サーバーが情報の要求を受信すると、その応答のためにメモリーにあるコピーを使用します。

もちろん、サーバーはその更新をディスクにも格納する必要があります。ディスクにあるテーブルを更新するには時間がかかるため、NIS+ の全サーバーはテーブル用の「ログ」ファイルを持っています。このログファイルは、テーブルに対して行われた変更内容を、ディスク上で更新できるまで、一時的に格納するように設計されています。ログファイルは、テーブル名を接頭辞として使用し、これに .log を追加します。たとえば :


hosts.org_dir.log
bootparams.org_dir.log
password.org_dir.log
ipnodes.org_dir.log

ログファイルが大きくなりすぎて大量のディスク領域を占有しないように、ディスクにあるテーブルのコピーは毎日更新しなければなりません。このプロセスは「チェックポイントを実行する」と呼ばれます。これには、nisping -C コマンドを使用します。

第 11 章 NIS+ のセキュリティの概要

この章では、NIS+ のセキュリティシステムと、システムが NIS+ 名前空間全体に与える影響について説明します。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


Solaris のセキュリティ - 概要

Solaris のセキュリティは、ユーザーが Solaris 環境に入るために通過しなければならないゲートと、内部でそのユーザーが何をできるのかを判定するアクセス権マトリックスの 2 つによって確保されています。このセキュリティシステムの概略については、図 11–1 を参照してください。

図 11–1 Solaris のセキュリティゲートとフィルタ

この図は、Solaris のセキュリティゲートとフィルタの間の関係を示しています。

上の図に示すように、Solaris システムは 4 つのゲートと 2 つのアクセス権マトリックスから構成されます。

NIS+ のセキュリティ - 概要

NIS+ のセキュリティは NIS+ の名前空間全体にかかわっています。セキュリティと名前空間を別に設定することはできません。このため、セキュリティの設定方法は名前空間の各構成要素を設定する手順と密接に関係することになります。一度 NIS+ のセキュリティ環境を設定すると、その後はユーザーの追加および削除、アクセス権の変更、グループメンバーの再割当やネットワーク展開を管理するために必要なその他すべての管理ルーチンタスクを実行できます。

NIS+ のセキュリティ機能は名前空間内の情報と、名前空間そのものの構造を不正アクセスから保護するものです。このセキュリティ機能がなければ、どんな NIS+ クライアントであっても名前空間に保存された情報を獲得することも変更することもできないだけでなく、ダメージを与える可能性があります。

NIS+ セキュリティには次の 2 つの機能があります。

NIS+ のセキュリティ機能は 2 段階のプロセスを用意しています。

  1. 「認証 (authentication)」。NIS+ は資格 (credential) を使ってユーザーを確認します。

  2. 「承認 (authorization)」。承認プロセスがユーザー ID を確認すると、NIS+ はクラスを判定します。NIS+ オブジェクトまたはサービスに対して何が行えるのかは、ユーザーがどのクラスに属しているかに依存します。これは UNIX の標準的なファイルおよびディレクトリのアクセス権システムと同様の考え方に基づいています (クラスの詳細は、承認クラス を参照)。

このプロセスは、マシン A の root 権限を持つユーザーが su コマンドを使って、第 2 の NIS+ アクセス権で NIS+ オブジェクトにアクセスすることを防ぐものです。

ただし、NIS+ は、他人のユーザーログインパスワードを知っている者が、そのユーザーになりすましてユーザー ID と NIS+ アクセス権を使用することを妨ぐことはできません。また root 権限を持つユーザーが「同一」マシンからログインしている別のユーザーになりすますのを防ぐこともできません。

図 11–2 に、このプロセスの詳細を示します。

図 11–2 NIS+ セキュリティプロセスの概要

この図は、ディレクトリオブジェクトの要求および資格をクライアントからサーバーに送信するプロセスを示しています。

NIS+ の主体について

NIS+ の主体とは、NIS+ サービス要求を依頼するエンティティ (クライアント) です。NIS 主体には、クライアントマシンに一般ユーザーとしてログインしたユーザー、スーパーユーザーとしてログインしたユーザー、NIS+ クライアントマシンにおいてスーパーユーザー特権で動作しているプロセスを含みます。つまり NIS+ の主体はクライアントユーザーの場合もクライアントマシンの場合もあります。

NIS+ の主体は、NIS+ サーバーから NIS+ サービスを提供する主体を指すこともあります。すべての NIS+ サーバーは NIS+ クライアントにもなるので、サーバーが NIS+ の主体となる場合もあります。

NIS+ セキュリティレベル

NIS+ サーバーは、2 つのセキュリティレベルのどちらかで動作します。セキュリティレベルにより、要求を送信して認証を取得しなければならない資格主体の種類が決まります。NIS+ は、最高セキュリティレベル (セキュリティレベル 2) で動作するように設計されています。レベル 0 は、テスト、設定、およびデバッグのときにだけ使用します。セキュリティレベルについては、表 11–1 を参照してください。

表 11–1 NIS+ セキュリティレベル

セキュリティレベル 

説明 

セキュリティレベル 0 は、NIS+ 名前空間の初期テストと初期設定を行うレベル。セキュリティレベル 0 で動作している NIS+ サーバーは、ドメイン内の全 NIS+ オブジェクトに対する完全なアクセス権をどの NIS+ 主体にも与える。レベル 0 はシステム管理者だけが設定管理のためにだけ使用する。レギュラーユーザーはネットワークにおける通常のオペレーションに使用できない 

セキュリティレベル 1 は AUTH_SYS セキュリティを利用する。このレベルは NIS+ のサポートを受けられないため、利用すべきではない 

セキュリティレベル 2 はデフォルトで、NIS+ が現在提供している最高レベルのセキュリティ。これは DES 資格を持たない要求には未認証クラスが与えられ、未認証クラスに割り当てられたアクセス権が与えられる。無効な DES 資格を使用する要求だけを認証する。資格を使用する要求は再試行される。有効な DES 資格獲得に繰り返し失敗すると、無効資格を持った要求として承認エラーになる (主体が原因となって資格が無効になる場合、その原因として要求をした主体に対してそのマシンで keylogin が実行されていなかったり、クロックの同期がとれていなかったり、鍵が不一致であるなどの原因が考えられる)。

セキュリティレベルとパスワードコマンド

Solaris リリース 2.0 から 2.4 の環境では、nispasswd を使用してパスワードを変更します。ただし、資格がなければ、nispasswd は機能しません (より上位のレベルでの資格があった場合を除き、セキュリティレベル 0 以下では機能しない)。Solaris リリース 2.5 以降の場合は、セキュリティレベルや資格ステータスにかかわらず、passwd コマンドを使ってパスワードを変更できます。

NIS+ の認証と資格 - 紹介

NIS+ 資格の目的は、NIS+ サービスや NIS+ オブジェクトへのアクセスを要求する各主体の ID を「認証」(確認) することにあります。つまり、NIS+ 資格および承認プロセスは Secure RPC システムを実装することです。

資格および認証システムは他人になりすますのを防ぐシステムです。あるマシンの root 権限を持つユーザーが su コマンドを使って、ログインしていないもしくは別のマシンにログインしている第 2 のユーザーになりすまし、NIS+ アクセス権を使用して NIS+ オブジェクトにアクセスすることを妨げます。

サーバーが主体を認証すると、主体は 4 つの認証クラスのどれかに置かれ、次にサーバーは承認されている動作を知るためにアクセスしようとする NIS+ オブジェクトをチェックします。承認の詳細は、NIS+ の承認とアクセス - 紹介を参照してください。

ユーザーおよびマシンの資格

主体には、「ユーザー」と「マシン」の 2 つの基本的な種類があります。

DES と LOCAL 資格

NIS+ 主体には DES と LOCAL の 2 つの資格が用意されています。

DES 資格 (credential)


注 –

認証を行う仕組みとしては DES 資格が唯一のものです。将来は他の仕組みも利用できるようになるかもしれません。DES 資格と NIS+ 資格は同等のものではありません。

このマニュアルでは、DES 資格という用語は、鍵の長さにかかわりなく Diffie - Hellman 鍵をベースにした認証を表すものとして一般的に使われています。鍵の長さはあらかじめ決められたセットから指定することができます。Diffie - Hellman 鍵の長さの設定や表示を行うには nisauthconf(1M) を使用します。


DES (データ暗号化規格) 資格は資格の 1 種であり、保護認証を提供するものです。このマニュアルで NIS+ 主体を認証するために資格をチェックすると記述している場合は、NIS+ がチェックしている DES 資格のことを意味します。

主体が NIS+ サービスを要求したり、NIS+ オブジェクトにアクセスするごとに、ソフトウェアは格納してある資格情報を使って主体の資格を作成します。DES 資格は NIS+ 管理機能によって各主体に作られた情報から作成されます。第 12 章「NIS+ 資格の管理」を参照してください。

LOCAL 資格

LOCAL 資格は、ユーザー ID 番号とホームドメイン名を含む NIS+ 主体名とのマップです。ユーザーがログインすると、システムは DES 資格が格納されているホームドメインを特定する LOCAL 資格をチェックします。システムはその情報を使ってユーザーの DES 資格情報を獲得します。

ユーザーがリモートドメインにログインした場合、その要求はユーザーのホームドメインを示す LOCAL 資格を使います。NIS+ は次にユーザーの DES 資格情報を知るためにユーザーのホームドメインを問い合わせます。こうして、たとえユーザーの DES 資格情報がリモートドメインに格納されていなくても、リモートドメインで認証されます。

図 11–3 資格とドメイン

この図は、クライアントユーザーの資格、LOCAL ドメインおよび LOCAL DES ドメインを示しています。

LOCAL 資格情報はどのドメインにも格納できます。実際、リモートドメインにログインし認証されるためには、クライアントユーザーはリモートドメインの cred テーブルに LOCAL 資格を持っている必要があります。ユーザーが、アクセスしようとするリモートドメインに LOCAL 資格を持っていなかった場合、NIS+ はユーザーの DES 資格を獲得するためにユーザーのホームドメインに入ることができなくなります。そのような場合、ユーザーは認証されず未認証クラスを与えられることになります。

ユーザータイプと資格種類

ユーザーは両方の資格を持つことができますが、マシンは DES 資格しか持てません。

すべてのマシンの root UID は常に 0 であるため、root は他のマシンに対して NIS+ アクセスできません。もしマシン A の root (UID=0) がマシン B にアクセスしようとすると、すでに存在しているマシン B の root (UID=0) と衝突します。このため、LOCAL 資格は、クライアント「マシン」については意味を持たないため、クライアント「ユーザー」にだけ認められています。

表 11–2 資格のタイプ

資格のタイプ 

クライアントユーザー 

クライアントマシン 

DES 

有効 

有効 

LOCAL 

有効 

無効 

NIS+ の承認とアクセス - 紹介

NIS+ の承認の基本的目的は、各 NIS+ 主体が各 NIS+ オブジェクトとサービスに対して持っているアクセス権を特定することにあります。

一度主体の NIS+ 要求が認証されると、NIS+ は承認クラスを与えます。NIS+ オブジェクトに対して行うことのできる動作を指定するアクセス権は各クラスに与えられます。クラスごとに別のアクセス権が与えられる場合、各承認クラスはそれぞれアクセス権を持つということです。

承認クラス

NIS+ オブジェクトは NIS+ 主体に直接アクセス権を与えずに、主体の 4 つの「クラス」にアクセス権を与えます。

図 11–4 承認クラス

この図は、所有者から未認証までの承認クラスを示しています。

システムは、NIS+ 要求を受信すると、要求を出している主体が属しているクラスを判定します。主体は、判定されたクラスに属しているすべてのアクセス権を使用できます。

オブジェクトに対するアクセス権は、各クラスで任意の組み合わせが可能です。ただし、通常は上位クラスが下位クラスのすべての権限に追加権限を持つように割り当てられます。

たとえば、未認証およびその他クラスには読み取りアクセスを許可し、グループクラスには読み取りおよび変更アクセスを許可し、所有者クラスには読み取り、変更、作成、および削除アクセスを許可することができます。

4 つのクラスについては、以下に詳しく説明します。

所有者クラス

所有者は「単一」の NIS+ 主体です。

NIS+ オブジェクトへのアクセスを要求する主体は、所有者アクセス権を得る前に認証され (有効な DES 資格を提示し) なければなりません。

デフォルトではオブジェクトの所有者は、オブジェクトを作成した主体になります。ただし、オブジェクト所有者は 2 つの方法で別の主体に所有権を譲ることができます。

一度主体が所有権を放棄すると、その主体はオブジェクトに対する所有者のアクセス権すべてを放棄することになり、グループ、その他、未認証のいずれかの所有権を持つことになります。

グループクラス

オブジェクトグループは 1 つの NIS+ グループです。この場合の「グループ」とは、UNIX のグループやネットグループのことではありません。

NIS+ オブジェクトにアクセスを要求する主体は、認証され (有効な DES 資格を提示し) かつグループアクセス権を与えられる前にそのグループに属していなければなりません。

1 つの NIS+ グループは NIS+ 主体の集合であり、名前空間へのアクセス権を与えるのに都合の良いようにまとめられたものです。NIS+ グループに与えられるアクセス権はそのグループのメンバーである主体すべてに適用されます。オブジェクトの所有者が、そのオブジェクトのグループに属している必要はありません。

オブジェクトが作成された時、そのオブジェクトはデフォルトグループに割り当てられます。オブジェクトが作成された時でもその後でも、そのオブジェクトをデフォルト以外のグループに割り当てることができます。オブジェクトグループはいつでも変更できます。


注 –

NIS+ グループに関する情報は NIS+ group テーブルに格納されないことに注意してください。NIS+ group テーブルには UNIX グループに関する情報が格納されます。NIS+ グループに関する情報は、適切な groups_dir ディレクトリのオブジェクトに格納されます。


NIS+ グループの情報は、各 NIS+ ドメインの groups_dir サブディレクトリにある、NIS+ グループ「オブジェクト」に格納されます。

図 11–5 NIS+のディレクトリ構造

この図は、一般的な NIS+ ディレクトリ構造を示しています。

NIS+ グループの管理については、第 17 章「NIS+ グループの管理」を参照してください。

その他クラス

その他クラスは、NIS+ によって認証されたすべての NIS+ 主体のクラスです。すなわち、所有者およびグループクラスのすべてと有効な DES 資格を提示したものを加えたものです。

その他に与えられたアクセス権は、認証されたすべての主体に適用されます。

未認証クラス

未認証クラスは、正しく認証されなかったものすべてで構成されます。すなわち、有効な DES 資格を提示しなかったものです。

承認クラスと NIS+ オブジェクトの階層

NIS+ オブジェクトと承認クラスには各レベルに適用される階層があります。標準的な NIS+ ディレクトリ階層のデフォルトは次のようになります。

各レベルには 4 つの承認クラスが適用されます。ディレクトリオブジェクトはそれ自身の所有者とグループを持ちます。ディレクトリ内の個々のテーブルは、ディレクトリの所有者およびグループと異なる所有者およびグループを持ちます。テーブル内では、1 エントリ (行) が個々の所有者もしくはグループを持ちます。この所有者もしくはグループは、テーブル全体の所有者やグループとは異なり、またオブジェクト全体の所有者やグループとも異なります。テーブル内の個々の列は、テーブル全体と同じ所有者やグループを持ちます。

NIS+ アクセス権

NIS+ オブジェクトのオブジェクト定義には、オブジェクトのアクセス権を指定します (オブジェクト定義は、niscat -o コマンドで確認できます)。

NIS+ オブジェクトは、UNIX ファイルが UNIX ユーザーに対するアクセス権を指定するのと同じ方法で、NIS+ 主体に対するアクセス権を指定します。アクセス権は、NIS+ 主体が NIS+ オブジェクトについて実行することが許されている動作の種類を表します。

NIS+ の動作はオブジェクトの種類によって異なりますが、読み取り、変更、作成、および削除の 4 つのクラスに分類されます。

NIS+ クライアントから NIS+ サーバーへのすべての通信は、実際には特定の NIS+ オブジェクトに対してこれらの動作のうちの 1 つを実行してほしいという要求です。たとえば、NIS+ 主体が他のマシンの IP アドレスを要求した場合、実際には、この種の情報を格納している hosts テーブルオブジェクトへの読み取り権を要求しています。主体が NIS+ 名前空間にディレクトリを追加するようサーバーに要求した場合、実際には、そのディレクトリの親オブジェクトに対して「変更」権を要求しています。

これらの権限は論理的には、ディレクトリ、テーブル、列とエントリのように下位に展開するものであることに注意してください。たとえば、新規にテーブルを作成するには、そのテーブルを格納する NIS+ ディレクトリオブジェクトに対する作成権が必要です。そのテーブルを作成した場合、そのデフォルト所有者になります。所有者として、自分自身にそのテーブルに対する作成権を与え、テーブルに新規のエントリを作成できます。テーブル内に新規のエントリを作成した場合、それらのエントリの所有者になります。所有者として、他のユーザーにテーブルレベルの作成権を与えることもできます。たとえば、テーブルのグループクラスにテーブルレベルの作成権を与えることができます。その場合、テーブルのグループのすべてのメンバーがテーブル内に新規のエントリを作成できます。新規のテーブルエントリを作成したグループの個々のメンバーは、そのエントリのデフォルト所有者になります。

NIS+ 管理者

NIS+管理者は、NIS+オブジェクトに対して「管理者権限」を持つユーザです。管理者権限は、オブジェクトに対する作成および削除権限で構成されます。また、オブジェクトによっては変更権限が含まれる場合もあります (NIS+ アクセス権については、NIS+ アクセス権 を参照してください)。

NIS+ オブジェクトを作成するものは誰でもそのオブジェクトに対する初期アクセス権を持つと設定します。もし作成者が管理権限をオブジェクトの所有者に限った場合 (初期状態では作成者) は、所有者だけがそのオブジェクトに対する管理権限を持ちます。一方、作成者が管理権限をオブジェクトのグループに与えた場合は、グループの全員がそのオブジェクトに対して管理権限を持つことになります。

あるオブジェクトに対して管理権限を持つものは誰でもそのオブジェクトの NIS+ 管理者とみなされます。

すなわち、NIS+ ソフトウェアは NIS+ 管理者を 1 人にしようとするものではないということです。

理論的には、管理権限をその他クラスに与えることも、未認証クラスに与えることもでき、ソフトウェア上では可能です。しかし、管理権限をグループクラス以上に広げて与えてしまうと、NIS+ のセキュリティを実質的に無効にしてしまいます。もし管理権限をその他クラスや未認証クラスに与えた場合、NIS+ のセキュリティは保証されません。

NIS+ のパスワード、資格、およびコマンド

管理者のパスワード、資格、および鍵には次のコマンドを使用します。各コマンドの説明についてはマニュアルを参照してください。

第 12 章 NIS+ 資格の管理

この章では、NIS+ 資格とその管理方法について説明します。


注 –

NIS+ セキュリティタスクには、Solstice AdminSuite ツールがあればより簡単に実行できるものがあります。



注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ 資格について

NIS+ 資格は、NIS+ のユーザーを識別するために使用します。この章では、NIS+ セキュリティシステム全体と、特にシステムで資格が果たす役割について、十分理解しているユーザーを想定しています。

これらのタスクを実行するのに使われるコマンドの構文、オプションなどの詳細については、NIS+ のマニュアルを参照してください。


注 –

この章の DES 資格の説明は、192 ビット Diffie - Hellmaun DES 資格に適用することができます。これらは似てはいますが、その他の鍵の長さを使用した認証は細部では異なっています。コマンド行インタフェースを使用して鍵を操作するときは、その違いはユーザーにもシステム管理者にも意識されることはありません。指定した鍵の長さの表示や設定は nisauthconf(1M) を使って行います。


資格の機能


注 –

この章では、NIS+ のコマンド一式を使用してクライアント情報を作成する方法について説明します。


資格および認証システムは他人になりすますのを防ぐシステムです。あるマシンの root 権限で su コマンドを使って、ログインしていないもしくは別のマシンにログインしている第 2 のユーザーになりすまし、第 2 のユーザーの NIS+ アクセス権を使用して NIS+ オブジェクトにアクセスすることを防ぎます。


注意 – 注意 –

NIS+ には、他人のユーザーログインパスワードを知っている者が、そのユーザーになりすましてユーザー ID と NIS+ アクセス権を使用することを妨ぐことはできません。また root 権限を持つユーザーが「同一」マシンにログインしている別のユーザーになりすますのを防ぐこともできません。


資格と資格情報

DES 資格をどのように作成しそれがどのように機能するのかを理解するには、実際の資格と、資格を作成しチェックするのに使われる情報とを区別する必要があります。

認証コンポーネント

資格および認証プロセスを機能させるには、次の要素が必要です。

主体の認証方法

承認プロセスには 3 つのフェーズがあります。

これら 3 つのフェーズの詳細については、次の項目を参照してください。

資格準備フェーズ

ユーザーの資格情報は、nisclient スクリプトを使用すれば最も簡単に作成できます。この節では、NIS+ のコマンド一式を使用してクライアント情報を作成する方法について説明します。

NIS+ 主体がログインする前に、NIS+ 管理者は当該主体 (ユーザーまたはマシン) のための資格情報を作成する必要があります。管理者は次のようにする必要があります。

ログインフェーズ - 詳細

主体がシステムにログインする時、次のステップが自動的に実行されます。

  1. 主体のために keylogin プログラムが起動します。keylogin プログラムは cred テーブルから主体の非公開暗号鍵を取得し、主体のログインパスワードを使って復号化します。


    注 –

    主体のログインパスワードが Secure RPC パスワードと異なる場合、keylogin コマンドはパスワードを復号化できず、「cannot decrypt」などのエラーとなるか、メッセージなしでコマンドが失敗します。この問題については、Secure RPC パスワードとログインパスワードの問題を参照してください。


  2. 復号化された主体の非公開暗号鍵は、要求フェーズでの利用に備えてキーサーバーに渡され格納されます。


    注 –

    復号化された非公開暗号鍵はユーザーが keylogout コマンドを実行するまでキーサーバーに格納されます。ユーザーが keylogout を実行せずにログアウトした (またはログアウトせずに帰宅してしまった) 場合には、復号化された非公開鍵がサーバーに格納されたままになっています。もしユーザーマシンの root 権限を持った誰かがユーザーログイン ID に su コマンドを使った場合、その人間はユーザーの復号化された非公開鍵を使用でき、ユーザーのアクセス承認を使って NIS+ オブジェクトにアクセスできることになります。このような事態を避けるため、ユーザーが業務を終了する時は確実に keylogout コマンドを使ってログアウトするように注意する必要があります。同様にもしユーザーがログオフする場合は、業務に戻る時はログバックするだけで良いのです。もしユーザーが確実にログオフしなかった場合、業務に戻る時に確実に keylogin を実行する必要があります。


要求フェーズ - 詳細説明

NIS+ 主体の要求が NIS+ オブジェクトにアクセスするつど、その主体を認証するために NIS+ ソフトウェアは複数段階のプロセスを実行します。

  1. NIS+ はオブジェクトドメインの cred テーブルをチェックします。

    • 主体が LOCAL 資格情報を持っている場合、NIS+ では LOCAL 資格に含まれるドメイン情報を使用して主体のホームドメイン の cred 資格を検索し、必要な情報を取得します。

    • もし主体が資格情報を持っていなかった場合、残りのプロセスは実行されず、主体の承認アクセスクラスには未認証クラスが与えられます。

  2. ユーザーのホームドメインの cred テーブルから、NIS+ がユーザーの DES 資格を取得します。ユーザーパスワードを使って非公開暗号鍵が復号化され、キーサーバーに格納されます。

  3. NIS+ が NIS+ ディレクトリオブジェクトからサーバーの公開鍵を獲得します。

  4. キーサーバーが、主体の復号化された非公開鍵とオブジェクトのサーバー (オブジェクトが格納されているサーバー) の公開鍵を使って、「共通鍵」を作成します。

  5. 共通鍵を使用して、暗号化された「DES 鍵」が作成されます。これは、Secure RPC が乱数を発生させ、これを共通鍵を使って暗号化することで行われます。このため、DES 鍵は「乱数鍵」もしくは「乱数 DES 鍵」として参照される場合があります。

  6. NIS+ が主体のサーバーの時刻情報に基づいてタイムスタンプ (DES 鍵を使って暗号化される) を作成します。

  7. NIS+ が 15 秒のタイムウィンドウ (DES 鍵を使って暗号化される) を作成します。この「ウィンドウ」はタイムスタンプとサーバーの内部クロックとの間で許容される最長時間になります。

  8. NIS+ が主体の DES 資格を作成します。これは次のもので構成されます。

    • 主体の cred テーブルに基づく Secure RPC ネット名 (unix.identifier@domain)

    • キーサーバーから得た暗号化された主体の DES 鍵

    • 暗号化されたタイムスタンプ

    • 暗号化されたタイムウィンドウ

  9. NIS+ が NIS+ オブジェクトの格納されているサーバーに次の情報を渡します。

    • アクセス要求

    • 主体の DES 資格

    • ウィンドウ判定子 (暗号化済)。ウィンドウ判定子は暗号化されたウィンドウに 1 を加えたもの

  10. オブジェクトのサーバーがこの情報を受信します。

  11. オブジェクトのサーバーが、資格の中の Secure RPC ネット名の一部を使って、主体のホームドメインにある cred テーブル内にある主体の公開鍵をチェックします。

  12. サーバーが主体の公開鍵とサーバーの非公開鍵を使ってもう一度共通鍵を作成します。この共通鍵は主体の非公開鍵とサーバーの公開鍵を使って作成されている共通鍵と一致する必要があります。

  13. 共通鍵を使って、主体の資格の一部として受信している DES 鍵を暗号化します。

  14. サーバーが、新しく復号化した DES 鍵を使って主体のタイムスタンプを復号化し、ウィンドウ判定子を使ってそれをチェックします。

  15. サーバーが、復号化しチェックしたタイムスタンプと自分の内部時計とを比較し、次のプロセスを実行します。

    1. サーバーとの時間差がウィンドウ許容値を越えていた場合、要求は拒否され、プロセスが中止されて、エラーメッセージが表示されます。たとえば、タイムスタンプが 9:00 am であり、ウィンドウが 1 分であったとします。もしその要求をサーバーが受信して復号化したのが 9:01 am であれば、その要求は拒否されます。

    2. タイムスタンプがウィンドウ許容値内である場合、サーバーは主体から前に受信した要求のタイムスタンプよりも大きいかチェックします。これによって、NIS+ 要求を正しい順序で処理しているか確認できます。

      • 順序誤りの要求はエラーメッセージとともに拒否されます。たとえば、タイムスタンプが 9:00 am でありその主体から最後に受信した要求のタイムスタンプが 9:02 am だった場合、その要求は拒否されます。

      • 最後に受信した要求と同じタイムスタンプであった場合もエラーメッセージが表示されて拒否されます。これによって、要求を 2 度処理することはなくなります。たとえば、タイムスタンプが 9:00 am であり最後にその主体から受信した要求のタイムスタンプも 9:00 am だった場合、この要求は拒否されます。

  16. タイムスタンプがウィンドウ許容値内であり、その主体からの最後の要求よりも大きかった場合に、サーバーはその要求を受け入れます。

  17. サーバーは次に、要求をコンパイルし、タイムスタンプをその主体から受信した最後のものとして格納し、要求に基づいて動作します。

  18. 要求に対する応答としてサーバーから受信した情報が信頼できるサーバーからのものであるかを主体が確認できるようにするため、サーバーは主体の DES 鍵を使ってタイムスタンプを暗号化し、データとともに主体に送り返します。

  19. 主体側では、主体の DES 鍵を使って送り返されたタイムスタンプを復号化します。

    • 復号化が成功した場合は、サーバーからの情報を要求者へ戻します。

    • 何らかの理由で復号化に失敗した場合は、エラーメッセージが表示されます。

DES 資格の詳細

DES 資格は次の内容で構成されます。

DES 資格の Secure RPC ネット名


注 –

NIS+ 主体名は常にドット (.) で終わりますが、Secure RPC ネット名はドット (.) で終わらないことに注意してください。


表 12–1 Secure RPC ネット名のフォーマット

主体 

接頭辞 

識別子 

ドメイン 

例 

ユーザー 

unix

UID 

ユーザーのパスワードエントリと DES 資格そのもののあるドメイン 

unix.24601@sales.doc.com

マシン 

unix

ホスト名 

ドメイン名は、マシンで domainname コマンドを実行すると返される

unix.machine7@sales.doc.com

DES 資格確認フィールド

確認フィールドは資格を確かめるために使用するフィールドです。cred テーブルに格納された資格情報に基づいて作成されます。

確認フィールドの構成は次のとおりです。

DES 資格の作成方法

DES 資格を作成するには、keylogin コマンドを実行する必要がありますが、これは主体が資格を作成する「前」に実行します。keylogin コマンド (単に「keylogin」とする場合が多い) は、NIS+ 主体がログインする時に自動的に実行されます。図 12–2 を参照してください。


注 –

主体のログインパスワードが Secure RPC パスワードと異なる場合は、keylogin コマンドは成功しないことに注意してください。詳しくは、Secure RPC パスワードとログインパスワードの問題を参照してください。


keylogin コマンドの目的は、主体が自身の非公開鍵にアクセスできるようにすることにあります。keylogin コマンドを実行すると、cred テーブルから主体の非公開鍵を取り込み (fetch)、主体の Secure RPC パスワード (非公開鍵は主体の「Secure RPC パスワード」を使って最初に暗号化される) を使ってそれを復号化し、将来の NIS+ 要求に備えてキーサーバーに格納します。

図 12–1 keylogin コマンドで主体の非公開鍵を作成

この図は、keylogin コマンドによる、キーサーバーに格納される非公開鍵の作成方法を示しています。

主体が DES 資格を作成するには、主体が要求を送る相手サーバーの公開鍵が必要です。この情報は主体のディレクトリオブジェクトに格納されています。主体がこの情報を獲得すれば資格の確認フィールドを作成できます。

まず、主体が種々の資格情報を暗号化するためにランダム DES 鍵を作成します。主体は自分の非公開鍵 (キーサーバーに格納されている) とサーバーの公開鍵を使って、ランダム DES 鍵を作成し暗号化するための共通鍵を作成します。次に DES 鍵で暗号化したタイムスタンプを作成し、それを確認フィールドで他の資格関連情報の中に入れます。

図 12–2 DES 資格の作成

この図は、DES 資格の作成方法を示しています。

Secure RPC パスワードとログインパスワードの問題

主体のログインパスワードと Secure RPC パスワードが一致しないと、ログイン時に keylogin はパスワードを復号化できません。keylogin はデフォルトで主体のログインパスワードを使用することになっていて、また非公開鍵は主体の Secure RPC パスワードを使用して暗号化されているからです。

この場合でも主体がシステムにログインすることは可能ですが、キーサーバーがそのユーザーのための復号化された非公開鍵を持っていませんから、未認証クラスが与えられることになります。ほとんどの NIS+ 環境において、未認証クラスにはほとんどの NIS+ オブジェクトに対する作成権、削除権、変更権を与えないように設定されますから、結果としてユーザーが NIS+ オブジェクトにアクセスしても「アクセス権拒否」などのエラーになります。


注 –

「ネットワークパスワード」を「Secure RPC パスワード」の同意語として使用する場合があります。ネットワークパスワードの入力を求められたら Secure RPC パスワードを入力します。


別の承認クラスを得るには、この場合 keylogin プログラムを実行し、パスワード入力のプロンプトに主体の Secure RPC パスワードを入力する必要があります (キーログインの項を参照)。

しかし keylogin を実行しても、現在のログインセッション以外には無効で、一時的な解決にしかなりません。キーサーバーはこの方法によって、復号化された形でユーザーの非公開鍵を持つようになるのですが、ユーザーの cred テーブル中の非公開鍵が Secure RPC パスワード (ユーザーのログインパスワードとは異なっている) を使用して暗号化されているという点に変わりはないからです。次にログインした時には同じ問題が発生します。この問題を永久的に解決するには、ユーザーの Secure RPC パスワードではなくユーザーログイン ID を使って、cred テーブルにある非公開鍵を再度暗号化する必要があります。このためにはユーザーが chkey -p コマンドを実行します (NIS+ 主体の鍵の変更の項を参照)。

Secure RPC パスワードがログインパスワードと異なる問題を永久的に解決するには、ユーザー (またはユーザーに対応している管理者) が次の手順を実行してください。

  1. ログインパスワードを使用してログインします。

  2. keylogin プログラムを実行して、キーサーバーに保存される非公開鍵を一時的に復号し、一時的な NIS+ アクセス権を得ます。

  3. chkey -p を実行し、cred テーブル内の暗号化された非公開鍵を、ユーザーログインパスワードに基づいたものに永久的に変更します。

  4. ログインセッションの終了の準備ができたら、システムをログオフする前に keylogout を実行します。

  5. logout コマンドを使って、システムからログオフします。

キャッシュに保存された公開鍵の問題

正しい資格を作成し、正しいアクセス権を与えられたのに、主体の要求が拒否される場合があります。この原因のほとんどは、サーバーの公開鍵が古いバージョンだった時に作られた、古いオブジェクトが残っていることにあります。この問題は通常次の方法で解決します。

資格に関連する情報が格納されている場所

この節では、NIS+ 名前空間のどこに資格関連情報が格納されるのかを説明します。

公開鍵など、資格に関する情報は、名前空間内の様々な場所に保存されています。NIS+ は、情報を格納しているオブジェクトの生存期間に応じてこの情報を定期的に更新しますが、場合によっては、更新の間に同期が失われ、システムが正常に動作しなくなることがあります。その結果、システムが正常に動作しなくなることがあります。資格関連の情報を格納するすべてのオブジェクト、テーブル、ファイル、および再設定方法を、表 12–2 に示します。

表 12–2 資格に関連する情報が格納されている場所

項目 

保存対象 

リセットおよび更新の方法 

cred テーブル

NIS+ 主体の秘密非公開鍵と公開鍵。これらの鍵のマスターコピーとなる 

nisaddcred を使用して新しい資格を作成する。これによって既存の資格が更新される。chkey を使用しても同様のことが行える

ディレクトリオブジェクト 

個々のサーバーの公開鍵のコピー 

ディレクトリオブジェクトに対して /usr/lib/nis/nisupdkeys コマンドを実行する

キーサーバー 

その時点でログインされている NIS+ 主体の非公開鍵 

主体ユーザーに対して keylogin を実行する。あるいは、主体マシンに対して keylogin -r を実行する

NIS+ デーモン 

ディレクトリオブジェクトのコピー (そのサーバーの公開鍵のコピーが含まれる) 

rpc.nisd デーモンとキャッシュマネージャを終了し、 /var/nis から NIS_SHARED_DIRCACHE を削除する。その後両方を再起動する

ディレクトリキャッシュ 

ディレクトリオブジェクトのコピー (そのサーバーの公開鍵のコピーが含まれる) 

NIS+ キャッシュマネージャを終了した後、nis_cachemgr -i コマンドを使用して再起動する。-i オプションを指定すると、コールドスタートファイルからディレクトリキャッシュがリセットされた後、キャッシュマネージャが再起動される

コールドスタートファイル 

ディレクトリオブジェクトのコピー (そのサーバーの公開鍵のコピーが含まれる) 

ルートマスターで NIS+ デーモンを終了した後、再起動する。デーモンは、既存の NIS_COLD_START ファイルに新しい情報を再ロードする。クライアントでは、まず /var/nis から NIS_COLD_STARTNIS_SHARED_DIRCACHE ファイル削除し、次にキャッシュマネージャのプロセスを終了する。その後、nisinit -c でクライアントを再び初期設定する。クライアントの信頼できるサーバーは、クライアントマシンの NIS_COLD_START ファイルに新しい情報を再ロードする

passwd テーブル

ユーザーのパスワード 

passwd -r nisplus コマンドを使用する。これによって、NIS+ passwd テーブル、cred テーブルの中でパスワードが更新される

passwd ファイル

ユーザーのパスワードまたはマシンのスーパーユーザーのパスワード 

passwd -r nisplus コマンドを使用する。スーパーユーザーとしてログインしていても、自分のユーザー名でログインしていてもよい

passwd マップ (NIS)

 

ユーザーのパスワード 

passwd -r nisplus コマンドを使用する

cred テーブルの詳細

主体の資格情報は「cred テーブル」に格納されています。cred テーブルは NIS+ が標準で持つ 16 のテーブルの 1 つです。cred テーブルはドメインにつき1つ存在し、ドメインに属するクライアントマシンおよびマシンにログインできるユーザー (つまり、ドメイン中の主体) の資格に関する情報を持っています。cred テーブルはドメイン中の org_dir サブディレクトリにあります。


注意 – 注意 –

cred テーブルをリンクしないでください。各 org_dir ディレクトリはそれ自身の cred テーブルを持つ必要があります。他の org_dircred テーブルとのリンクも使用しません。


ドメイン内のすべてのマシンにログインできるユーザーすべての LOCAL 資格情報が cred テーブルに格納されています。cred テーブルにはまた、ホームドメインとしてとしてドメインを持っているユーザーの DES 資格情報も格納されています。

cred テーブルの内容は niscat コマンドを使って見ることができます。方法については、第 19 章「NIS+ テーブルの管理」を参照してください。

表 12–3 に示すように、cred テーブルには 5 つの列があります。

表 12–3 cred テーブルの資格情報
 

NIS+ 主体名 

認証タイプ 

認証名 

公開データ 

非公開データ 

列名 

cname

auth_type

auth_name

public_data

private_data

ユーザー 

完全主体名 

LOCAL 

UID 

グループ ID リスト 

 

対象マシン 

完全主体名 

DES 

Secure RPC ネット名 

公開鍵 

暗号化された非公開鍵 

2 列目の認証の種類で他の 4 列の値の種類を判定します。

資格情報の作成

資格情報を作成したり管理したりするには次の方法があります。

nisaddcred コマンド

nisaddcred コマンドは資格情報を作成するコマンドです。


注 –

nispopulate スクリプトと nisclient スクリプトを使って資格情報を作成することもできます。これらスクリプトは nisaddcred コマンドよりも容易に使えて効果的なものです。ネットワークが特別な機能を必要とするのでなければ、これらのスクリプトを使用してください。


nisaddcred コマンドは、LOCAL 資格と DES 資格情報の作成、更新、および削除を行います。資格情報を作成するには、適切なドメインの cred テーブルに対する作成権が必要です。資格を更新するには、cred テーブル、または少なくとも cred テーブルの特定エントリに対する変更権が必要です。資格を削除するには、cred テーブル、または cred テーブルのエントリに対する削除権が必要です。

関連コマンド

この章で説明する nisaddcred コマンドに加えて、資格に関して有用な情報を提供するコマンドが 2 つ用意されています。

表 12–4 その他の資格関連コマンド

コマンド名 

説明 

参照する項目 

niscat -o

ディレクトリの属性を一覧表示する。ディレクトリのサーバーの公開鍵フィールドをチェックすることで、ディレクトリオブジェクトに公開鍵が格納されているかわかる 

ディレクトリのオブジェクト属性を表示する

nismatch-

cred テーブル上で実行すると主体の資格情報を表示する

nismatchnisgrep コマンド

nisaddcred コマンドを使って資格情報を作成する方法

nisaddcred コマンドを使用して、LOCAL および DES 資格情報を作成します。

LOCAL 資格情報

LOCAL 資格情報を作成するために nisaddcred コマンドを使用すると、nisaddcred コマンドは主体のログインレコードから主体ユーザーの UID (および GID) を抽出し、ドメインの cred テーブルに置きます。

DES 資格情報

DES 資格情報を作成するのに使用した場合、nisaddcred は 2 つのプロセスを実行します。

  1. 主体の Secure RPC ネット名を作成します。Secure RPC ネット名は、パスワードレコードから取得した主体のユーザー ID 番号とドメイン名 (たとえば、unix.1050@doc.com) を結合して作成されます。

  2. 主体の非公開鍵と公開鍵を生成します。

nisaddcred が非公開鍵を暗号化するには、Secure RPC パスワードが必要です。nisaddcred コマンドを引数 -des で呼び出すと、主体の Secure RPC パスワードの入力を要求されます。通常このパスワードは主体のログインパスワードと同じです(異なる場合は、Secure RPC パスワードとログインパスワードの問題に示す手順に従ってさらに操作が必要となります)。

nisaddcred コマンドは 1 対の乱数 (Difie-Hellman 方式を使った 192 ビットの認証鍵) を作成します。この鍵は Difie-Hellman の鍵ペア (key-pair) または省略して単に「鍵ペア」と呼びます。

この鍵ペアの一方が「非公開鍵」であり、もう一方が「公開鍵」になります。公開鍵は cred テーブルの公開データフィールドに置かれます。非公開鍵は主体の Secure RPC パスワードで暗号化された後に非公開データに置かれます。

図 12–3 nisaddcred コマンドを使って主体の鍵を作成する方法

この図は、nisaddcred コマンドを使って主体の鍵を作成する方法を示しています。

デフォルトでは、cred テーブルをすべての NIS+ 主体 (未認証主体であっても) が読み取ることができるので、セキュリティ上の予防措置として、主体の非公開鍵を暗号化しています。

Secure RPC ネット名と NIS+ 主体名

資格情報を作成する際、何度も主体の「RPC ネット名 (rpc-netname)」と「主体名 (principal-name)」を入力しなければなりません。どちらも独自の構文が必要です。

識別する対象がクライアントユーザーであっても、クライアントマシンであっても、主体名で始まり、その後にドットと完全なドメイン名が続き、最後はドットで終わります。資格の作成に使用する場合、常に先頭は -P (大文字) フラグで始まります。資格の削除に使用する場合、-P フラグは使用しません。

管理者のために資格情報を作成する方法

名前空間を最初に設定する場合、ドメインをサポートする管理者の資格情報を最初に作成します。管理者の資格情報を一度作成すると、他の管理者、クライアントマシン、およびクライアントユーザーの資格情報を作成できます。

自分の資格情報を作成しようとすると、堂々めぐりに陥ります。つまり、ドメインの cred テーブルに対する作成権がなければ自分の資格情報を作成できず、もし NIS+ 環境が適切に設定されていれば、資格を持つまではそのような権限を持つこともできません。この循環から抜け出さなくてはなりません。これには、次の 2 つの方法があります。

どちらの場合も、別の NIS+ 主体に資格情報を作成してもらうことになります。自分の資格情報を作成するには、NIS+ 主体の資格情報を作成する方法の項を参照してください。

NIS+ 主体の資格情報を作成する方法

NIS+ の資格情報はドメインの設定後いつでも作成できます。すなわち、cred テーブルがあれば作成できます。

NIS+ 主体の資格情報を作成する

これらの条件を満たせば、-p-P の両方のオプション付きで nisaddcred コマンドを実行できます。

LOCAL 資格情報


nisaddcred -p uid -P principal-name local

DES 資格情報


nisaddcred -p rpc.netname -P principal-name des

次の原則に注意してください。

ユーザー主体 - 例

UID が 11177morena という名前の NIS+ ユーザーの LOCAL および DES 資格情報を作成する例を次に示します。彼女の所属するドメインは doc.com. で、この例ではドメインの主体マシンから彼女の資格情報を入力します。


client# nisaddcred -p 11177 -P morena.doc.com. local
client# nisaddcred -p unix.11177@sales.doc.com \
   -P morena.doc.com. des
Adding key pair for unix.11177@sales.doc.com
   (morena.doc.com.).
Enter login password:

Enter login password: プロンプトに対する正しい応答は morena のログインパスワードです。 彼女のログインパスワードを知らない場合は、ダミーパスワードを使用します。ダミーパスワードは、次の例のように、後で chkey コマンドを使って変更できます。

ダミーパスワードと chkey の使い方 - 例

ユーザーのログインパスワードを知らない場合、次に説明するようにダミーパスワードを使うことができます。

表 12–5 は、ダミーパスワードを使って資格情報を作成した管理者が、chkey コマンドを使ってパスワードを変更する方法を示します。この例では、UID が 119 の eiji という名前の管理者の資格情報を作成します。eiji はルートドメインに属しているので、rootmaster という名前のルートマスターサーバーから彼の資格情報を入力します。

表 12–5 管理者の資格情報を作成する作業 : コマンドのまとめ

タスク 

コマンド 

eiji の LOCAL 資格情報を作成する

rootmaster# nisaddcred -p 119 -P eiji.doc.com. local


eiji の DES 資格情報を作成する

rootmaster# nisaddcred -p unix.119@doc.com -P eiji.doc.com. des

Adding key pair for unix.119@doc.com (eiji.doc.com.).

eiji のダミーパスワードを入力する

Enter eiji's login password:

nisaddcred: WARNING: password differs from login passwd


ダミーパスワードを再度入力する 

Retype password:

使用したダミーパスワードを eiji に伝える

 

eiji がルートマスターにログイン

rootmaster% login:eiji

eiji が本当のログインパスワードを入力する

Password:

eiji はエラーメッセージを受けたが、ログインは許可される

Password does not decrypt secret key for unix.119@doc.com.

eiji がログインを実行

rootmaster% keylogin

eiji がダミーパスワードを入力

Password:dummy-password

eijichkey を実行

rootmaster% chkey -p

Updating nisplus publickey database

Generating new key for'unix.119@doc.com'.

eiji が本当のログインパスワードを入力

Enter login password:

eiji が本当のログインパスワードを再入力

Retype password:
Done.

まず、通常の方法で eiji の資格情報を作成しますが、ダミーのログインパスワードを使用します。NIS+ は警告を発して、再入力を要求します。再入力を行うと、この操作は完了します。ドメインの cred テーブルには、ダミーパスワードに基づく eiji の資格情報が入っています。しかし、ドメインの passwd テーブル (または /etc/passwd ファイル) には、まだ彼のパスワードエントリが残っているので、彼はシステムにログオンできます。

次に、eiji は本当のログインパスワードを入力して、ドメインのマスターサーバーにログインします (ログイン手順では、passwd テーブルまたは /etc/passwd ファイルのパスワードをチェックするため)。そこから eiji は、まずダミーパスワードを使用して keylogin を実行し (cred テーブルをチェックするため)、chkey -p コマンドを使用して cred エントリを本当のパスワードに変更します。

別のドメインでの作成 - 例

これらの 2 つの例では、主体ユーザーのホームドメインのマスターサーバーにログインしている間に、主体ユーザーの資格情報を作成しました。しかし、適切なアクセス権がある場合、別のドメインに資格を作成できます。次の構文でドメイン名を付加するだけです。

LOCAL 資格情報


nisaddcred -p uid -P principal-name local domain-name

DES 資格情報


nisaddcred -p rpc-netname -P principal-name des domain-name 

次の例では、まず chou という名前のシステム管理者の LOCAL および DES 資格情報を、そのシステム管理者のホームドメイン (これは、たまたまルートドメイン) に作成し、次にその LOCAL 資格を doc.com ドメインに追加します。chou の UID は 11155 です。このコマンドは、ルートマスターサーバーから入力します。簡単にするため、chou の正しいログインパスワードを入力しているものとします。


rootmaster# nisaddcred -p 11155 -P chou.doc.com. local
rootmaster# nisaddcred -p unix.11155@doc.com -P chou.doc.com. des
Adding key pair for unix.11155@doc.com (chou.doc.com.).
Enter login password:
rootmaster#  nisaddcred -p 11155 -P chou.doc.com. local doc.com.

LOCAL 資格情報は、UID を NIS+ 主体名にマップします。クライアントユーザーである NIS+ 主体は、さまざまなドメインにさまざまな UID を持てますが、NIS+ 主体名は 1 つしか持てません。したがって、chou などの NIS+ 主体が自分のホームドメイン以外のドメインからログインする場合、そのドメインにパスワードエントリを持つだけではなく、そのドメインの cred テーブルに LOCAL 資格も持っていなければなりません。

マシン の場合—例

主体「マシン」の資格情報を作成する例を次に示します。このホスト名は starshine1 で、ルートドメインに所属しています。したがって、この資格はルートマスターサーバーから作成されます。この例では、ルートマスターに root としてログインしている間に資格情報を作成します。しかし、有効な資格情報と適切なアクセス権をすでに持っている場合、自分のユーザー名でログインしているときに、資格を作成できます。


rootmaster# nisaddcred -p unix.starshine1@doc.com -P \
starshine1.doc.com. des
Adding key pair for unix.starshine1@doc.com
(starshine1.doc.com.).
Enter starshine1.doc.com.'s root login password:
Retype password: 

パスワードプロンプトに対しては、主体マシンのスーパーユーザーパスワードを入力してください。もちろん、ダミーパスワードを使用することもできます。このダミーパスワードは、その主体マシンにスーパーユーザーとしてログインすれば、後で変更できます。

NIS+ 資格情報の管理

以下のいくつかの節では、nisaddcred コマンドで資格情報を管理する方法について説明します。nisaddcred で資格情報を管理するには、cred テーブルに対する作成権、変更権、読み取り権、削除権が必要です。

自分の資格情報を更新する方法

自分の資格情報を更新することは、資格を作成することよりはるかに簡単です。自分のユーザー名でログインしているときに、次のような nisaddcred コマンドを入力するだけです。


# nisaddcred des
# nisaddcred local

別のユーザーの資格情報を更新する場合は、そのユーザーの資格情報を作成するのと同じ操作を行います。

資格情報を削除する方法

nisaddcred コマンドは、主体の資格情報を削除しますが、コマンドを実行しているローカルドメインだけから削除できます。

システム全体から完全に主体を削除するには、主体のホームドメインおよび LOCAL 資格情報のあるすべてのドメインから主体の資格情報を明示的に削除しなければなりません。

資格情報を削除するには、ローカルドメインの cred テーブルへの変更権が必要です。-r オプションを使い、完全 NIS+ 主体名で主体を指定します。


# nisaddcred -r principal-name 

次の 2 つの例では、システム管理者 morena.doc.com. の LOCAL と DES の資格情報を削除します。最初の例では、システム管理者のホームドメイン (doc.com.) から両方の資格情報を削除し、2 番目の例では、sales.doc.com. ドメインから LOCAL 資格情報を削除します。 該当するドメインのマスターサーバーから、それぞれがどう入力されるかに注意してください。


rootmaster# nisaddcred -r morena.doc.com.
salesmaster#  nisaddcred -r morena.doc.com.

資格が本当に削除されたことを確かめるには、次に示すように、cred テーブルに対して nismatch を実行します。nismatch の詳細については、第 19 章「NIS+ テーブルの管理」を参照してください。


rootmaster# nismatch morena.doc.com. cred.org_dir 
salesmaster# nismatch morena.doc.com. cred.org_dir

第 13 章 NIS+ 鍵の管理

この章では、NIS+ の鍵と、鍵を管理する方法について説明します。


注 –

NIS+ セキュリティタスクには、Solstice AdminSuite ツールがあればより簡単に実行できるものがあります。



注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ 鍵

NIS+ 鍵は NIS+ の関連情報を暗号化するために使用します。

この章では、NIS+ セキュリティシステム全体と、特にシステムで鍵が果たす役割について、十分理解しているユーザーを想定しています (詳しくは、第 11 章「NIS+ のセキュリティの概要」を参照してください)。

NIS+ 鍵に関するコマンドとその構文やオプションについての詳しい説明は、nis+(1) のマニュアルページを参照してください。また、nisaddcred コマンドも鍵に関連のある働きをします。詳細については、 第 12 章「NIS+ 資格の管理」を参照してください。

キーログイン

主体がログインする時、パスワードの入力を求めるプロンプトが現れます。このパスワードはユーザーがセキュリティゲートをパスし、ネットワークにアクセスするために必要なものです。ログインプロセスは、ユーザーのホームドメインの cred テーブルにあるユーザーの非公開鍵を復号化しキーサーバーへ渡します。キーサーバーはその復号化された非公開鍵を使って、ユーザーが NIS+ オブジェクトにアクセスするつど、ユーザーの認証を行います。

通常は、この場合だけ主体にパスワードが要求されます。しかし、cred テーブルにある主体の非公開鍵がユーザーのログインパスワードと異なるパスワードを使用して暗号化されていると、ログインプロセスはそれを login の際にログインパスワードを使って復号化できないので、キーサーバーに復号化した非公開鍵を提供できません。(これは cred テーブル内にあるユーザーの非公開鍵が、ログインパスワードと異なる Secure-RPC パスワードを使用して暗号化された場合に多く起こります。)


注 –

「ネットワークパスワード」と「Secure-RPC パスワード」を同意語として使用する場合があります。


この問題を一時的に解決するには、ログインの後には必ず主体が keylogin コマンドを使用して、キーログインを実行する必要があります。-r フラグを使って、スーパーユーザー主体にログインし、ホストの /etc/.rootkey にスーパーユーザーの鍵を格納します。

主体ユーザーの場合


keylogin

主体マシンの場合 (一度だけ)


keylogin -r

ただし、オリジナルのパスワードを使用して確実にキーログインを実行しても、そのログインセッションにおいて一時的に問題が解決するだけです。cred テーブルの非公開鍵はユーザーのログインパスワードと異なるパスワードを用いて暗号化されたままであり、次にユーザーがログインした時に同じ問題が起こります。この問題を永久的に解決するには、chkey コマンドを使用して、非公開鍵の暗号化に使ったパスワードをユーザーのログインパスワードに変更します (NIS+ 主体の鍵の変更を参照)。

NIS+ 主体の鍵の変更

chkey コマンドは cred テーブルに格納されている NIS+ 主体の公開および非公開鍵を変更します。このコマンドは passwd テーブル内もしくは /etc/passwd ファイル内のどちらのエントリにも影響を与えません。

chkey コマンドについて

詳細については、マニュアルを参照してください。


注 –

NIS+ 環境では、どんな管理ツールまたは passwd (あるいは nispasswd) コマンドを用いてログインパスワードを変更しても、cred テーブル内の非公開鍵は新規のパスワードを使用して自動的に再暗号化されます。従って、ログインパスワードの変更後に chkey コマンドを実行する必要はありません。


chkey コマンドはキーサーバー、cred テーブル、および passwd テーブルとの関連で動作します。chkey を実行するには次のようにします。

ログインパスワードを使って非公開鍵を再暗号化するために chkey コマンドを使用するには、最初にオリジナルのパスワードを用いて keylogin を実行し、次に 表 13–1 に示す手順で chkey -p を実行します。表 13–1 は、主体ユーザーとして keyloginchkey を実行する方法を示しています。

表 13–1 非公開鍵の再暗号化:コマンドの説明

作業 

コマンド 

ログインする 

Sirius% login Login-name

ログインパスワードを入力する 

Password:

ログインパスワードと Secure RPC パスワードが異なっている場合、keylogin を実行する

Sirius% keylogin

非公開鍵の暗号化に使用したオリジナルパスワードを入力する 

Password:Secure RPC password

chkey を実行する

Sirius% chkey -p
Updating nisplus publickey database
Updating new key for 'unix.1199@Doc.com'.

ログインパスワードを入力する 

Enter login password: login-password

ログインパスワードを再入力する 

Retype password:

鍵の変更

次の節では、NIS+ 主体の鍵の変更方法を説明します。


注 –

サーバーの鍵を変更するときは常に、ドメイン内の全クライアントの鍵情報も更新する必要があります。方法については、クライアントの鍵情報の更新で説明します。


ルートからのルート鍵の変更

ルートマスターから (root として) ルートマスターサーバーの鍵を変更するには、表 13–2 の手順を実行します。

表 13–2 ルートマスター鍵の変更:コマンドの説明

作業 

コマンド 

新規 DES 資格を作成 

rootmaster# nisaddcred des

rpc.nisd のプロセス ID を発見

rootmaster# ps -e | grep rpc.nisd

NIS+ デーモンを終了 

rootmaster# kill pid

セキュリティなしで NIS+ デーモンを再起動 

rootmaster# rpc.nisd -S0

keylogout を実行 (以前の keylogin はタイムアウト)

rootmaster# keylogout -f

マスターがディレクトリに保管していた鍵を更新 

rootmaster# nisupdkeys dirs

rpc.nisd のプロセス ID を発見

rootmaster# ps -e | grep rpc.nisd

NIS+ デーモンを終了 

rootmaster# kill pid

デフォルトセキュリティで NIS+ デーモンを再起動 

rootmaster# rpc.nisd

keylogin を実行

rootmaster# keylogin

引数の意味は、それぞれ以下のとおりです。

表 13–2 に示すプロセスの最初の手順では、nisaddcred がルートマスターの cred テーブルを更新し、/etc/.rootkey を更新し、ルートマスターのキーログインを実行します。この時点では、マスターに保管されたディレクトリオブジェクトが更新されておらず、その資格情報とルートマスターとは同期がとれていません。表 13–2 に示すその後の手順は、すべてのオブジェクトを更新するのに必要です。


注 –

サーバーの鍵を変更するときは常に、ドメイン内の全クライアントの鍵情報も更新する必要があります。方法については、クライアントの鍵情報の更新で説明します。


別のマシンからルート鍵を変更する手順

別のマシンからルートマスターの鍵を変更する場合、それに必要な NIS+ 資格とそれを行う承認を得ていなくてはなりません。

表 13–3 別のマシンによるルートマスターの鍵の変更 - コマンドの説明

作業 

コマンド 

新規の DES 資格を作成 

othermachine% nisaddcred -p principal -P nisprincipal des

ディレクトリオブジェクトを更新 

othermachine% nisupdkeys dirs

/etc.rootkey を更新

othermachine% keylogin -r

クライアントとして他のマシンを再度初期化 

othermachine% nisinit -cH

引数の意味は、それぞれ以下のとおりです。

nisupdkeys を実行する場合、関連したディレクトリオブジェクトのすべてを同時に更新するように注意します。すなわち、すべてを 1 つのコマンドで行います。分割して更新すると、認証エラーになります。


注 –

サーバーの鍵を変更するときは常に、ドメイン内の全クライアントの鍵情報も更新する必要があります。方法については、クライアントの鍵情報の更新で説明します。


複製からルート複製の鍵を変更する手順

複製からルート複製の鍵を変更する手順を次に示します。


replica# nisaddcred des
replica# nisupdkeys dirs

引数の意味は、それぞれ以下のとおりです。

nisupdkeys を実行する場合、関連したディレクトリオブジェクトのすべてを同時に更新するように注意します。すなわち、すべてを 1 つのコマンドで行います。分割して更新すると、認証エラーになります。


注 –

サーバーの鍵を変更するときは常に、ドメイン内の全クライアントの鍵情報も更新する必要があります。方法については、クライアントの鍵情報の更新で説明します。


ルート以外のサーバーの鍵の変更手順

サーバーからルート以外のサーバー (マスターまたは複製) の鍵を変更する手順を以下に示します。


subreplica# nisaddcred des
subreplica# nisupdkeys parentdir dirs

引数の意味は、それぞれ以下のとおりです。

nisupdkeys を実行する場合、関連したディレクトリオブジェクトのすべてを同時に更新するように注意します。すなわち、すべてを 1 つのコマンドで行います。分割して更新すると、認証エラーになります。


注 –

サーバーの鍵を変更するときは常に、ドメイン内の全クライアントの鍵情報も更新する必要があります。方法については、クライアントの鍵情報の更新で説明します。


公開鍵の更新

NIS+ サーバーの公開鍵は名前空間のあちこちに格納されています。サーバーに新規の資格情報を作成する場合、新規の鍵ペアが作成され cred テーブルに格納されます。しかし、名前空間ディレクトリオブジェクトには、まだサーバーの古い公開鍵のコピーが残っています。nisupdkeys コマンドを使用して、これらのディレクトリオブジェクトのコピーを更新します。

nisupdkeys コマンド

古い鍵ペアの保全が危うくなったり、非公開鍵の暗号化に使ったパスワードを忘れてしまったりして新規の鍵ペアを作成する場合、nisupdkeys を使用してディレクトリオブジェクト内の古い公開鍵を更新できます。

nisupdkeys コマンドで次の操作を行うことができます。

ただし、nisupdkeys は主体マシン上の NIS_COLD_START ファイルを更新できません。サーバーの鍵のコピーを更新するには、NIS+ クライアントが nisclient コマンドを実行しなければなりません。あるいは、NIS+ キャッシュマネージャを実行中でかつコールドスタートファイル内で1つ以上のサーバーを利用できる場合、主体はディレクトリオブジェクト上で生存期間がタイムアウトするまで待つことができます。タイムアウトが発生すると、キャッシュマネージャはコールドスタートファイルを自動的に更新します。生存期間のデフォルトは 12 時間です。

nisupdkeys を使うには、NIS+ ディレクトリオブジェクトへの変更権が必要です。

公開鍵の引数の更新と例

nisupdkeys コマンドは /usr/lib/nis にあります。nisupdkeys コマンドは次の引数を使います。nisupdkeys コマンドの詳細と引数すべてのリストは、nisupdkeys(1M) のマニュアルページを参照してください。

表 13–4 nisupdkeys の引数

引数 

用途 

(引数なし) 

カレントドメインのサーバーの鍵をすべて更新する 

directoryname

ディレクトリ名で指定したディレクトリオブジェクトの鍵を更新する 

-H servername

カレントドメインのディレクトリオブジェクト内のサーバー名で指定したサーバーの鍵を更新する。他のドメインにあるサーバーの鍵を更新する場合は、完全ホスト名を使用する 

-s -H servername

サーバー名で指定したサーバーで保管されたディレクトリオブジェクトすべての鍵を更新する 

-C

鍵をクリアする 

表 13–5 で公開鍵の更新手順の例を示します。

表 13–5 公開鍵の更新: コマンド例

タスク 

コマンド (Commands) 

カレントドメイン (doc.com) のすべてのサーバーのすべての鍵を更新

rootmaster# /usr/lib/nis/nisupdkeys

Fetch Public key for server rootmaster.doc.com.

netname='unix.rootmaster@doc.com'

Updating rootmaster.doc.com.'s public key.

Public key: public-key

sales.doc.com ドメインのディレクトリオブジェクトをサポートしているすべてのサーバーの鍵を更新

salesmaster# nisupdkeys sales.doc.com

(画面上には何も表示されません) 

すべてのディレクトリ内のサーバー名が master7 であるサーバーの鍵を更新

rootmaster# nisupdkeys -H master7

sales.doc.com ディレクトリオブジェクトで保管された鍵をクリア

rootmaster# nisupdkeys -C sales.doc.com

カレントドメインのディレクトリオブジェクトのサーバー名が master7 であるサーバーの鍵をクリア

rootmaster# nisupdkeys -C -H master7

IP アドレスの更新

サーバーの IP アドレスを変更するかアドレスを追加する場合、NIS+ アドレス情報を更新するために nisupdkeys を実行する必要があります。

1 つ以上のサーバーの IP アドレスを更新するには、-a オプション付きで nisupdkeys を使用します。

指定されたドメインのサーバーの IP アドレスを更新。


rootmaster# nisupdkeys -a  domain

特定サーバーの IP アドレスを更新。


rootmaster# nisupdkeys -a -H  server

クライアントの鍵情報の更新

サーバーの鍵を変更するときは、常に全クライアントの鍵情報も更新する必要があります。NIS+ のサーバーは NIS+ のクライアントでもあります。そのため、あるサーバーの鍵を更新した場合は、それが NIS+ のサーバーであるか通常のクライアントであるかにかかわらず、ドメイン内にあるほかのすべてのマシンの鍵情報を更新する必要があります。

クライアントの鍵情報を更新するには、以下の 3 通りの方法があります。

クライアントの鍵情報を一括で更新する

サーバーの鍵を変更したあとで、ドメイン内にあるすべてのマシンのクライアントの鍵情報を一括更新できます。

  1. nischttl コマンドを使用して、ドメインのディレクトリオブジェクトの生存期間 (TTL) を、すぐに満了するような小さな値にしてください。

    たとえば、sales.doc.com. ドメイン内のサーバーの鍵を変更した場合、ディレクトリの TTL 値を 1 分にするには、以下のように入力します。


    client% nischttl 60 sales.doc.com.
    
  2. ディレクトリの TTL 値が満了すると、キャッシュマネージャはエントリを終了し、クライアントのために新しく更新された情報を入手します。

  3. ディレクトリオブジェクトの TTL 値が満了したあとで、ディレクトリオブジェクトの TTL 値をデフォルト値に戻します。

    たとえば、sales.doc.com. ドメインのディレクトリオブジェクトの TTL 値を 12 時間に戻すには、以下のように入力します。


    client% nischttl 12h sales.doc.com.
    

    TTL 値の使用の詳細は、nischttl コマンドを参照してください。

第 14 章 拡張セキュリティ資格の管理


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


Diffie-Hellman 拡張鍵

NIS+ は、RPCSEC_GSS RPC(3N) セキュリティフレイバーを使用して、192 ビット Diffie-Hellman [RPC(3N) セキュリティフレイバー AUTH_DES] を超える RPC(3N) 層におけるより厳格なセキュリティを提供します。システム上で使用可能なセキュリティメカニズムのリストについては、nisauthconf(1M) コマンドを参照してください。また、これらのセキュリティメカニズムは、より厳格な暗号と各 NIS+ トランザクションの完全性を提供します。すなわち、各 NIS+ トランザクションのデータが変更されていないことが検証されます。

システム管理者は、後述のガイドラインに従って、NIS+ サーバー環境を構築する前または後に nisauthconf(1M) を実行することによって、より厳格なセキュリティメカニズムの利点を活用することができます。

新しい公開鍵ベースのセキュリティメカニズムへの移行

Diffie-Hellman 640 ビット (dh640-0) のような公開鍵暗号ファミリーのより厳格なセキュリティメカニズムを使用するには、既存の cred テーブルに各主体の新しい資格を追加することが必要です。後述の手順は、現在 Diffie-Hellman 192 ビット (RPC セキュリティフレイバー AUTH_DES) セキュリティを実行しているシステムを、Diffie-Hellman 640 ビット (RPC セキュリティフレイバー RPCSEC_GSS) セキュリティを実行するように変換する場合のものです。この移行手順は、最もよくある場合を説明したものですが、公開鍵暗号ファミリーのどれか 1 つのセキュリティメカニズムタイプから、公開鍵暗号ファミリーの別のセキュリティメカニズムに変換する場合、原理は同じです。


注 –

以下の例では、$PATH に /usr/lib/nis があることを前提にしています。


NIS+ セキュリティメカニズムの構成

NIS+ セキュリティの構成は、nisauthconf(1M) コマンドを使用して行います。nisauthconf はセキュリティメカニズムのリストを設定した順に取ります。セキュリティメカニズムは、secure_rpc(3N) で指定された 1 つまたは複数の認証フレイバーを使用することができます。des が唯一の指定されたメカニズムである場合には、NIS+ は他の NIS+ クライアントおよびサーバーの認証に AUTH_DES だけを使用します。NIS+ は、nisaddcred(1M) の場合を除いて、des より後のメカニズムは無視します。


nisauthconf [-v] [mechanism, ...]

この場合の mechanism は、システム上で使用可能な RPC セキュリティメカニズムです。使用可能なメカニズムのリストについては、nisauthconf(1M) を参照してください。メカニズムを指定しないと、現在構成されているメカニズムのリストが出力されます。

新しいセキュリティメカニズム資格の作成

NIS+ ユーザーおよびホスト主体ごとに、新しいメカニズムの資格情報を作成する必要があります。これを行うには、システムが現在のメカニズムによる認証を継続している間に、NIS+ を実行しているマシンの 1 つで nisauthconf(1M) コマンドを実行して新しい資格を作成しなければなりません。資格作成の基本の詳細については、NIS+ 主体の資格情報を作成する方法も参照してください。

新しいセキュリティメカニズム資格 - 例

des から dh640-0 へ変換します。nisauthconf がスーパーユーザーとして実行されており、nisaddcred が、ホームディレクトリの中で作成権を持っているどれかの主体として実行されていることが必要です。サーバー名は server1、ユーザーの主体名は morena です。ユーザー morena の UID は 11177 です。


client# nisauthconf des dh640-0
client% nisaddcred -P server1.doc.com. -p unix.server1@doc.com dh640-0
			(画面上には何も表示されない)
client% nisaddcred -P morena.doc.com. -p unix.11177@doc.com -ldummy-password	dh640-0
			(画面上には何も表示されない)

NIS+ ディレクトリオブジェクトへの新しい鍵の追加

すべてのサーバーの新しい資格が生成されたら、nisupdkeys(1M) を実行して、これらのサーバーが提供するすべてのディレクトリオブジェクトに新しい公開鍵を追加します。nisupdkeys(1M) コマンドを使用するには、その NIS+ ディレクトリオブジェクトに対する変更権を持っていなければなりません。詳細については、公開鍵の更新を参照してください。


注意 – 注意 –

これらの NIS+ ディレクトリを提供するすべてのサーバー、およびこれらのディレクトリにアクセスするすべてのクライアントは、Solaris 7 以降を実行していなければなりません。


NIS+ ディレクトリオブジェクトへの新しい公開鍵の追加 - 例

この例では、新しい公開鍵を使用してサーバーが提供しているディレクトリは、doc.comorg_dir.doc.com.、および groups_dir.doc.com. です。 更新は、マスターサーバー主体として行われます。新しいメカニズムを実行する前に、nisauthconf(1M) を使用して nisupdkeys を構成することが必要です。この例では、現在の認証メカニズムは des で、新しいメカニズムは dh640-0 です。


masterserver#	nisauthconf dh640-0 des
masterserver# nisupdkeys doc.com.
			(画面上には何も表示されない)
masterserver# nisupdkeys org_dir.doc.com.
			(画面上には何も表示されない)
masterserver# nisupdkeys groups_dir.doc.com.
			(画面上には何も表示されない)

新しいセキュリティメカニズム資格を受け入れるようにする NIS+ サーバーの構成

各サーバー上で NIS+ 認証を構成して、新旧両方の資格を受け入れるようにします。そのためには、nisauthconf(1M) および keylogin(1) を実行し、keyserv(1M) を再起動することが必要です。keylogin(1) コマンドは、各メカニズムの鍵を /etc/.rootkey に格納します。keylogin の基本の詳細は、キーログインを参照してください。

新しいセキュリティメカニズム資格を受け入れるようにする NIS+ サーバーの構成 - 例

この例では、現在の認証メカニズムは des で、新しいメカニズムは dh640-0 です。ここでは順序が重要です。クライアントおよびサーバーの NIS+ 認証では des より後のエントリは無視されます。


server# nisauthconf dh640-0 des
server# keylogin -r
			(画面上には何も表示されない)
server# /etc/reboot

新しいセキュリティメカニズム資格を使用するようにするマシンの構成

新しい資格を受け入れられるようになったので、マシンを新しい資格によって認証するように変換することができます。そのためには、nisauthconf(1M) および keylogin(1) をスーパーユーザーとして実行し、再起動します。

新しいセキュリティメカニズム資格を受け入れるようにするマシンの構成 - 例

この例では、新しいメカニズムは dh640-0 ですが、システムは、dh640-0 資格が使用可能でないか、あるいは dh640-0 による認証に成功しなかった場合には、des 資格による認証も試みます。


workstation# nisauthconf dh640-0 des
workstation#  keylogin -r
			(画面上には何も表示されない)
workstation# /etc/reboot

次の例では、新しいメカニズムは dh640-0 で、このメカニズムによる認証だけが行われます。システムを新しいメカニズムだけで認証するように構成する前に、キャッシュに書き込まれているディレクトリオブジェクトが新しいメカニズムの鍵を含むように、リフレッシュされることが必要です。これは、nisshowcache(1M) によって検証することができます。キャッシュに書き込まれているディレクトリオブジェクトがタイムアウトしてリフレッシュされるのを待つ代わりとして、次の方法があります。nis_cachemgr(1M) を終了し、続いて nisinit(1M) を使用して新しい NIS_COLD_START を構築し、続いて niscachemgr(1M) を再起動します。

ディレクトリオブジェクトの手動によるリフレッシュ - 例

ディレクトリオブジェクトを手動でリフレッシュするには、次のようにします。


# pkill -u 0 nis_cachemgr
# nisinit -cH masterserver
# niscachemgr -i

注意 – 注意 –

マシン主体およびこのマシンのすべてのユーザーが cred テーブルの中に dh640-0 資格を持っていなければ、dh640-0 だけで認証を行うようにシステムを構成することはできません。



workstation# nisauthconf dh640-0
workstation#  keylogin -r
			(画面上には何も表示されない)
workstation# /etc/reboot

新しい資格を保護するパスワードの変更

ダミーパスワードを持った新しい資格を与えられた各ユーザーは、chkey(1) を実行してログインパスワードに変換することが必要です。詳細については、NIS+ 主体の鍵の変更を参照してください。

新しい資格を保護するパスワードの変更 - 例

chkey(1) を実行してログインパスワードに変換します。


# chkey -p
			(画面上には何も表示されない)

新しいセキュリティメカニズム資格だけを受け入れるようにするサーバーの構成

低グレードのセキュリティメカニズムから高グレードのものに変換する場合には、新しい高グレードのセキュリティメカニズムタイプの資格だけを受け入れるように NIS+ サーバーを構成することによって、最大限のセキュリティが達成されます。新旧両方のメカニズムによって認証を行うようにサーバーを構成した後で、変換します。

新しいメカニズムだけを使用して認証を行うようにシステムを構成する前に、キャッシュに書き込まれているディレクトリオブジェクトをリフレッシュして、新しいメカニズムの鍵を含むようにし、nisshowcache(1M) を使用してこれを検証します。

新しいセキュリティメカニズム資格だけを受け入れるようにするサーバーの構成 - 例

各 NIS+ サーバー上で nisauthconf(1M) を実行し、再起動します。この例では、NIS+ サーバーは dh640-0 資格の認証だけを受け入れるように構成されます。


server#  nisauthconf dh640-0
server# /etc/reboot

この段階で、オプションで、ディレクトリオブジェクトを更新して、古い公開鍵を削除できます。これはマスターサーバーから行う必要があり、新しいセキュリティメカニズムだけを使用して認証を行うサーバーが管理するディレクトリごとに一度、nisupdkeys(1M) を実行しなければなりません。この例では、更新されるディレクトリは、doc.comorg_dir.doc.com.、および groups_dir.doc.com. です。


masterserver#	nisupdkeys doc.com.
			(画面上には何も表示されない)
masterserver#  nisupdkeys org_dir.doc.com.
			(画面上には何も表示されない)
masterserver#	nisupdkeys groups_dir.doc.com.

cred テーブルからの古い資格の削除

必要に応じて、cred テーブルから古いセキュリティメカニズムの資格を削除できます。そのためには、ローカルドメインの cred テーブルに対する変更権が必要です。詳細は、「資格情報の削除」の項を参照してください。

cred テーブルからの古い資格の削除 - 例

この例では、主体 morena.doc.com が自分の des 資格を cred テーブルから削除します。


master# nisaddcred -r morena.doc.com. dh192-0

第 15 章 NIS+ のアクセス権の管理

この章では、NIS+ アクセス権とその管理方法について説明します。


注 –

NIS+ セキュリティタスクには、Solstice AdminSuite ツールがあればより簡単に実行できるものがあります。



注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ のアクセス権について

NIS+ アクセス権によって、NIS+ ユーザーが実行できる操作とアクセス可能な情報が決定されます。この章では、NIS+ セキュリティシステムとそのアクセス権について、十分に理解していることを前提としています。NIS+ セキュリティシステムについては、第 11 章「NIS+ のセキュリティの概要」を参照してください。

NIS+ アクセス関連のコマンドとその構文、オプションについては、nis+(1) のマニュアルページを参照してください。

承認およびアクセス権について

NIS+ 名前空間のセキュリティは、承認、アクセス権、および NIS+ 資格と認証の相互作用によって確保されています。これらの詳細については、NIS+ の承認とアクセス - 紹介を参照してください。

承認クラス - 復習

承認クラスに説明があるように、NIS+ のアクセス権は各クラスに与えられるものです。4 つの NIS+ クラスが用意されています。

アクセス権 - 復習

NIS+ アクセス権で詳述したように、NIS+ には 4 種類のアクセス権があります。

これらの権限は論理的には、ディレクトリ、テーブル、列とエントリのように下位に展開するものであることに注意してください。たとえば、新規にテーブルを作成するには、そのテーブルを格納する NIS+ ディレクトリオブジェクトに対する作成権が必要です。そのテーブルを作成した場合、そのデフォルト所有者になります。所有者として、自分自身にそのテーブルに対する作成権を与え、テーブルに新規のエントリを作成できます。テーブル内に新規のエントリを作成した場合、それらのエントリの所有者になります。テーブルの所有者として、テーブルレベルの作成権を他の人に与えることもできます。たとえば、自身のテーブルのグループクラスのテーブルレベルの作成権を与えることができます。その場合、テーブルのグループのすべてのメンバーがテーブル内に新規のエントリを作成できます。新規のテーブルエントリを作成したグループの個々のメンバーは、そのエントリのデフォルト所有者になります。

アクセス権の連鎖

承認クラスは連鎖の関係にあります。つまり、上位クラスは通常下位クラスにも属しており、自動的に下位クラスの権限を得ることになります。次のように機能します。

この基本原則は、下位クラスのアクセス権は自動的に上位クラスに与えられるということです。つまり、上位クラスは下位クラスよりも多くの権限を持つことができ、権限が少なくなることはないということです (この原則の例外は、もし所有者がグループのメンバーでなければ、所有者の持っていない権限をグループクラスに与えることが可能になる場合)。

アクセス権の割り当てと変更方法

NIS+ オブジェクトを作成した時、NIS+ はそのオブジェクトに所有者クラスとグループクラスのアクセス権のデフォルトセットを与えます。デフォルトでは、所有者はそのオブジェクトを作成した NIS+ 主体です。デフォルトのグループは、環境変数 NIS_GROUP の中で名前をつけられたグループです。

異なるデフォルト権限の指定

NIS+ は NIS+ オブジェクトが作成された時に自動的に付与されたデフォルト権限を変更する 2 つの異なった方法を提供しています。

既存オブジェクトへのアクセス権を変更する

NIS+ オブジェクトを作成する場合、既存のデフォルトアクセス権 (NIS_DEFAULTS 環境変数か -D オプションの指定かのどちらかによる) に対処する必要があります。デフォルト権限を変更するコマンドは次のとおりです。

テーブル、列、およびエントリのセキュリティ

NIS+ テーブルに対するアクセス権を指定する方法には、次の 3 通りあります。

列とエントリ (行) が交差する部分をフィールドといいます。データ値はすべてこの交差領域、つまりフィールドに入力します。

列とエントリレベルのアクセス権を持っていると、テーブルレベルのアクセス権の制限があっても個々の行と列にアクセスできますが、テーブル全体へのアクセス権以上に列とエントリレベルの権限を制限することはできません。

テーブル、列、エントリの例

列またはエントリレベルのアクセス権は、追加アクセスを次の 2 つの方法で提供できます。1 つは権限を持つ主体を増やす方法で、もう 1 つは同じ主体に権限を追加する方法です。もちろん、これらを組み合わせることも可能です。以下にその例を示します。

テーブルオブジェクトが、そのテーブルの所有者に対して読み取り権を与えたとします。

表 15–1 テーブル、列、エントリの例 1

 

未認証 

所有者 

グループ 

その他 

テーブルのアクセス権 

----

r---

----

----

このことは、テーブルの所有者だけがテーブル全体の内容を読み取れることを意味します。所有者でない主体は、アクセスできません。テーブルのエントリ 2 にグループクラスに対して読み取り権を与えることができます。

表 15–2 テーブル、列、エントリの例 2

 

未認証 

所有者 

グループ 

その他 

テーブルのアクセス権  

----

r---

----

----

エントリ 2 のアクセス権 

----

----

r---

----

テーブルの内容をすべて読み取れるのは所有者だけですが、このテーブルのグループのメンバーであれば、この特定エントリの内容を読み取ることができます。次に、特定の列がその他クラスに読み取り権を与えたとします。

表 15–3 テーブル、列、エントリの例 3

 

未認証 

所有者 

グループ 

その他 

テーブルのアクセス権 

----

r---

----

----

エントリ 2 のアクセス権 

----

----

r---

----

列 1 のアクセス権 

----

----

----

r---

その他クラスのメンバーは例 1 のすべてのエントリを読み取ることができます。グループクラスのメンバーは、(その他クラスに属しているので) 例 1 のすべてとエントリ 2 の全列を読み取ることができます。*NP* になっているセルは、「グループ」、「その他」いずれのクラスも読み取りができません (どちらにもアクセス権がない)。

表 15–4 テーブル、列、エントリの例 4

 

列 1 

列 2 

列 2 

エントリ 1 

読み取り 

*NP*

*NP*

エントリ 2 

読み取り 

読み取り 

読み取り 

エントリ 3 

読み取り 

*NP*

*NP*

エントリ 4 

読み取り 

*NP*

*NP*

エントリ 5 

読み取り 

*NP*

*NP*

異なるレベルの権限

この節では 4 つの権限 (読み取り、作成、変更、削除) が 4 つのアクセスレベル (ディレクトリ、テーブル、列、エントリ) とどのようにかかわるのかを説明します。

種々の権限とレベルに関係した機能を次の表 15–5 にまとめます。

表 15–5 アクセス権、アクセスレベル、およびその機能

 

ディレクトリ 

テーブル 

列 

エントリ 

読み取り 

ディレクトリ内容のリスト 

テーブル内容の読み取り 

列内容の読み取り 

エントリ (行) 内容の読み取り 

作成 

新規ディレクトリまたはテーブルオブジェクトの作成 

新規エントリ (行) の追加 

列に新規のデータを入力 

エントリ (行) に新規のデータを入力 

変更 

オブジェクトの移動とオブジェクト名の変更 

テーブル内の任意のデータを変更 

列内のデータを変更 

エントリ (行) 内のデータを変更 

削除 

テーブル等のディレクトリオブジェクトの削除 

エントリ (行) の削除 

列内のデータの削除 

エントリ (行) 内のデータの削除 

読み取り権

作成権

変更権

削除権

アクセス権の格納場所

オブジェクトのアクセス権は、そのオブジェクトの定義の一部として指定され、格納されます。この情報は NIS+ テーブルには格納されません。

NIS+ オブジェクトのアクセス権の読み取り

アクセス権を読み取るには niscat コマンドを使用します。


niscat -o objectname

アクセス権を読み取るオブジェクト名を指定します。

このコマンドは、NIS+ オブジェクトに関する次の情報を返します。

4 つの承認クラスのアクセス権は、次のように 16 文字の文字列で表示されます。


	r---rmcdr---r---

各文字がアクセス権の種類を表します。

先頭の 4 文字は未認証に、次の 4 文字は所有者に、その次の 4 文字はグループに、そして最後の 4 文字はその他に、それぞれ与えられたアクセス権を表します。

図 15–1 アクセス権の表示

この図は、未認証から始まるアクセス権の表示順序を示しています。


注 –

UNIX ファイルシステムとは異なり、先頭のアクセス権は未認証用であり、所有者用ではありません。


デフォルトのアクセス権

オブジェクトを作成すると、NIS+ はそのオブジェクトにデフォルトの所有者、グループ、および アクセス権を割り当てます。デフォルトの所有者は、そのオブジェクトを作成する NIS+ 主体です。デフォルトのグループは、環境変数 NIS_GROUP の中で名前をつけられたグループです。デフォルトのアクセス権は次のようになります。

表 15–6 デフォルトのアクセス権

未認証 

所有者 

グループ 

その他 

読み取り 

読み取り権 

読み取り 

変更権 

作成 

削除 

環境変数 NIS_DEFAULTS のセットがある場合、NIS_DEFAULTS 内の値が新規のオブジェクトに適用されるデフォルト値を決定します。コマンド行でオブジェクトを作成した場合は、-D フラグを使ってデフォルト値以外を設定できます。

テーブルに対するアクセス権をサーバーが割り当てる方法

この節では、読み取り、変更、削除、作成の操作が行われる際、テーブルオブジェクト、エントリ、列に対するアクセス権をサーバーが各クラスにどのように割り当てるかということについて説明します。


注 –

セキュリティレベル 0 では、サーバーはアクセス権を実行しないため、すべてのクライアントがテーブルオブジェクトに対する完全なアクセス権を付与されます。セキュリティレベル 0 は管理者だけがテストの目的で使用します。通常の業務にはレベル 0 を使用しないでください。


サーバーがアクセスを許可するか否かを決定する 4 つの要素があります。

認証後に主体は、主体が有効な DES 資格を所持しているかを確認することで要求を行い、NIS+ サーバーは処理の種類と要求のオブジェクトを決定します。

コマンドによるアクセス権の指定

ここでの説明では、NIS+ 環境のセキュリティレベルが 2 (デフォルト) であるものと想定しています。

この節では、この章で説明するコマンドを使用するときにアクセス権や所有者、グループ所有者、オブジェクトを指定する方法を説明します。

アクセス権の構文

この節では、承認とアクセス権に関係する NIS+ コマンドに使われるアクセス権の構文について説明します。

クラス、演算子、および権限の構文

アクセス権は、環境変数で指定する場合もコマンドで指定する場合も、「クラス (class)」、「演算子 (operator)」、「権利 (right)」という 3 種類の引数で区別されます。

表 15–7 アクセス権の構文 - クラス

クラス 

説明 

n

未認証: すべての未認証要求  

o

オブジェクトまたはテーブルエントリの所有者 

g

オブジェクトまたはテーブルエントリのグループ所有者 

w

その他: すべての認証済み主体 

a

すべて: 所有者、グループ、およびその他の省略形。これはデフォルト 

表 15–8 アクセス権の構文 - 演算子

操作 

説明 

+

「権利」によって指定されたアクセス権を追加する 

-

「権利」によって指定されたアクセス権を取り消す 

=

この演算子権利によって指定されたアクセス権に変更する。つまり、既存の「権利」をすべて取り消し、新しいアクセス権に置き換える 

表 15–9 アクセス権の構文 - 権限

権利 

説明 

r

オブジェクト定義またはテーブルエントリを読み取る 

m

オブジェクト定義またはテーブルエントリを変更する 

c

テーブルエントリまたは列を作成する 

d

テーブルエントリまたは列を削除する 

コンマ (,) で区切ることで、複数のコマンドを 1 つのコマンド行にまとめることができます。

表 15–10 クラス、演算子、権限の構文 - 例

操作 

構文 

読み取りアクセス権を「所有者」クラスに追加する 

o+r

変更アクセス権を所有者、グループ、およびその他のクラスに追加する 

a=m

読み取りと変更の権限をその他と未認証クラスに追加する 

wn+m

グループ、その他、および未認証クラスから 4 つの権限をすべて削除する 

gwn-rmcd

所有者クラスに作成と削除の権限を追加し、その他と未認証クラスに読み取り権と変更権を追加する 

o+cd,wn+rm

所有者とグループの構文


principalname

グループ


groupname.domainname

オブジェクトとテーブルエントリの構文

オブジェクトとテーブルエントリは異なる構文を使います。

オブジェクト


objectname

テーブルエントリ


[columnname=value],tablename

注 –

この場合、角括弧 ( [ ] ) は構文の一部であり、オプション記号ではありません。


インデックス付きの名前では、列と値のペアを複数指定できます。その場合、操作はすべての列と値のペアに一致するエントリにだけ適用されます。列と値のペアが増えると、検索条件が厳しくなります。

たとえば :

表 15–11 オブジェクトとエントリ - 例

形式 

例 

オブジェクト 

hosts.org_dir.sales.doc.com.

テーブルエントリ 

`[uid=33555],passwd.org_dir.Eng.doc.com.'

2 つの値のテーブルエントリ 

`[name=sales,gid=2],group.org_dir.doc.com.'

列はインデックス付きの名前の特殊な形式になっています。列の操作は nistbladm コマンドでだけ可能なため、詳細については nistbladm コマンドを参照してください。

NIS+ デフォルトの表示 - nisdefaults コマンド

nisdefaults コマンドは、名前空間内で現在有効な 7 つのデフォルトを表示します。これらのデフォルトは次のいずれかです。

オブジェクトを作成する時に -D オプション付きのコマンドを使って上書きしなければ、このマシン上でオブジェクトを作成すると自動的にデフォルト値を獲得することになります。

表 15–12 7 つの NIS+ デフォルト値と nisdefaults オプション

デフォルト 

オプション 

元データ 

説明 

ドメイン 

-d

/etc/defaultdomain

コマンドを入力したマシンのホームドメインを表示する 

グループ 

-g

環境変数 NIS_GROUP

このシェルが作成する次のオブジェクトに付与されるグループを表示する 

ホスト 

-h

uname -n

マシンのホスト名を表示する 

主体 

-p

gethostbyname()

nisdefaults コマンドを入力した NIS+ 主体の完全指定ユーザー 名またはホスト名を表示する

アクセス権 

-r

環境変数 NIS_DEFAULTS

このシェルが作成する次のオブジェクトまたはエントリに付与されるアクセス権を表示する書式: - ----rmcdr---r---

検索パス 

-s

環境変数 NIS_PATH

検索パスの構文を表示する。これは NIS+ が情報を検索する時のドメインを示す。もし設定してあれば、環境変数 NIS_PATH の値を表示する

生存期間 

-t

環境変数 NIS_DEFAULTS

このシェルが作成する次のオブジェクトに付与される生存期間を表示する。デフォルトは 12 時間 

全部 (簡潔) 

-a

 

7 つのデフォルトすべてを簡潔書式で表示する 

冗長 

-v

 

指定した値を冗長モードで表示する 

これらのオプションを使用して、すべてのデフォルト値もしくはそのサブセットを表示できます。


master% nisdefaults
Principal Name : topadmin.doc.com.
Domain Name : doc.com.
Host Name : rootmaster.doc.com.
Group Name : salesboss
Access Rights : ----rmcdr---r---
Time to live : 12:00:00:00:00
Search Path : doc.com.

デフォルトセキュリティ値の設定

この節では、nisdefaults コマンド、環境変数 NIS_DEFAULTS、および -D オプションに関連したタスクを実行する方法を説明します。環境変数 NIS_DEFAULTS は次のデフォルト値を指定します。

環境変数 NIS_DEFAULTS に設定した値はデフォルトとなり、そのシェルを使用して作成したすべての NIS+ オブジェクトに適用されます (-D オプション付きでコマンドを実行してデフォルト値に上書きした場合を除く)。

環境変数 NIS_DEFAULTS を指定することで、デフォルト値 (所有者、グループ、アクセス権、および生存期間) を指定できます。一度 NIS_DEFAULTS の値を設定するとそのシェルから作成したすべてのオブジェクトは、-D オプション付きでコマンドを実行して上書きした場合を除きそのデフォルトに設定されます。

NIS_DEFAULTS の値を表示する

echo コマンドを使って、環境変数の値をチェックできます。以下にその例を示します。


client% echo $NIS_DEFAULTS
owner=butler:group=gamblers:access=o+rmcd 

nisdefaults コマンドを使用して、名前空間でアクティブな NIS+ デフォルトの一般的リストを表示することも可能です。NIS+ デフォルトの表示 - nisdefaults コマンドを参照してください。

デフォルトを変更する

環境変数 NIS_DEFAULTS の値を変更することで、アクセス権、所有者、およびグループのデフォルトを変更できます。ユーザーのシェルに適切な環境コマンド (C シェルには setenv、Bourne シェルと Korn シェルには $NIS_DEFAULTS=, export) を次の引数を付けて使用します。

複数の引数をまとめる場合は、コロン (:) で区切ります。

owner= 主体名 :group= グループ名

表 15–13 に例をいくつか示します。

表 15–13 デフォルトの変更 - 例

タスク 

例 

所有者のデフォルトアクセス権に読み取り権を設定 

client% setenv NIS_DEFAULTS access=o+r

デフォルトの所有者をホームドメインが doc.com. である abe に設定

 

client% setenv NIS_DEFAULTS owner=abe.doc.com.

2 つのコード行をまとめる 

client% setenv NIS_DEFAULTS access=o+r:owner=abe.doc.com.

デフォルトを変更したシェルから作成されるすべてのオブジェクトとエントリは、指定した新規の値になります。テーブルの列またはエントリに対してはデフォルトを指定できません。列とエントリはデフォルトをそのまま継承します。

NIS_DEFAULTS の値を再設定する

変数 NIS_DEFAULTS をオリジナルの値に再設定するには、ユーザーのシェルに適したフォーマットを使って、引数なしで変数の名前を入力します。

C シェルの場合


client# unsetenv NIS_DEFAULTS

Bourne シェルまたは Korn シェルの場合


client$ NIS_DEFAULTS=; export NIS_DEFAULTS

デフォルトを無効にする

次の NIS+ コマンドのどれかを使えば、NIS+ オブジェクトまたはテーブルエントリを作成する時に、いつでもデフォルトのアクセス権、所有者、およびグループを無効にできます。

デフォルト値を無効にするには、コマンドによるアクセス権の指定の説明のように、コマンドの構文に -D オプションを挿入します。

デフォルトを設定する時と同様、複数の引数を 1 行のコマンド行で指定できます。なお、列とエントリの所有者とグループは常に同じであるため、これらを無効にすることはできません。

nismkdir コマンドを使用して、sales.doc.com ディレクトリを作成し、デフォルトアクセス権を無効にして所有者にだけ読み取り権を付与するには、次のように入力します。


client% nismkdir -D access=o+r sales.doc.com

オブジェクトとエントリのアクセス権を変更する

nischmod コマンドは、NIS+ オブジェクトまたはテーブルエントリのアクセス権を変更します。テーブル列のアクセス権は操作しません。列の場合、nistbladm コマンドに -D オプションを付けて実行してください。nischmod コマンドを使用するには、そのオブジェクトかエントリに対する変更権が必要です。

nischmod コマンドを使用して権限を追加する

オブジェクトまたはエントリに権限を追加する例を次に示します。

オブジェクト


nischmod class+right object-name

テーブルエントリ


nischmod class+right [column-name=value],table-name

sales.doc.com. ディレクトリオブジェクトのグループに読み取り権と変更権を追加する場合は、次のように入力します。


client% nischmod g+rm sales.doc.com.

hosts.org_dir.doc.com. テーブル内の name=abe エントリのグループに読み取り権と変更権を追加する場合は、次のように入力します。


client% nischmod g+rm '[name=abe],hosts.org_dir.doc.com.'

nischmod を使用して権限を削除する

オブジェクトまたはエントリの権限を削除するには、次のように入力します。

オブジェクト


nischmod class-right object-name

エントリ


nischmod class-right [column-name=value],table-name

sales.doc.com. ディレクトリオブジェクトのグループから作成権と削除権を削除するには次のように入力します。


client% nischmod g-cd sales.doc.com.

たとえば、hosts.org_dir.doc.com. テーブル内の name=abe エントリのグループから削除権を削除する場合は、次のようにします。


client% nischmod g-d '[name=abe],hosts.org_dir.doc.com.' 

列アクセス権を指定する

nistbladm コマンドは NIS+ テーブルに種々の操作を行うことができます。これについては nistbladm コマンドにほとんどの説明があります。このコマンドは -c-u の 2 つのオプションを使用してセキュリティ関連のタスクを実行できます。

テーブル作成時の列権限設定

テーブルが作成された時、列にはテーブルオブジェクトと同じ権限が付与されます。このテーブルレベルの権限は環境変数 NIS_DEFAULTS で指定されるか、またはテーブルを作成したコマンドの一部で指定されます。nistbladm コマンドでテーブルを作成する際に -c オプションを使用すれば、最初の列アクセス権を指定できます。このオプションを使用するには、テーブルを作成しようとするディレクトリの作成権が必要です。テーブル作成時に列権限を指定するには、次のように入力します。


nistbladm -c type `columname=[flags] [,access]... tablename'

引数の意味は、それぞれ以下のとおりです。

テーブルを作成する際、その列にはテーブルオブジェクトと同じ権限が付与されます。列に独自の権限を付与するには、列の型とコンマの後の各列の等号記号にアクセス権を追加し、列をスペースで区切ります。


column=type,   rights column= type, rights column =   type, rights

以下の例では、div 特性で depts という名前のテーブルが doc.com ディレクトリに作成されます。列は NameSite および Manager の 3 つです。第 2、第 3 列のグループには、変更権が追加されます。


rootmaster% nistbladm -c div Name=S Site=S,g+m Manager=S,g+m depts.doc.com

nistbladm-c オプションの詳細については、第 19 章「NIS+ テーブルの管理」を参照してください。

既存のテーブル列に権限を追加する

既存の NIS+ テーブルの列にアクセス権を追加するには、nistbladm -u オプション付きの nistbladm コマンドを使用します。このオプションを使用する場合、テーブル列の変更権が必要です。入力例を次に示します。


nistbladm -u [column=   access,...],tablename

引数の意味は、それぞれ以下のとおりです。

権限を更新する列ごとに column=access のペアを使用します。複数の列を更新するにはコンマ (,) で区切り全体を角括弧 ( [] ) で囲みます。


[column=access,   column=access,    column=access]

このオプションの完全な構文については、第 2 章「NIS+ の紹介」を参照してください。

次の例は、hosts.org_dir.doc.com. テーブルの name および addr 列のグループに、作成権と変更権を追加するものです。


client% nistbladm -u `[name=g+rm,addr=g+rm],hosts.org_dir..doc.com.'

テーブル列から権限を削除する

NIS+ テーブル列のアクセス権を削除するには、上記 既存のテーブル列に権限を追加するで説明したように -u オプションを使用します。

次の例は、hosts.org_dir.doc.com. テーブルの hostname 列のグループの読み取り権と変更権を削除するものです。


client% nistbladm -u 'name=g-rm,hosts.org_dir.doc.com.' 

オブジェクトとエントリの所有権の変更

nischown コマンドは、1 つ以上のオブジェクトまたはエントリの所有者を変更します。このコマンドを使用するには、オブジェクトまたはエントリに対する変更権が必要です。テーブルの列の所有者はテーブルの所有者であるため、nischown コマンドでは列の所有者を変更できません。列の所有者を変更するには、テーブルの所有者を変更する必要があります。

nischown コマンドを使用してオブジェクトの所有者を変更する

オブジェクトの所有者を変更するには、次のように入力します。


nischown new-owner object

引数の意味は、それぞれ以下のとおりです。

オブジェクト名と新規所有者名にドメイン名を必ず追加します。

次の例は、doc.com. ドメイン内の hosts テーブルの所有者を、ホームドメインが doc.com. でユーザー名 lincoln であるユーザーに変更するものです。


client% nischown lincoln.doc.com. hosts.org_dir.doc.com.  

nischown コマンドを使用してテーブルエントリの所有者を変更する

テーブルエントリの所有者を変更する構文は、エントリを特定するのにインデックス付きエントリを使います。次に例を示します。この構文の詳細については、オブジェクトとテーブルエントリの構文を参照してください。


nischown new-owner [column=value,...],  tablename 

引数の意味は、それぞれ以下のとおりです。

所有者名とテーブル名にドメイン名を必ず追加します。

次の例は、doc.com. ドメインのホストテーブル内のエントリの所有者を、ホームドメインが doc.com. であるユーザー takeda に変更するものです。そのエントリの name 列の値は virginia です。


client% nischown takeda.doc.com. '[name=virginia],hosts.org_dir.doc.com.' 

オブジェクトまたはエントリグループの変更

nischgrp コマンドは、1 つ以上のオブジェクトまたはテーブルエントリのグループ所有者を変更します。このコマンドを使用するには、オブジェクトまたはエントリに対する変更権が必要です。テーブルの列に割り当てられたグループは、テーブルに割り当てられたグループと同じであるため、nischgrp コマンドは、列のグループを変更できません。列のグループ所有者を変更するには、テーブル所有者を変更する必要があります。

nischgrp コマンドを使用してオブジェクトのグループを変更する

オブジェクトのグループを変更するには、次の構文を使用します。


nischgrp group  object

引数の意味は、それぞれ以下のとおりです。

オブジェクト名と新規のグループ名にはドメイン名を必ず追加します。

次の例は、doc.com. ドメイン内の hosts テーブルのグループを admins.doc.com. に変更するものです。


client% nischgrp admins.doc.com. hosts.org_dir.doc.com.  

nischgrp コマンドを使用してテーブルエントリのグループを変更する

テーブルエントリのグループを変更する構文は、エントリを識別するためにインデックス付きのエントリを使用します (この構文については、オブジェクトとテーブルエントリの構文に詳細説明があります)。以下に構文を示します。


nischgrp new-group [column=value,...],  tablename

引数の意味は、それぞれ以下のとおりです。

新規グループ名とテーブル名にはドメイン名を必ず追加します。

次の例は、doc.com. ドメインのホストテーブル内のエントリのグループを sales.doc.com. に変更するものです。そのエントリの name 列の値は virginia です。


client% nischgrp sales.doc.com. '[name=virginia],hosts.org_dir.doc.com.' 

第 16 章 パスワードの管理

この章では、一般ユーザー (NIS+ 主体) の観点から見た passwd コマンドの使用方法と、NIS+ 管理者によるパスワードシステムの管理方法を説明します。


注 –

NIS+ セキュリティタスクには、Solstice AdminSuite ツールが利用可能であればもっと簡単に実行できるものがあります。



注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


パスワードの使用

マシンへのログインの際には、ユーザー名 (「ログイン ID」とも呼ばれる)、およびパスワードを入力する必要があります。ログイン ID は公開の情報ですが、パスワードを知っているのは所有者だけです。

ログインの方法

システムへのログインは以下の手順で行います。

  1. Login: プロンプトで、ログイン ID を入力します。

  2. Password: プロンプトで、パスワードを入力します。

    (秘密を守るため、入力してもパスワードは画面に表示されません)

    ログインに成功すると、本日のメッセージ (ない場合もある)、続いてコマンド行プロンプト、ウィンドウシステム、通常のアプリケーションなどが表示されます。

Login incorrect メッセージ

Login incorrect」というメッセージは以下のことを意味します。

will expire メッセージ

Your password will expire in N days」メッセージ (または「Your password will expire within 24 hours」というメッセージ) は、「パスワードが、N あるいは 24 時間以内に有効期限に達する」ということを意味します。

このメッセージが表示されたら、パスワードをすぐに変更する必要があります (パスワードの変更方法を参照)。

Permission denied メッセージ

ログイン ID とパスワードを入力後、 「Permission denied」というメッセージが表示されて login: プロンプトに戻る場合があります。 これは、管理者がパスワードをロックしたか、管理者がユーザーのアカウントを終了したか、パスワード権限の有効期限が切れたために、ログインに失敗したことを意味します。このような場合、管理者がパスワードロックを解除するか、アカウントを復旧するまではログインができません。システム管理者に問い合わせてください。

パスワードの変更方法

セキュリティを確保するため、パスワードは定期的に変更してください (新しいパスワードを作成する場合の必要条件、および基準については、パスワードの選択を参照)。


注 –

現在の passwd コマンドでは、以前 nispasswd で行なっていた操作がすべて行えます。NIS+ の名前空間に特有な操作を行うには、passwd -r nisplus を使用します。


パスワードの変更は以下の手順で行います。

  1. システムプロンプトから passwd コマンドを実行します。

  2. Enter login password (多少異なる場合がある) プロンプトで、従来のパスワードを入力します。

    キー入力の内容は画面には表示されません。

    • Sorry: less than N days since the last change」というメッセージが表示されたら、「現在使用中のパスワードは、作成されてからまだ十分な時間が経過していないため変更できない」ということを意味します。この場合はシステムプロンプトに戻ります。システム管理者に「パスワードは、作成後何日経過すれば変更できるのか」を問い合わせてください。

    • You may not change this password」というメッセージが表示された場合は、変更がネットワーク管理者によって禁止されているということを意味します。

  3. Enter new password プロンプトで、新しいパスワードを入力します

    キー入力の内容は画面には表示されません。

    この時点で、新しいパスワードが必要条件を満たしているかどうかがシステムによって確認されます。

    • 満たしている場合は再入力を求められます。

    • 満たしていない場合は、その旨を知らせるメッセージが表示されます。このときは、必要条件を満たす別のパスワードを入力する必要があります。

    パスワードの必要条件については、パスワードの必要条件を参照してください。

  4. Re-enter new password プロンプトで、新しいパスワードを再入力します。

    キー入力の内容は画面には表示されません。

    1 回目と 2 回目で入力したパスワードが異なっていた場合は、手順 1 から繰り返すようにプロンプトが表示されます。


    注 –

    root のパスワードを変更した場合は、その直後に必ず chkey -p を実行する必要があります (詳細は、ルートからのルート鍵の変更、および、別のマシンからルート鍵を変更する手順を参照してください)。root のパスワードを変更したあと chkey -p を実行しないと、root で正常にログインできなくなります。


このメッセージは、「パスワードが有効期限を過ぎている」ということを意味します。つまり、パスワードを作成してから時間が経ちすぎているので、すぐに作成し直す必要があるということです (新しいパスワードを作成する場合の必要条件については、パスワードの選択を参照してください)。

この場合、新しいパスワードの作成は以下の手順で行います。

  1. Enter login password (多少異なる場合がある) プロンプトで、従来のパスワードを入力します。

    キー入力の内容は画面には表示されません。

  2. Enter new password プロンプトで、新しいパスワードを入力します。

    キー入力の内容は画面には表示されません。

  3. Re-enter new password プロンプトで、新しいパスワードを再入力します。

    キー入力の内容は画面には表示されません。

パスワード変更の失敗

システムの中には、パスワード変更の試行回数、所要時間に制限を設けているものもあります (他の人が試行錯誤によって勝手にパスワードを変更してしまうのを防ぐため)。

パスワード変更、ログインの試行回数、または所要時間が指定の範囲を超えた場合は、「Too many failures - try later」、または「Too many tries: try again later」といったメッセージが表示されます。この種のメッセージが表示されると、一定の時間 (システム管理者が指定) が経過するまでログイン、パスワードの変更は行えなくなります。

パスワードの選択

コンピュータのセキュリティの侵害の例としては、「他のユーザーのパスワードを推測によって盗む」というものが多くみられます。passwd コマンドには、パスワードを推測しにくいものにするための基準がいくつか設けられていますが、ユーザーに関していくつかの情報を得るだけでパスワードがわかってしまう人もいるのです。したがって、「自分にとって覚えやすく他人にとって推測しにくい」というのが良いパスワードです。逆に悪いパスワードとは、「自分にとって覚えにくく (メモしないと覚えられない)、自分を知る他人にとっては推測しやすい」というものです。

パスワードの必要条件

パスワードの必要条件は以下のとおりです。

悪いパスワードの例

悪いパスワードの例としては以下のようなものが考えられます。

良いパスワードの例

良いパスワードの例としては以下のようなものが考えられます。

パスワードの管理

この節では、NIS+ 名前空間でパスワードを管理する方法について説明します。この節では、NIS+ セキュリティシステムと、そのログインパスワードについて十分に理解していることを想定しています (NIS+ セキュリティシステムについては、第 11 章「NIS+ のセキュリティの概要」を参照してください)。


注 –

現在の passwd コマンドでは、以前 nispasswd で行なっていた操作がすべて行えます。NIS+ の名前空間に特有な操作を行うには、passwd -r nisplus を使用します。


nsswitch.conf ファイルの必要条件

passwd コマンドの使用や、パスワードの使用期間に関する設定を正しく行うには、nsswitch.conf ファイル中の passwd エントリがすべてのマシンにおいて正しくなければなりません。passwd コマンドが「パスワード情報をどこに要求するか」および「パスワード情報をどこで更新するか」は、このエントリによって決定されます。

passwd エントリの設定として考えられるのは、以下の 5 種類だけです。


注意 – 注意 –

使用しているネットワークのすべてのマシン上に存在する nsswitch.conf ファイルは、必ず上記の passwd 構成のうちの 1 つを使用していなければなりません。別の方法で、passwd エントリを構成した場合、ユーザーがログインできない可能性があります。


nispasswd コマンド

現在の passwd コマンドでは、以前 nispasswd で行なっていた操作がすべて行えます。コマンド行で実行するときは、nispasswd ではなく passwd を使用します。

旧バージョンとの互換性を確保するため、nispasswd も完全な形で残っている点に注意してください。

yppasswd コマンド

現在の passwd コマンドでは、以前 yppasswd で行なっていた操作がすべて行えます。コマンド行で実行するときは、yppasswd ではなく passwd を使用します。

旧バージョンとの互換性を確保するため、yppasswd も完全な形で残っている点に注意してください。

passwd コマンド

passwd コマンドでは、パスワードに関する様々な操作が行えます。現在の passwd コマンドは、nispasswd コマンドの代わりとして使用できます。従来 nispasswd で行なっていた操作にも、passwd コマンドを使用するようにしてください。passwd コマンドのフラグ、オプション、引数の詳細は、マニュアルページを参照してください。

一般ユーザーが passwd コマンドで行える操作には以下のものがあります。

管理者が passwd コマンドで行える操作には以下のものがあります。

passwd コマンドと nsswitch.conf ファイル

passwd などのコマンドがパスワード情報をどこから得て、どこに保存するのかということは、nsswitch.conf ファイルで設定します。nsswitch.conf ファイルの passwd エントリの設定に使用する文字列はそれぞれ以下のことを意味します。

passwd -r オプション

passwd コマンドの -r nisplus-r nis-r files といった引数は、nsswitch.conf ファイルの設定よりも優先されます。これらの引数をつけて passwd コマンドを実行すると、「nsswitch.conf ファイルより優先される」ということを知らせる警告メッセージが表示されます。警告メッセージ表示後も操作を続行すると、nsswitch.conf ファイルのシーケンスは無視され、-r によって指定された場所でパスワード情報の更新が行われます。

たとえば、nsswitch.conf ファイルにおいて passwd エントリが以下のように指定されている場合を考えてみましょう。


passwd: files nisplus

この場合、passwd コマンドを -r を使用しないで実行すると、パスワード情報のソース (情報の獲得、変更、保存が行われる場所) は /etc/passwd ファイルになります。しかし -r nisplus オプションを使用して passwd コマンドを実行すると、パスワード情報のソースは /etc/passwd ファイルから NIS+ の passwd テーブルに変更されます。

-r オプションは、「検索シーケンスが誤っていて nsswitch.conf ファイルが使用できない」という場合にのみ使用するようにします。たとえば、2 カ所に格納されているパスワード情報を更新する必要がある場合、1 つ目については nsswitch.conf ファイルで指定されているソースを使用できますが、2 つ目については別のソースを使用する必要があります。

変更しようとすると、次のメッセージが表示されます。


Your specified repository is not defined in the nsswitch file!

このメッセージは、「パスワード情報の更新は、-r オプションで指定された場所で行なわれるが、nsswitch.conf ファイルでその場所がソースとして使用されるまでは更新の影響がまったく現れない」ということを意味します。たとえば、nsswitch.conf ファイルにおいて passwd: files nis という指定が行われているときに、-r nisplus オプションでパスワード使用期間の設定を行なったとします (つまり設定は NIS+ の passwd テーブルにおいて行われることになる)。パスワード情報のソースが nsswitch.conf ファイルにおいて NIS+ passwd テーブル以外の場所に指定されているため、この設定による影響はまったく現れません。

passwd コマンドと NIS+ 環境

この章で「NIS+ 環境」とは、「nsswitch.confファイルでパスワード情報のソースが nisplus に設定されている」、「passwd コマンドが -r nisplus という引数をつけて実行されている」という状況を指します。

passwd コマンドと資格

passwd コマンドは NIS+ 環境 (前節参照) で実行された場合、ユーザーに資格があってもなくても機能するよう設計されています。ただし資格のないユーザーが passwd コマンドで行えるのは、自らのパスワードの変更だけです。他のパスワード操作は、資格のある (認証された)、必要なアクセス権を持った (承認された) ユーザーだけが行えます。

passwd コマンドとアクセス権

承認およびアクセス権については、ユーザーがすべて適切な資格を持っているという前提で説明をします。

通常の NIS+ 環境では、passwd テーブルの所有者はいつでも制約なしにパスワード情報の変更ができます (デフォルトの場合)。つまり passwd テーブルの所有者は、読み取り、作成、変更、削除に関して完全に承認されている (アクセス権を与えられている) ということになります。また所有者は以下のことも行えます。


注 –

与えられているアクセス権には関わりなく、その他クラス、未認証クラスのユーザーはすべてパスワードの使用期間の制約に従います。つまり、自分のパスワードであろうと他のユーザーのパスワードであろうと、作成されてから一定の時間が経過するまでは変更ができないということです。また有効期間の過ぎたパスワードを変更しなければならないという点も、グループ、その他、未認証といったクラスのメンバーすべてに共通です。しかしパスワード使用期間に関する上記のような制約は、passwd テーブルの所有者には適用されません。


NIS+ 環境で passwd コマンドを使用する場合、行おうとする操作に関する承認 (アクセス権) が必要です。

表 16–1 passwd コマンドに関するアクセス権

操作の種類 

必要な権利 

アクセス対象となるオブジェクト 

情報を表示する 

読み取り権 

passwd テーブルのエントリ

情報を更新する 

変更権 

passwd テーブルのエントリ

情報を追加する 

変更権 

passwd テーブル

passwd コマンドと鍵

NIS+ 環境で passwd コマンドを使用して主体のパスワードを変更しようとすると、主体の非公開鍵が cred テーブル中で更新されます。

passwd コマンドと他のドメイン

他のドメインの passwd テーブルに対して操作をするには、passwd コマンドを以下のように使用します。


passwd [options] -D domainname

nistbladm コマンド

nistbladm は、passwd テーブルをはじめとする NIS+ テーブルに関する情報を作成、変更、表示するのに使用するコマンドです。


注意 – 注意 –

nistbladm コマンドを使用してパスワード操作をするには、nistbladmpasswd テーブルのシャドウ列に適用する必要があります。nistbladm をシャドウ列に適用するのは複雑で微妙な作業になります。passwd コマンド、admintool、または Solstice AdminSuite ツールで容易に行える操作には、nistbladm コマンドを使用しない方が良いでしょう。


つまり以下のような操作には、nistbladm ではなく passwd コマンドや Solstice AdminSuite ツールを使用してください。

nistbladm コマンドには以下の機能があります。

nistbladm と シャドウ列のフィールド

nistbladm コマンドでは、シャドウ列の様々なフィールドの値を指定することによってパスワードパラメータの設定を行います。シャドウ列のフィールドの値は、以下のような形式で設定します。

この図は、シャドウ列のフィールドの形式を示します。

引数の意味は、それぞれ以下のとおりです。


注意 – 注意 –

nistbladm を使用して passwd テーブルのシャドウ列を設定する場合、すべてのフィールドに適切な値を指定する必要があります。空白のまま残したり、0 を入力したりしても「変更なし」という意味にはなりません。


ユーザー amy が、パスワードの最終変更日が 1995 年 5 月 1 日 (1970 年 1 月 1 日から数えて 9246 日目)、パスワード作成後の変更禁止期間が 7 日、パスワードの有効期間が 30 日、「パスワードが間もなく無効になる」という警告が表示されるのがパスワード作成から 26 日目以降、ログインとログインの間隔の最大値が 15 日、アカウントの有効期限が (1970 年 1 月 1 日から) 9255 日目という設定にするには、以下のように入力します。

nistbladm と日数

パスワードの使用期間に関するパラメータは、日数で表されるものがほとんどです。日数を指定する際には以下の規則を守る必要があります。

最終変更日、期限のどちらのフィールドも、入力するのは 1970 年 1 月 1 日から数えた日数です。たとえば、下記のようになります。

表 16–2 1970 年 1 月 1 日からの日数

日付 

日数 

1970 年 1 月 1 日 

1970 年 1 月 2 日 

1971 年 1 月 2 日 

365 

1997 年 1 月 1 日 

9863 

関連コマンド

passwd および nistbladm コマンドと類似の機能を持つコマンドは他にもあります。それぞれについて表 16–3 にまとめてあります。

表 16–3 関連コマンド

コマンド名 

説明 

yppasswd

現在は passwd コマンドにリンク。yppasswd を起動すると passwd コマンドが起動される

nispasswd

現在は passwd コマンドにリンク。nispasswd を起動すると passwd コマンドが起動される

niscat

テーブルの内容を表示するのに使用 

パスワード情報の表示

ドメイン中のユーザーのパスワード情報を表示するには、passwd コマンドを使用します。情報は、全ユーザーについて同時に表示することも、ユーザーごとに表示することもできます。

自分のパスワード情報


passwd -s

ドメインの全ユーザーの情報


passwd -s -a

個々のユーザー


passwd -s username

表示できるのは、エントリおよび列のうち読み取り権を持っているものだけです。エントリの表示形式は以下のとおりです。

表 16–4 NIS+ パスワード情報表示の形式

フィールド 

説明 

参照箇所 

username

ユーザーのログイン名 

 

status

パスワードの状態。PS は、そのアカウントにパスワードがあることを示す。LK は、そのパスワードがロックされていることを示す。NP は、そのアカウントにパスワードがないことを示す 

パスワードのロック

mm/dd/yy

パスワードが最後に変更された日付 (GMT で表す) 

 

min

パスワード作成後の変更禁止期間 (日数) 

パスワードの変更禁止期間の設定

max

パスワードの有効期間 (日数) 

パスワードの有効期間の設定参照

warn

「パスワードが間もなく無効になる」という警告が表示されるまでの日数 

警告期間の設定参照

expire

パスワードの有効期限 (日付) 

パスワード使用権の有効期限参照

inactive

ログインとログインの間隔の最大値 (日数)。ログインとログインの間隔がここで指定した日数を超えると、ログインができなくなる 

ログインの間隔の最大値の指定参照

別のドメインの passwd テーブルのエントリを表示するには、-D オプションを使用します。

ドメイン中の全ユーザー


passwd -s -a -D domainname

個々のユーザー


passwd -s -D domainname username

パスワードの変更

新しいパスワードを作成するときは、パスワードの必要条件に示された必要条件を満たすようにします。

自分のパスワードの変更

自分のパスワードを変更するには、以下のように入力します。


station1% passwd

「古いパスワードの入力」、「新しいパスワードの入力」、「新しいパスワードの再入力 (確認のため)」という順にプロンプトが表示されるので、それに従って作業します。

他人のパスワードの変更

他人のパスワードを変更するには、以下のように入力します。

同じドメイン内の他のユーザー


passwd username

他のドメインのユーザー


passwd -D domainname username 

NIS+ 環境 (passwd コマンドと NIS+ 環境参照) で passwd コマンドを使用して他人のパスワードを変更する場合、passwd テーブルにおける該当ユーザーエントリへの変更権が必要になります。つまり、該当する passwd テーブルに対して変更権を持つグループのメンバーになる必要があります。このとき、該当ユーザーの古いパスワードや自分のパスワードを入力する必要はありません。確認のため新しいパスワードの入力を求めるプロンプトが 2 回表示されます。一致しない場合は、さらに 2 回入力する必要があります。

root のパスワードの変更

passwd コマンドで root のパスワードを変更した場合は、その直後に chkey -p を実行する必要があります。chkey -p を実行しないと、root で正しくログインできなくなります。

root のパスワードの変更手順は以下のとおりです。

  1. root でログインします。

  2. passwd コマンドで root のパスワードを変更します。

    nispasswd は使用しないでください。

  3. chkey -p を実行します。

    必ず -p オプションを使用します。

パスワードのロック

NIS+ 環境 (passwd コマンドと NIS+ 環境を参照) で passwd コマンドを使用してパスワードのロックができるのは、該当ユーザーの passwd テーブル中のエントリに対する変更権を持っている管理者 (グループのメンバー) です。パスワードがロックされると、そのアカウントは使用できなくなります。また、パスワードがロックされているユーザー名を使ってログインをしようとすると、「Login incorrect」というメッセージが表示されます。

該当ユーザーがすでにログインしている場合、パスワードをロックすることによる影響は現れないという点に注意してください。ただ、パスワードの入力が必要になる loginrloginftptelnet などの機能は使用できなくなります。

すでにログインしているユーザーのパスワードをロックしても、そのユーザーが passwd コマンドでパスワードを変更するとロックは解除されます。

以下のようなことが有効です。

パスワードのロックは以下のように行います。


passwd -l username

パスワードロックの解除

パスワードのロックは、パスワードを変更すれば解除されます。この場合、「変更」とは必ずしもパスワードを新しいものに変えるという意味ではなく、パスワード変更の手順を踏むということです (元とまったく同じパスワードに「変更する」ということも可能です)。ただし、新しいパスワードに変更することも可能です。

たとえば、jody というユーザーのパスワードのロックを解除するには、以下のように入力します。


station1% passwd jody

パスワードの使用期間に関する設定

設定により、パスワードの定期的な変更をユーザーに強制できます。

たとえば、以下のような設定が可能です。

さまざまな最大日数や期間に到達していても、それまでにすでにログインしているユーザーは、上記の機能には影響されないことを覚えておいてください。そのまま普通に動作し続けます。

影響が現れるのは、次回のログイン時か、ログインを必要とする機能 (以下に例を示す) を使用した時です。

パスワードの使用期間に関する設定は、ユーザーごとに行います。パスワードの使用期間に関する必要条件はユーザーによって違っている可能性があります。ユーザーは、一般のデフォルト設定を適用することもできます。パラメータについての詳細については、パスワードの使用期間に関する設定を参照してください。

パスワードの強制的な変更

次回ログイン時のパスワード変更をユーザーに強制するには、以下の 2 種類の方法があります。

使用期間に関する設定を引き続き有効にする場合


passwd -f username

使用期間に関する設定を解除する場合


passwd -x 0 username

パスワードの有効期間の設定

パスワードの有効期間を設定するには、passwd コマンドの引数 max を使用します。有効期間は日数で指定します。有効期間が終了した後は、新しいパスワードをユーザーが作成しなければなりません。有効期間終了後に同じパスワードでログインしようとしても、「Your password has been expired for too long」というメッセージが表示され、新しいパスワードを作成しない限りログインを完了できません。

引数 max は以下の形式で使用します。


passwd -x max username 

引数の意味は、それぞれ以下のとおりです。

たとえば、schweik というユーザーに 45 日ごとのパスワード変更を強制するには、以下のように入力します。


station1% passwd -x 45 schweik

パスワードの変更禁止期間の設定

パスワード作成後の変更禁止期間を設定するには、引数 min を使用します。変更禁止期間が終了しないうちにパスワードを変更しようとすると、「Sorry less than N days since the last change」というメッセージが表示されます。

引数 min は以下の形式で使用します。


passwd -x max  -n min username

引数の意味は、それぞれ以下のとおりです。

たとえば、ユーザー eponine のパスワードの有効期間を 45 日間、変更禁止期間を 7 日間に設定する場合は、以下のように入力します。


station1% passwd -x 45 -n 7 eponine

min 引数には以下の規則があります。

警告期間の設定

パスワードの有効期限以前の一定期間、ログイン時に「Your password will expire in N days」(N は日数) というメッセージが表示されるようにするには、引数 warn を使用します。

たとえば、パスワードの有効期限が 30 日間 (引数 -max で指定する) で、warn が 7 に設定されている場合、パスワード作成後 24 日目のログイン時に「Your password will expire in 7 days」という警告メッセージが表示されます。また翌日 (パスワード作成後 25 日目) には、警告メッセージは「Your password will expire in 6 days」となります。

警告メッセージは、電子メールで送信されるものでも、ユーザーのコンソールウィンドウに表示されるものでもないという点に注意してください。表示されるのは、ユーザーのログイン時のみです。つまり指定の期間ユーザーがログインしなければ警告メッセージは表示されません。

warn の値は、max の値との「関連によって機能する」ものであるという点に注意してください。つまり、「max によって設定される有効期限から逆算されるもの」ということです。warn の値が 14 であれば、「Your password will expire in N days」というメッセージの表示が開始されるのは、有効期限の 2 週間前です。

warn の値は max の値との関連によって機能します。max 値の指定がある場合のみ有効です。そのため、max 値の指定がない場合は、warn 値は意味がなくなります。

引数 warn は以下の形式で使用します。


passwd -x max  -w   warn username

引数の意味は、それぞれ以下のとおりです。

たとえば、nilovna というユーザーの、パスワードの有効期間を 45 日間とし、警告メッセージの表示を有効期限の 5 日前から開始する場合、以下のように入力します。


station1% passwd -x 45 -w 5 nilovna

warn 引数には以下の規則があります。


注 –

Solstice AdminSuite を使用して、warm 値をユーザーのパスワード用に設定することもできます。


パスワードの使用期間に関する設定の解除

ユーザーのパスワードの有効期間を解除するには、以下の 2 つの方法があります。

有効期間を取り消す。パスワードはそのまま使用できる


passwd -x -1 username 

次回ログイン時にパスワードを強制的に変更させた後、有効期間を取り消す


passwd -x 0 username

上記の方法では、max の値を 0 か -1 に設定する (詳細については、パスワードの有効期間の設定を参照)

たとえば、ユーザー mendez のパスワードを次回ログイン時に強制的に変更させ、その後パスワードの有効期間を解除するには、以下のように入力します。


station% passwd -x 0 mendez

注 –

Solstice AdminSuite を使用して、このパラメータをユーザーのパスワード用に設定できます。


この値を設定するには、nistbladm コマンドを使用できます。たとえば、ユーザー otsu のパスワードの有効期間を取り消し、変更の必要がないようにするには、以下のように入力します。


station1% nistbladm -m `shadow=0:0:-1:0:0:0:0' [name=otsu],passwd.org_dir

nistbladm コマンドの使用方法の詳細については、nistbladm コマンドを参照してください。

パスワード使用権の有効期限

引数 expire には「ユーザーのパスワード使用権がいつ無効になるか」を日付で指定します。ユーザーのパスワード使用権が無効になると、そのユーザーは有効なパスワードを所有できなくなります。該当ユーザーのログインをこの日以降禁止し、システムから締め出します。

たとえば、ユーザー pete の有効期限を 1997 年 12 月 31 日に設定すると、どんなパスワードを使用しても 1998 年 1 月 1 日以降 pete という ID ではログインができなくなります。ログインをしようとしても、「Login incorrect」というメッセージが表示されます。

「有効期間」と「有効期限」の違い

パスワード使用権の有効期限は、パスワードの有効期間とは異なっています。

有効期限の設定

パスワード使用権が無効になっても、その影響が現れるのは、該当ユーザーがログインをしようとするときだけです。該当ユーザーがすでにログインしていた場合には、パスワード使用権が無効になったことによる影響は現れません。ただし、rlogintelnet などログインを必要とする機能は使用できなくなり、いったんログアウトするとログインできなくなります。以上のことから、パスワード使用権に有効期限を設ける場合、毎日のワークセッション終了時には必ずログアウトするようユーザー全員に指示してください。


注 –

Solstice AdminSuite ツールを使用して有効期限の設定ができるときは、nistbladm を使用しないでください。Solstice AdminSuite ツールの方が使いやすく、設定を誤る可能性が低くなります。


nistbladm コマンドでパスワード使用権の有効期限を指定するには、以下のように入力します。


nistbladm -m `shadow=n:n:n:n:n:n6:n' [name=login],passwd.org_dir

引数の意味は、それぞれ以下のとおりです。

たとえば、ユーザー pete の有効期限を 1995 年 12 月 31 日に設定する場合は、以下のように入力します。


station1% nistbladm -m `shadow   =n:n:n:n:n:9493:n' \ 
[name=pete],passwd.org_dir 

注意 – 注意 –

空白のフィールドや、値の正しくないフィールドがあると機能しません。


パスワード使用権の有効期限の解除

有効期限を過ぎたパスワード使用権を再び使用できる状態にするには、nistbladm コマンドを使用して該当フィールド (n6) に -1 を指定します。例を以下に示します。


station1% nistbladm -m `shadow=   n:n:n:n:n:-1:n' \ 
[name=huck],passwd.org_dir

また、nistbladm で「n6」フィールドを将来の日付に設定し直すという方法も使用できます。

ログインの間隔の最大値の指定

引数 inactive には、「ログインからログインまでの間隔を最大何日あけることができるか」を指定します。この引数に指定された日数を超えてログインが行われなかった場合、該当ユーザーはマシンにログインできなくなります。ログインしようとすると、「Login incorrect」というメッセージが表示されます。

この設定はネットワーク全体ではなく、個々のマシンに対して行われます。したがって、NIS+ 環境においてログイン間隔の最大値を設定するには、該当ユーザーのエントリをホームドメインの passwd テーブルに指定します。この設定はネットワーク上のすべてのマシンで該当ユーザーに対して適用されます。

たとえば、ユーザー sam の最大ログイン間隔を 10 日間に設定した場合を考えてみましょう。sam は 1 月 1 日にマシン A とマシン B にログインをした後、ログアウトしました。続いて 3 日後の 1 月 4 日、sam はマシン B にログインした後ログアウトしました。さらに 9 日後の 1 月13日になると、sam はマシン B にはログインできますがマシン A にはログインできません。マシン B においては最終ログインから 9 日間しか経過していませんが、マシン A においては 13 日間が経過しているからです。

最大ログイン間隔の設定は、まだ一度もログインをしていないマシンには適用されないという点に注意してください。一度もログインをしていないマシンには、引数 inactive の設定および他のマシンへのログイン実績がどのようになっていようとログインが可能です。


注意 – 注意 –

「毎日の作業終了時には必ずログアウトをせよ」という指示がユーザーに対して行われていない場合、最大ログイン間隔の設定はしないでください。この設定はログインにだけ関係しており、他の形でシステムを使用する場合のことは考慮されていません。仮にユーザーが作業終了後もログインしたままの状態でシステムを放置しておくと、ログインが発生しないため指定のログイン間隔をすぐ超えてしまいます。指定のログイン間隔を超えた状態でリブートやログアウトをすると、再びログインできなくなります。



注 –

Solstice AdminSuite ツールを使用して最大ログイン間隔の設定ができるときは、nistbladm を使用しないでください。Solstice AdminSuite ツールの方が使いやすく、設定を誤る可能性が低くなります。


最大ログイン間隔の設定を nistbladm コマンドで行う場合は、以下の形式を使用します。


nistbladm -m `shadow= n:n:n:n:n5:n:n' [name=login], passwd.org_dir

引数の意味は、それぞれ以下のとおりです。

たとえば、ユーザー sam の最大ログイン間隔を 7 日間に指定する場合は、以下のように入力します。


station1% nistbladm -m `shadow= n:n:n:n:n:7:n:n' [name=sam],passwd.org_dir 

最大ログイン間隔の設定を解除する (ログインできなくなったユーザーを再びログインできるようにする) には、nistbladminactive を -1 に指定します。

パスワードの使用規則の設定 (およびそのデフォルト)

パスワードの使用規則に関する設定およびそのデフォルトについて説明します。

/etc/defaults/passwd ファイル

パスワード情報の獲得先が nsswitch.conf ファイルで files に指定されているすべてのユーザーのパスワードについて、4 つのデフォルト設定を行うためのファイルです。/etc/defaults/passwd ファイルで行われたデフォルト設定は、/etc ディレクトリのファイルからパスワード情報を獲得しているユーザーにだけ適用されます。パスワード情報の獲得先が NIS マップあるいは NIS+ テーブルであるようなユーザーには適用されません。NIS+ サーバー上の /etc/defaults/passwd ファイルは、パスワード情報をローカルファイルから獲得しているローカルユーザーにだけ影響を与えます。NIS+ 環境または、nsswitch.conf ファイルでパスワード情報の獲得先が nisnisplus に設定されているユーザーには影響を与えません。

/etc/defaults/passwd ファイルで行われる「パスワードに関する 4 つのデフォルト設定」とは、具体的には以下のものを指します。

/etc/defaults/passwd ファイルのデフォルト設定には、以下の規則があります。

/etc/defaults/passwd ファイルには、デフォルトでは以下のエントリがすでに含まれています。


MAXWEEKS= 
MINWEEKS= 
PASSLENGTH=  

設定に必要な作業は、= の後に適切な数字を入力することだけです。= の後に数字が入っていないエントリは無効です。たとえば、MAXWEEKS に 4 を指定するには、以下のように入力します。


MAXWEEKS=4 
MINWEEKS= 
PASSLENGTH=  

有効期限 (週単位)

/etc/defaults/passwd ファイルの MAXWEEKS により、ユーザーのパスワードが有効な有効期限を週単位で設定できます。ユーザーのパスワードの有効期限を週単位で指定するためのエントリです。以下に示すとおり、"=" の後に適切な数字を入力するだけで指定ができます。


MAXWEEKS=N

N は週の数です。たとえば、MAXWEEKS=9 というようにします。

変更禁止期間 (週単位)

/etc/defaults/passwd ファイルの MINWEEKS デフォルト値には、ユーザーのパスワードの変更禁止期間を週単位で設定できます。パスワードの変更禁止期間を週単位で指定するためのエントリです。以下に示すとおり、"=" の後に適切な数字を入力するだけで指定ができます。


MINWEEKS=N

N は週の数です。たとえば、MINWEEKS=2 というようにします。

警告期間 (週単位)

/etc/defaults/passwd ファイルに WARNINWEEKS デフォルト値を追加し、パスワードの有効期間が切れて無効になる前に警告を表示する期間を、週単位で設定できます。たとえば、MAXWEEKS デフォルト値に 9 を設定したときに、パスワードが無効になる前の 2 週間に警告する場合は、MAXWEEKS7 を設定します。

MAXWEEKS のデフォルトを設定しない限り、WARNWEEKS のデフォルトを設定することはありません。

WARNWEEKS は、 MAXWEEKS に指定された有効期限ではなく、パスワードの最終変更日を起点と考えて設定することに注意してください。したがって WARNWEEKS に、MAXWEEKS 以上の値を設定することはできません。

WARNWEEKS のデフォルトは、MAXWEEKS のデフォルトも一緒に設定されていない限り無効です。

WARNWEEKS は、以下に示すとおり "=" の後に適切な数字を入力するだけで指定ができます。


WARNWEEKS=N

N は週の数です。たとえば、WARNWEEKS=1 というようにします。

最低文字数

passwd コマンドには、デフォルトで「パスワードの長さは 6 文字以上にする」という規則があります。しかし、/etc/defaults/passwd ファイルの PASSLENGTH を使用することによってこの規則を変更することが可能です。

パスワードの最低文字数を 6 以外の値にするには、以下に示すとおり PASSLENGTH= の後に適切な値を入力します。


PASSLENGTH=N

N は文字数です。たとえば、PASSLENGTH=7 というようにします。

パスワード変更時の制限

パスワード変更の際の入力試行回数と所要時間には、制限を設定できます。設定は rpc.nispasswdd デーモン起動時の引数で行います。

入力試行回数を制限したり、タイムウィンドウを設定したりすることにより、「権利のない人が、パスワードを試行錯誤で知ることのできるものに変えてしまう」という危険をある程度 (完璧ではない) 回避できます。

試行回数の制限

パスワード変更時の誤入力試行回数を制限するには、rpc.nispasswdd-a number という引数 (number は試行回数) を指定します。rpc.nispasswdd を起動するには、NIS+ マスターサーバー上にスーパーユーザー特権が必要です。

誤入力試行回数を 4 に制限する (デフォルトは 3) 場合、以下のように入力します。


station1# rpc.nispasswdd -a 4

この場合、4 回目のパスワード入力が失敗すると、「Too many failures - try later」というメッセージが表示され、一定の時間が経過するまで該当ユーザーのパスワード変更はできなくなります。

所要時間の制限

パスワード変更時の所要時間 (ログインの所要時間) を制限するには、rpc.nispasswdd-c minutes という引数 (minutes には時間を分単位で指定する) を指定します。rpc.nispasswdd を起動するには、NIS+ マスターサーバー上にスーパーユーザー特権が必要です。

たとえば、ユーザーが 2 分以内にログインしなければならないように設定するには、以下のように入力します。


station1# rpc.nispasswdd -c 2

この場合、2 分以内にパスワードの変更に成功しないとエラーメッセージが表示され、一定の時間が経過するまで該当ユーザーのパスワード変更はできなくなります。

第 17 章 NIS+ グループの管理

この章では、NIS+ グループとその管理方法について説明します。


注 –

NIS+ セキュリティグループのタスクには、Solstice AdminSuite ツールを利用するともっと簡単に実行できるものもあります。



注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


Solaris グループ

Solaris/NIS+ 環境には、UNIX グループ、ネットグループ、NIS+ グループの 3 種類のグループがあります。

NIS+ グループ

NIS+ グループは、NIS+ オブジェクトに対するアクセス権を NIS+ の主体に割り当てるために考えられた概念です。(これらのアクセス権については、第 11 章「NIS+ のセキュリティの概要」を参照してください。NIS+ グループに関する情報は、NIS+ groups_dir ディレクトリオブジェクト内のテーブルに格納されます。各グループは個別のテーブルを持ち、グループ名とテーブル名はそれぞれ対応します。たとえば、admin グループに関する情報は admin.groups_dir テーブルに格納されます。

NIS+ グループを作成したら、どれか 1 つには admin という名前を付けることをお勧めします。そして、この admin グループには、NIS+ アクセス権を持たせるユーザーを割り当ててください。必ずしも admin という名前にしなければならないわけでもないのですが、NIS+ マニュアルでは、NIS+ 管理権限を持たせるユーザーのグループを admin と呼んでいます。異なるユーザーと異なる権限を組み合わせて複数の NIS+ グループを作成することもできます。


注 –

NIS+ グループのメンバー (ユーザー) の管理には、nisgrpadm コマンドを使います。グループテーブルの管理には、nisls コマンドと nischgrp コマンドを使います。グループテーブルに対して nistbladm コマンドを使うことはできないので注意してください。


NIS+ グループ関連のコマンドとその構文、オプションの詳細は、nis+(1) のマニュアルページを参照してください。

関連コマンド

nisgrpadm コマンドを使ってほとんどのグループ管理作業を実行できますが、グループ管理に関連するコマンドには次のものがあります。

表 17–1 グループに関連するコマンド

コマンド名 

説明 

参照する項目 

nissetup

ドメインのグループが格納されるディレクトリである groups_dir を作成する

 

nisls

groups_dir ディレクトリの内容、つまり、ドメイン内の全グループを表示する。各グループは groups_dir に個別のテーブルを持ち、グループ名とテーブル名はそれぞれ対応する

nisls コマンドでディレクトリを表示する

nischgrp

グループを任意の NIS+ オブジェクトに割り当てる 

オブジェクトまたはエントリグループの変更

niscat

NIS+ グループのオブジェクト属性とメンバーを表示する 

NIS+ グループについて niscat を使用する

nisdefaults

新しい NIS+ オブジェクトに割り当てられるグループを表示する 

NIS+ デフォルトの表示 - nisdefaults コマンド

以上のコマンドの詳細 (構文、オプションなど) は、nis+(1) のマニュアルページを参照してください。


注 –

NIS+ グループテーブルに対して nistbladm コマンドを使うことはできません。


NIS+ グループメンバーのタイプ

NIS+ グループには明示的 (explicit)、暗黙的 (implicit)、および再帰的 (recursive) という 3 タイプのメンバーがあります。またメンバー以外の主体にも、同様の 3 つのタイプがあります。メンバーのタイプは、メンバーを追加、削除する際に使用されます (nisgrpadm コマンドを参照)。

メンバーのタイプ

NIS+ グループは、明示的、暗黙的、および再帰的の 3 つすべてのカテゴリでのメンバー以外も受け付けます。メンバー以外の主体とは、「メンバーになることができるが、指定によってグループから排除されているもの」を指します。

メンバー以外の主体のタイプ

メンバー以外の主体はマイナス記号で始まり、メンバー主体と区別されます。

グループの構文

同じ主体について「グループに含まれる」という指定と「グループに含まれない」という指定があった場合、指定の順序に関係なく「含まれない」という指定が優先されます。たとえば、同じ主体について「グループに含まれる暗黙的なドメインのメンバーである」という指定と「グループに含まれない再帰的なグループのメンバーである」という指定の両方がある場合、後者の方が優先されます。

nisgrpadm コマンドを使用する場合、主体のタイプは表 17–2 のように指定します。

表 17–2 主体のタイプの指定方法

主体のタイプ 

構文 

明示的なメンバー 

username.domain

暗黙的なメンバー 

*. domain

再帰的なメンバー 

@groupname.domain

メンバー以外 (明示的なもの) 

-username.domain

メンバー以外 (暗黙的なもの) 

-*. domain

メンバー以外 (再帰的なもの) 

@groupname.domain

NIS+ グループについて niscat を使用する

niscat -o コマンドを使用して、NIS+ グループのオブジェクト属性を表示できます。

グループのオブジェクト属性を表示する方法

グループのオブジェクト属性を表示するには、そのグループが格納されている groups_dir ディレクトリへの読み取り権が必要です。ここでは、niscat -o とグループの完全指定名を使用します。この完全指定名には、次に示すようにその groups_dir サブディレクトリを含んでいなければなりません。


niscat -o group-name.groups_dir.domain-name

たとえば :


rootmaster# niscat -o sales.groups_dir.doc.com. 
Object Name : sales
Owner : rootmaster.doc.com.
Group : sales.doc.com.
Domain : groups_dir.doc.com.
Access Rights : ----rmcdr---r---
Time to Live : 1:0:0
Object Type : GROUP
Group Flags :
Group Members : rootmaster.doc.com.
  topadmin.doc.com.
  @.admin.doc.com.
  *.sales.doc.com. 

注 –

nisgrpadm -1 コマンドを使うと、メンバーリストはさらに整理されて表示されます。


グループ属性のいくつかは、環境変数 NIS_DEFAULTS から継承されます。ただし、このグループの作成時に環境変数が無効になっている場合を除きます。Group Flags フィールドは、現在使用されていません。グループメンバーのリストでは、* 記号はメンバーのドメインを、@ 記号はメンバーのグループをそれぞれ示します。

nisgrpadm コマンド

nisgrpadm コマンドは、NIS+ グループを作成したり、削除したり、さまざまな管理作業を実行します。nisgrpadm コマンドを使用するには、操作に必要なアクセス権を取得しなければなりません。

表 17–3 nisgrpadm に必要なアクセス権

操作の種類 

必要なアクセス権 

アクセス対象となるオブジェクト 

グループの作成 

作成 

groups_dir ディレクトリ

グループの削除 

削除 

groups_dir ディレクトリ

メンバーの表示 

読み取り 

グループオブジェクト 

メンバーの追加 

変更 

グループオブジェクト 

メンバーの削除 

変更 

グループオブジェクト 

nisgrpadm には、グループ作業用とグループメンバー作業用に 2 つの形式があります。

グループの作成または削除、あるいはメンバーの表示


nisgrpadm -c group-name.domain-name
nisgrpadm -d group-name
nisgrpadm -l group-name

メンバーの追加または削除、あるいはメンバーがグループに所属するかどうかの判定 (member... には、表 17–2 に示した、6 種類のメンバーのどのような組み合わせでも指定できます)。


nisgrpadm -a group-name member... 
nisgrpadm -r group-name member...
nisgrpadm -t group-name member...

作成 (-c) 以外のすべての処理には、部分指定名 group-name を使用できます。ただし、-c オプションの場合でも、nisgrpadm では group-name 引数に groups_dir を使用する必要はありません。実際これは受け付けられません。

NIS+ グループを作成する

NIS+ グループを作成するには、グループのドメインの groups_dir ディレクトリに対する作成権が必要です。-c オプションと完全指定グループ名を使用します。


nisgrpadm -c group-name.domainname

グループを作成すると、指定した名前の NIS+ グループテーブルが groups_dir に作成されます。nisls コマンドを使うと、対応するテーブルが groups_dir に作成されているかどうかを確認できます。また、niscat コマンドを使うと、そのテーブル中のグループメンバーを一覧表示できます。

新しく作成したグループにはメンバーがありません。どのメンバーをどのグループに追加するかについては、NIS+ グループにメンバーを追加するを参照してください。

次の例では、admin という名前の 3 つのグループを作成します。最初のグループは、doc.com. ドメインに作成します。 2 番目のグループは、sales.doc.com. ドメインに作成します。3 番目のグループは、manf.doc.com. に作成します。これらはすべて、それぞれのドメインのマスターサーバーから作成されます。


rootmaster# nisgrpadm -c admin.doc.com.
Group admin.doc.com. created.
salesmaster# nisgrpadm -c admin.sales.doc.com.
Group admin.sales.doc.com. created.
manfmaster# nisgrpadm -c admin.manf.doc.com. 
Group admin.manf.doc.com. created.

作成されるグループは、変数 NIS_DEFAULTS で指定されたオブジェクト属性をすべて継承します。つまり、その所有者、所有グループ、アクセス権、生存期間、および検索パスです。これらのデフォルトを表示するには、nisdefaults コマンドを使用します (第 15 章「NIS+ のアクセス権の管理」を参照)。オプションなしで使用すると、次のように出力されます。


rootmaster# nisdefaults
Principal Name : rootmaster.doc.com.
Domain Name : doc.com.
Host Name : rootmaster.doc.com.
Group Name :
Access Rights : ----rmcdr---r---
Time to live : 12:0:0
Search Path : doc.com.

所有者は Principal Name: フィールドに表示されます。所有者グループは、環境変数 NIS_GROUP を設定した場合にだけ表示されます。たとえば、C シェルを想定して NIS_GROUPfns_admins.doc.com に設定する場合は、次のように入力します。


rootmaster# setenv NIS_GROUP fns_admins.doc.com

もちろん、グループの作成時に -D オプションを使用することによって、これらのデフォルトはどれでも変更できます。


salesmaster# nisgrpadm -D group=special.sales.doc.com.-c 
admin.sales.doc.com. Group admin.sales.doc.com. created.

NIS+ グループを削除する

NIS+ グループを削除するには、グループのドメイン内の groups_dir ディレクトリに対する削除権が必要です。-d オプションを使用します。


nisgrpadm -d group-name

デフォルトドメインが正しく設定されている場合、完全指定グループ名を使用する必要はありません。ただし、別のドメイン内のグループを誤って削除しないように、まず (nisdefaults を使用して) チェックしなければなりません。次の例では test.sales.doc.com. グループを削除します。


salesmaster% nisgrpadm -d test.sales.doc.com.
Group test.sales.doc.com. destroyed.

NIS+ グループにメンバーを追加する

NIS+ グループにメンバーを追加するには、グループオブジェクトに対する変更権が必要です。-a オプションを使用します。


nisgrpadm -a group-name members. . .

NIS+ グループメンバーのタイプの記述どおり、主体 (明示的なメンバー)、ドメイン (暗黙的なメンバー)、およびグループ (再帰的なメンバー) を追加できます。デフォルトドメインに所属するメンバー名またはグループ名は、完全指定する必要がありません。この例では、デフォルトドメイン sales.doc.com. の NIS+ 主体 panzavaljean、および manf.doc.com. ドメインの主体 makebatop-team.sales.doc.com. グループに追加します。


client% nisgrpadm -a Ateam panza valjean makeba.manf.doc.com. 
Added panza.sales.doc.com to group Ateam.sales.doc.com
Added valjean.sales.doc.com to group Ateam.sales.doc.com
Added makeba.manf.doc.com to group Ateam.sales.doc.com

この動作を確認するには、nisgrpadm -l オプションを使用します。「明示的なメンバー」のカテゴリにあるメンバーを探してください。

次の例では、doc.com. ドメイン内のすべての NIS+ 主体を staff.doc.com. グループに追加します。 これは doc.com. ドメイン内のクライアントから入力します。ドメイン名の前にある * 記号とドットに注意してください。


client% nisgrpadm -a Staff *.doc.com.
Added *.doc.com. to group Staff.manf.doc.com.

次の例では、NIS+ グループ admin.doc.com.admin.manf.doc.com. グループに追加します。 これは manf.doc.com. ドメインのクライアントから入力します。グループ名の前にある @ 記号に注意してください。


client% nisgrpadm -a admin @admin.doc.com. 
Added @admin.doc.com. to group admin.manf.doc.com.

NIS+ グループのメンバーを表示する

NIS+ グループのメンバーを表示するには、グループオブジェクトに対する読み取り権が必要です。-l オプションを使用します。


nisgrpadm -l group-name 

次の例では、admin.manf.doc.com. グループのメンバーを表示します。これは manf.doc.com. グループ内のクライアントから入力します。


client% nisgrpadm -l admin
Group entry for admin.manf.doc.com. group:
  No explicit members
  No implicit members:
  Recursive members:
  @admin.doc.com.
  No explicit nonmembers
  No implicit nonmembers
  No recursive nonmembers

NIS+ グループからメンバーを削除する

NIS+ グループからメンバーを削除するには、グループオブジェクトに対する変更権が必要です。-l オプションを使用します。


nisgrpadm -r group-name members. . .

次の例では、Ateam.sales.doc.com グループから NIS+ 主体 allendehugo.manf.doc.com. を削除します。 これは sales.doc.com.domain ドメイン内のクライアントから入力します。


client% nisgrpadm -r Ateam allende hugo.manf.doc.com. 
Removed allende.sales.doc.com. from group Ateam.sales.doc.com.
Removed hugo.manf.doc.com. from group Ateam.sales.doc.com.

次の例では、admin.manf.doc.com. グループから admin.doc.com. グループを削除します。 これは manf.doc.com. ドメイン内のクライアントから入力します。


client% nisgrpadm -r admin @admin.doc.com.
Removed @admin.doc.com. from group admin.manf.doc.com.

NIS+ グループのメンバーかどうかを調べる

ある NIS+ 主体が特定の NIS+ グループのメンバーであるどうかを調べるには、そのグループオブジェクトに対する読み取り権が必要です。-t オプションを使用します。


nisgrpadm -t group-name members. . .

次の例では、NIS+ 主体 topadmin が admin.doc.com. グループに所属するかどうかを調べます。 これは doc.com. ドメイン内のクライアントから入力します。


client% nisgrpadm -t admin topadmin
topadmin.doc.com. is a member of group admin.doc.com.

次の例では、sales.doc.com. ドメインの NIS+ 主体 joadmin.sales.doc.com. グループに所属するかどうかを調べます。 これは doc.com. ドメイン内のクライアントから入力します。


client% nisgrpadm -t admin.sales.doc.com. jo.sales.doc.com. 
jo.sales.doc.com. is a member of group admin.sales.doc.com. 

第 18 章 NIS+ ディレクトリの管理

この章では、NIS+ ディレクトリ オブジェクトとその管理方法について説明します。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ ディレクトリ

NIS+ ディレクトリオブジェクトには、NIS+ ドメインに関連する情報が格納されます。NIS+ ドメインには、それぞれ NIS+ ディレクトリ構造が関連付けられます。NIS+ ディレクトリの詳細については、第 2 章「NIS+ の紹介」を参照してください。

NIS+ ディレクトリ関連のコマンドとその構文、オプションについては、nis+(1) のマニュアルページを参照してください。

ディレクトリに対して niscat コマンドを使用する

niscat -o コマンドを使えば、NIS+ ディレクトリのオブジェクト属性を表示できます。このコマンドを使うには、ディレクトリオブジェクトの読み取り権が必要です。

ディレクトリのオブジェクト属性を表示する

ディレクトリのオブジェクト属性を表示するには、niscat -o とディレクトリ名を使います。


niscat -o directory-name

たとえば :


rootmaster# niscat -o doc.com.
Object Name : doc
Owner : rootmaster.doc.com.
Group :
Domain : Com.
Access Rights : r---rmcdr---r---
Time to Live : 24:0:0
Object Type : DIRECTORY
.
.

nisls コマンドでディレクトリを表示する

nisls コマンドは、NIS+ ディレクトリの内容を表示します。このコマンドを使うには、ディレクトリオブジェクトに対する読み取り権が必要です。

簡潔形式での表示


nisls [-dgLmMR] directory-name

詳細形式での表示


nisls -l [-gm] [-dLMR] directory-name
表 18–1 nisls コマンドのオプション

オプション 

種類 

-d

ディレクトリオブジェクト。ディレクトリの内容を表示するのではなく、別のオブジェクトのように扱う 

-L

リンク。ディレクトリ名が実際にはリンクである場合、コマンドはリンクをたどり、リンクされたディレクトリの情報を表示する 

-M

マスター。マスターサーバーだけから情報を取得する。これによって最新の情報が得られるが、マスターサーバーが使用中の場合は長時間を要することがある  

-R

再帰的。ディレクトリを再帰的に表示する。つまり、ディレクトリ中に他のディレクトリがある場合、それらの内容も表示する 

-l

長形式。情報を長形式で表示する。長形式では、オブジェクトのタイプ、作成時間、所有者、およびアクセス権を表示する 

-g

グループ。情報を長形式で表示するとき、ディレクトリ所有者ではなく、そのグループ所有者を表示する 

-m

変更時間。情報を長形式で表示するとき、ディレクトリ作成時間ではなく、その変更時間を表示する 

ディレクトリの内容を表示する (簡潔形式)

ディレクトリ内容をデフォルトの短形式で表示するには、次に示すオプションの内の 1 つまたは複数と、ディレクトリ名を使います。ディレクトリ名を指定しない場合、NIS+ はデフォルトのディレクトリを使います。


nisls [-dLMR] directory-name

または


nisls [-dLMR]

たとえば、次の nisls の場合は、ルートドメイン doc.com. のルートマスターサーバーから入力します。


rootmaster% nisls doc.com.:
org_dir
groups_dir 

次に、ルートマスターサーバーから入力した例をもう 1 つ示します。


rootmaster% nisls -R sales.doc.com.
sales.doc.com.:
org_dir
groups_dir
groups_dir.sales.doc.com.:
admin
org_dir.sales.doc.com.:
auto_master
auto_home
bootparams
cred
.

ディレクトリの内容を表示する (詳細形式)

ディレクトリの内容を詳細形式で表示するには -l オプション、および次に示すオプションのうちの 1 つまたは複数を使います -g-m のオプションは、表示される属性を変更します。ディレクトリ名を指定しない場合、NIS+ はデフォルトのディレクトリを使います。


nisls -l [-gm] [-dLMR] directory-name

または


nisls -l [-gm] [-dLMR]

次に示すのは、ルートドメイン doc.com. のマスターサーバーから入力した例です。


rootmaster% nisls -l
doc.com.
D r---rmcdr---r--- rootmaster.doc.com. date org_dir
D r---rmcdr---r--- rootmaster.doc.com. date groups_dir

nismkdir コマンド


注 –

この節では、nismkdir コマンドを使用して既存のドメインに非ルートサーバーを追加する方法を説明します。 nisserver スクリプトを使用すれば、より簡単に追加できます。方法については、第 4 章「スクリプトを使用した NIS+ の設定」を参照してください。


nismkdir コマンドは、ルート以外の NIS+ ディレクトリを作成し、これをマスターサーバーに関連付けます。ルートディレクトリを作成するには、nisinit コマンドで説明する nisinit -r コマンドを使います。nismkdir コマンドを使って、複製サーバーを既存のディレクトリに追加できます。

NIS+ ディレクトリを作成するには、いくつかの関連作業のほかに、いくつかの前提条件があります。

ディレクトリを作成するには、以下のように入力します。


nismkdir [-m master-server]  directory-name

複製を既存のディレクトリに追加するには、以下のように入力します。


nismkdir -s replica-server  directory-name
nismkdir -s replica-server  org_dir.directory-name
nismkdir -s replica-server groups_dir.directory-name 

ディレクトリを作成する

ディレクトリを作成するには、(ドメインのマスターサーバー上の) 親ディレクトリに対する作成権が必要です。まず -m オプションを使ってマスターサーバーを定義し、次に -s オプションを使って複製を定義します。


nismkdir -m master  directory
nismkdir -s replica  directory

注意 – 注意 –

nismkdir は必ず (複製サーバーではなく) マスターサーバー上で実行してください。nismkdir を複製サーバー上で実行すると、マスターサーバーおよび複製サーバー間の通信に問題が発生します。


この例では、sales.doc.com. ディレクトリを作成してから、そのマスターサーバー smaster.doc.com. と複製サーバー rep1.doc.com. を指定します。これはルートマスターサーバーから入力します。


rootmaster% nismkdir -m smaster.doc.com. sales.doc.com. 
rootmaster% nismkdir -m smaster.doc.com. org_dir.sales.doc.com.
rootmaster% nismkdir -m smaster.doc.com. groups_dir.sales.doc.com.
rootmaster% nismkdir -s rep1.doc.com. sales.doc.com.
rootmaster% nismkdir -s rep1.doc.com. org_dir.sales.doc.com.
rootmaster% nismkdir -s rep1.doc.com. groups_dir.sales.doc.com.
この図は、親のサーバーを使用する新しいディレクトリを示します。

小規模またはテスト用の名前空間でないかぎりは推奨しませんが、nismkdir コマンドを使えば、独自のディレクトリを指定する代わりに、新しいディレクトリとして親ディレクトリのサーバーを使えます。次に 2 つの例を示します。

この図は、マスターサーバーを指定する新しいディレクトリを示します。

2 番目の例では、sales.doc.com. ディレクトリを作成し、独自のマスターサーバーである smaster.doc.com. を指定します。


rootmaster% nismkdir -m smaster.doc.com. sales.doc.com. 

複製サーバーは指定されないため、nismkdir を再び使用して複製を割り当てるまでは、新しいディレクトリにはマスターサーバーしかありません。sales.doc.com. ドメインがすでに存在する場合は、上記のように nismkdir コマンドを実行すると、salesmaster.doc.com. が新しいマスターサーバーになり、古いマスターサーバーは複製サーバーに格下げされます。

複製サーバーを既存のディレクトリに追加する

この章では nismkdir コマンドを使用して複製サーバーを既存のシステムに追加する方法を説明します。nisserver スクリプトを使用すると、より簡単に追加できます。

以下の点に注意してください。

新しい複製サーバーを既存のディレクトリに割り当てるには、-s オプションと、既存のディレクトリ名を使います。


nismkdir -s replica-server existing-directory-name
nismkdir -s replica-server org_dir. existing-directory-name
nismkdir -s replica-server groups_dir. existing-directory-name

nismkdir コマンドは、ディレクトリがすでに存在することを知っているため、再び作成しません。単に、追加の複製サーバーを割り当てるだけです。たとえば、新しい複製サーバーマシン名が rep1 である場合は、以下のように入力します。


rootmaster% nismkdir -s rep1.doc.com. doc.com. 
rootmaster% nismkdir -s rep1.doc.com. org_dir.doc.com.
rootmaster% nismkdir -s rep1.doc.com. groups_dir.doc.com.

注意 – 注意 –

nismkdir は必ず (複製サーバーではなく) マスターサーバー上で実行してください。nismkdir を複製サーバー上で実行すると、マスターサーバーおよび複製サーバー間の通信に問題が発生します。


上記の説明に従って nismkdir を 3 回繰り返して実行した後は、以下の 3 つのディレクトリでマスターサーバーから nisping を実行する必要があります。


rootmaster# nisping doc.com.
rootmaster# nisping org_dir.doc.com.
rootmaster# nisping group_dir.doc.com.

次のような画面が表示されます。


rootmaster# nisping doc.com.
Pinging replicas serving directory doc.com. :
Master server is rootmaster.doc.com.
 Last update occurred at Wed Nov 18 19:54:38 1995
Replica server is rep1.doc.com.
 Last update seen was Wed Nov 18 11:24:32 1995
 Pinging ... rep1.doc.com

マスターサーバーの cron ファイルに、nisping コマンドが少なくとも 24 時間に一度 (この 3 つのディレクトリに対して) 実行されるよう設定しておくことをお勧めします。

nisrmdir コマンド

nisrmdir コマンドでは、ディレクトリを削除したり、ディレクトリと複製サーバーを切り離すことができます。ディレクトリを削除、またはディレクトリと複製サーバーを切り離すと、その NIS+ ドメインに対しては、マシンは NIS+ 複製サーバーとしては機能しなくなります。

ディレクトリの削除では、まずマスターサーバーと複製サーバーをディレクトリから切り離し、次にそのディレクトリを削除します。

nisrmdir コマンドの実行で問題が生じる場合は、複製の失敗からの NIS+ ディレクトリの削除または分離を参照してください。

ディレクトリを削除する

ディレクトリ全体を削除し、そのマスターサーバーと複製サーバーを切り離すには、nisrmdir コマンドをオプションなしで実行します。


nisrmdir directory-name
nisping  domain

次の例では、doc.com. ディレクトリの下の manf.doc.com. ディレクトリを削除します。


rootmaster% nisrmdir manf.doc.com.
rootmaster% nisping doc.com.

複製サーバーをディレクトリから切り離す

複製サーバーをディレクトリから切り離すには、まず、ディレクトリの org_dirgroups_dir サブディレクトリを削除します。その時は、nisrmdir コマンドに -s オプションを付けて実行します。サブディレクトリが削除されたら、親ドメインに戻って nisping を実行してください。


nisrmdir -s replicanameorg_dir.domain
nisrmdir -s replicanamegroups_dir.domain
nisrmdir -s replicaname domain
nisping domain

次の例では、manfreplica1 サーバーを manf.doc.com. ディレクトリから切り離します。


rootmaster% nisrmdir -s manfreplica1 org_dir.manf.doc.com. 
rootmaster% nisrmdir -s manfreplica1 groups_dir.manf.doc.com.
rootmaster% nisrmdir -s manfreplica1 manf.doc.com.
rootmaster% nisping manf.doc.com.

nisrmdir -s コマンドを実行したが、切り離し対象の複製サーバーがダウンしていた、または通信が途絶していたという場合、「Cannot remove replica name: attempt to remove a non-empty table」というエラーメッセージが出されます。このような場合は、マスターサーバー上で nisrmdir -f -s replicaname コマンドを実行すれば、強制的に切り離すことができます。しかし、nisrmdir -f -s replicaname を使って通信不能な複製を分離する場合には、複製がオンライン状態に戻ったらすぐに、nisrmdir -f -s replicaname を再実行して、複製の /var/nis ファイルシステムを消去する必要があります。nisrmdir -f -s replicaname を再実行しないと、複製がサービスを再開した時に複製上に残された古い情報によって問題が発生します。

nisrm コマンド

nisrm コマンドは、標準の rm システムコマンドと似ています。このコマンドは、ディレクトリと空でないテーブルを除いて、名前空間からすべての NIS+ オブジェクトを削除します。nisrm コマンドを使うには、オブジェクトに対する削除権が必要です。しかし、この権利がない場合、-f オプションを使うことができます。このオプションは、アクセス権がなくても動作を強行しようと試みます。

nisgrpadm -d コマンド (NIS+ グループを削除するを参照) を使えばグループオブジェクトを削除でき、nistbladm -r または nistbladm -R (テーブルを削除するを参照) を使えばテーブルを空にできます。

ディレクトリ以外のオブジェクトは、次のコマンドで削除します。


nisrm [-if] object-name
表 18–2 nisrm 構文オプション

オプション 

種類 

-i

照会。オブジェクトを削除する前に確認を要求する。指定されたオブジェクト名が完全指定されていない場合、このオプションが自動的に使われる

-f

強制。たとえ適切なアクセス権がない場合でも、削除の強行を試みる。nischmod コマンドを使ってアクセス権の変更を試み、再度オブジェクトの削除を試みる

ディレクトリ以外のオブジェクトを削除する

ディレクトリ以外のオブジェクトを削除するには、nisrm コマンドを使い、オブジェクト名を指定します。


nisrm object-name...

次の例では、名前空間からグループとテーブルを削除します。


rootmaster% nisrm -i admins.doc.com. groups.org_dir.doc.com. 
Remove admins.doc.com.? y
Remove groups.org_dir.doc.com.? y

rpc.nisd コマンド

rpc.nisd コマンドは、NIS+ デーモンを起動します。このデーモンは NIS 互換モードで実行でき、NIS クライアントからの要求にも応答できます。NIS+ デーモンを起動するにはアクセス権は不要ですが、そのすべての前提条件と関連作業を知っておく必要があります。前提条件については、rpc.nisd を実行するための前提条件 を参照してください。

デフォルトでは、NIS+ デーモンはセキュリティレベル 2 で起動します。

デーモンを起動するには、以下のように入力します。


rpc.nisd

デーモンを NIS 互換モードで起動するには、以下のように入力します。


rpc.nisd -Y [-B]

DNS 転送機能によって NIS 互換デーモンを起動するには、以下のように入力します。


rpc.nisd -Y -B
表 18–3 rpc.nisd 構文オプション

オプション 

種類 

-S security-level

セキュリティレベルを指定する。0 は「NIS+ セキュリティを使用しない」、2 は「最高レベルの NIS+ セキュリティを使用する」という意味(レベル 1 はサポートされない)

-F

デーモンによって提供されるディレクトリのチェックポイント設定を強行する。この動作は、ディレクトリのトランザクションログを空にして、ディスク空間を解放することになる  

任意のサーバーで NIS+ デーモンを起動するには、このコマンドをオプションなしで実行します。


rpc.nisd

デーモンは、デフォルトであるセキュリティレベル 2 で起動します。

セキュリティレベル 0 でデーモンを起動するには、-S フラグを使います。


rpc.nisd -S 0

NIS 互換の NIS+ デーモンを起動する

ルートマスターを含む任意のサーバーで、NIS+ デーモンを NIS 互換モードで起動できます。-Y (大文字) オプションを使います。


rpc.nisd -Y

サーバーが再起動された場合にデーモンを NIS 互換モードで再起動させるには、サーバーの /etc/init.d/rpc ファイル内で EMULYP=Y を含む行をコメント解除にしなければなりません。

DNS 転送 NIS 互換デーモンを起動する

NIS 互換モードで実行している NIS+ デーモンに DNS 転送機能を追加するには、rpc.nisd-B オプションを追加します。


rpc.nisd -Y -B

サーバーが再起動された場合に、デーモンを DNS 転送 NIS 互換モードで再起動させるには、サーバーの /etc/init.d/rpc ファイル内の EMULYP=-Y を含む行をコメント解除し、次のように変更しなければなりません。


EMULYP -Y -B

NIS+ デーモンを停止する

NIS+ デーモンを停止するには、その実行モードが通常であろうと NIS 互換であろうと、他のデーモンと同じようにプロセスを終了させます。最初にそのプロセス ID を見つけ、次にプロセスを終了させます。次に例を示します。


rootmaster# ps -e | grep rpc.nisd
root 1081 1 61 16:43:33 ? 0:01 rpc.nisd -S 0
root 1087 1004 11 16:44:09 pts/1 0:00 grep rpc.nisd
rootmaster# kill 1081

nisinit コマンド

この節では、nisinit コマンドを使用してマシンクライアントを初期設定する方法について説明します。 nisclient スクリプトを使用すると、より簡単に初期設定できます。NIS+ クライアントマシンの設定 を参照してください。

nisinit コマンドは、NIS+ クライアントまたはサーバーとなるマシンを初期設定します。rpc.nisd コマンドと同様、nisinit コマンドを使うにはアクセス権は不要ですが、その前提条件と関連作業を知っておく必要があります。NIS+ クライアントを初期設定する を参照してください。

クライアントを初期設定する

クライアントを初期設定するには、次の 3 つの方法があります。

前提条件と関連作業は、方法によってそれぞれ異なります。たとえば、ホスト名によってクライアントを初期設定するには、その前にクライアントの /etc/hosts ファイルまたは /etc/inet/ipnodesファイルに、使用するホスト名を登録しなければなりません。また、nsswitch.conf ファイルの hosts の最初の選択肢として、files を指定する必要があります。IPv6 アドレスには、hosts の最初の選択肢としてipnodes を指定してください。nisinit コマンドを使う手順を次にまとめます。

ホスト名によってクライアントを初期設定するには、-c-H のオプションを使い、クライアントがそのコールドスタートファイルを取得するサーバー名を指定します。


nisinit -c -H hostname

コールドスタートファイルによってクライアントを初期設定するには、-c-C のオプションを使い、コールドスタートファイル名を指定します。


nisinit -c -C filename

ブロードキャストによってクライアントを初期設定するには、-c-B のオプションを使います。


nisinit -c -B

ルートマスターサーバーを初期設定する

ルートマスターサーバーを初期設定するには、nisinit -r コマンドを使います。


nisinit -r

ここで次の情報が必要になります。

表 18–4 インターネットの組織ドメイン

ドメイン 

種類 

com 

営利団体 

edu 

教育機関 

gov 

行政機関 

mil 

軍事組織 

net 

主要ネットワークサポートセンター 

org 

非営利組織 

int 

国際組織 

nis_cachemgr コマンド

nis_cachemgr コマンドは、NIS+ キャッシュマネージャプログラムを起動します。このプログラムは、すべての NIS+ クライアント上で動作します。キャッシュマネージャは、名前空間で最もよく使われるディレクトリをサポートする NIS+ サーバーの位置情報キャッシュを管理します。位置情報はトランスポートアドレス、認証情報、生存期間値などです。

キャッシュマネージャが起動すると、クライアントのコールドスタートファイルから初期情報を取得し、それを /var/nis/NIS_SHARED_DIRCACHE ファイルにダウンロードします。

キャッシュマネージャは、クライアントマシンとして要求を行います。クライアントマシンには必ず適切な資格を与えてください。そうしないと、性能が向上するどころか、キャッシュマネージャが性能を低下させます。

キャッシュマネージャの起動と停止

キャッシュマネージャを起動するには、nis_cachemgr コマンドを入力します。


client% nis_cachemgr
client% nis_cachemgr -i

-i オプションがない場合、キャッシュマネージャは再起動されますが、情報を /var/nis/NIS_SHARED_DIRCACHE ファイルに入れておきます。コールドスタートファイル内の情報は、このファイル内の既存情報に追加されます。-i オプションは、キャッシュファイルをクリアし、クライアントのコールドスタートファイルの内容からこれを再び初期設定します。

キャッシュマネージャを停止させるには、他のプロセスと同様にプロセスを終了します。

nisshowcache コマンド

nisshowcache コマンドは、クライアントのディレクトリキャッシュの内容を表示します。

NIS+ キャッシュの内容を表示する

nisshowcache コマンドは、/usr/lib/nis 内にあります。このコマンドはキャッシュヘッダーとディレクトリ名だけを表示します。ルートマスターサーバーから入力した例を次に示します。


rootmaster# /usr/lib/nis/nisshowcache -v
Cold Start directory:
Name : doc.com.
Type : NIS
Master Server :
 Name : rootmaster.doc.com.
 Public Key : Diffie-Hellman (192 bits)
 Universal addresses (3)
 . .
Replicate:
 Name : rootreplica1.doc.com.
 Public Key : Diffie-Hellman (192 bits)
 Universal addresses (3)
 .
 .
 .
 Time to live : 12:0:0
 Default Access Rights :

ping とチェックポイントを実行する

NIS+ データセットに変更を加えると、その変更は、当該 NIS+ ドメイン (またはサブドメイン) のマスターサーバーのメモリに格納されます。変更の記録はマスターサーバーのトランザクションログ (/var/nis/data/trans.log) にも残されます。

通常、NIS+ データセットに変更が加えられると、その 120 秒 (2 分) 後に、マスターサーバーから当該ドメインの複製サーバーにその変更の内容が転送されます。この転送プロセスのことを「ping」といいます。マスターサーバーから複製サーバーへの ping が実行されると、通知された変更内容に従って複製サーバーのデータセットが更新されます。これにより、変更された NIS+ データがマスターサーバーと複製サーバーの両方のメモリに格納されることになります。

自動 ping プロセスが不調で複製サーバーのデータセットが更新されないこともあります。その場合は、ping を強制的に実行するの説明に従って ping を強制的に実行する必要があります。複製サーバーが最新の NIS+ データどおりに正しく更新されているかどうか不安な場合は、最新更新時間を表示するの説明に従って複製サーバーが最後に更新されたのはいつであるかを確認してください。

NIS+ データセットに対する変更は、サーバーのメモリーに格納され、トランザクションログに記録されたのち、ディスク上の NIS+ テーブルに書き込まれなければなりません。この NIS+ テーブルを更新することを「チェックポイントを実行する」といいます。

チェックポイントの実行は自動的には行われません。ディレクトリにチェックポイントを実行するの説明に従ってチェックポイントコマンドを実行する必要があります。

nisping コマンド

nisping コマンドには次の用途があります。

最新更新時間を表示する

-u オプションを指定して nisping コマンドを実行すると、ローカルドメインのマスターサーバーと複製サーバーが更新された時間が表示されます。


/usr/lib/nis/nisping -u [domain] 

他のドメインで最後に更新が行われた時間を表示するには、コマンド行にそのドメイン名を指定します。-u オプションを指定して nisping コマンドを実行した場合、複製サーバーに対する ping は一切実行されない点に注意してください。

たとえば、ローカルドメイン doc.com. で複製サーバーが最後に更新された時間を表示するには、次のように入力します。


rootmaster# /usr/lib/nisping -u
Last updates for directory doc.com.:
Master server is rootmaster.doc.com.
 Last update occurred at Wed Nov 25 10:53:37 1992
Replica server is rootreplica1.doc.com.
 Last update seen was Wed Nov 25 10:53:37 1992

ping を強制的に実行する

-u オプションを指定して nisping コマンドを実行した結果、複製サーバーが正しく更新されていないことがわかったとします。そのような場合は、nisping コマンドを実行することにより、マスターサーバーからドメイン内のすべての複製サーバーに対して、または特定の複製サーバーに対して、ping を強制的に実行できます。

すべての複製サーバーを ping の対象とする場合、次に示すように、nisping コマンドをオプションなしで実行します。


/usr/lib/nis/nisping

これにより、マスターサーバーからドメイン内のすべての複製サーバーへの ping が強制的に実行されます。ローカルドメイン doc.com. のすべての複製サーバーに対する ping を強制的に実行するには、次のように入力します。


rootmaster# /usr/lib/nis/nisping
Pinging replicas serving directory doc.com.:
Master server is rootmaster.doc.com.
 Last update occurred at Wed Nov 25 10:53:37 1992
Replica server is rootreplica1.doc.com.
 Last update seen was Wed Nov 18 11:24:32 1992
 Pinging ... rootreplica1.doc.com.

ローカルドメインでないドメイン内のすべての複製サーバーに対し ping を実行するには、ドメイン名を指定します。


/usr/lib/nis/nisping domainname

特定の 1 台のホスト上のすべてのディレクトリにあるすべてのテーブルに対し ping を実行することもできます。この場合、-a オプションを使用します。


/usr/lib/nis/nisping -a hostname

ディレクトリにチェックポイントを実行する

スワップの頻度やディスク領域との関連でトランザクションログが大きくなりすぎる場合、各ドメインおよびサブドメインに対しては、少なくとも 24 時間に 1 回はチェックポイントを実行する必要があります。


注 –

大きなドメイン、または大きなトランザクションログを持つドメインに対してチェックポイントを実行すると、終了するまでにかなりの時間がかかり、その間 NIS+ サーバーが拘束され、NIS+ サービスの速度が低下します。サーバーは、チェックポイントを実行している間もサービス要求に応答しますが、更新できません。できるだけ、システムが混んでいない時間帯を選んでチェックポイントを実行することをお勧めします。チェックポイントの実行スケジュールは cron ファイルで調整できます。


チェックポイントを実行するには、対象のドメインのマスターサーバー上で nisping -C コマンドを実行します。先にすべての複製サーバーに対して ping を実行してから、チェックポイントを実行することをお勧めします。その場合には、複製サーバーに対して常に最新のデータでチェックポイントを実行できます。


rootmaster# /usr/lib/nis/nisping
rootmaster# /usr/lib/nis/nisping -C -a

サーバーによってそのトランザクションログの情報が NIS+ テーブルに転送されると、ログファイル内のトランザクションは、ディスク領域の節約のため消去されます。

doc.com. ドメイン内のすべてのディレクトリに対してチェックポイントを実行するには、次のように入力します。


rootmaster# /usr/lib/nis/nisping -C -a
Checkpointing replicas serving directory doc.com. : 
Master server is rootmaster.doc.com.
 Last update occurred at Wed May 25 10:53:37 1995
Master server is rootmaster.doc.com.
checkpoint has been scheduled with rootmaster.doc.com.
Replica server is rootreplica1.doc.com.
 Last update seen was Wed May 25 10:53:37 1995
Replica server is rootreplica1.doc.com.
checkpoint has been scheduled with rootmaster.doc.com.

nislog コマンド

nislog コマンドは、トランザクションログの内容を表示します。


/usr/sbin/nislog
/usr/sbin/nislog -h [number]
/usr/sbin/nislog -t [number]
表 18–5 nislog コマンドのオプション

オプション 

種類 

-h [ num]

ログの先頭からトランザクションを表示する。数字を指定しなければ、最初のトランザクションから表示が開始される。0 を指定すると、ログヘッダーだけが表示される 

-t [ num]

ログの末尾からトランザクションを表示する。数字を指定しなければ、最後のトランザクションから表示が開始される。0 を指定すると、ログヘッダーだけが表示される 

-v

冗長モード 

トランザクションログの内容を表示する

各トランザクションは、トランザクションの明細部とオブジェクト定義のコピー部の 2 つの部分から構成されます。

doc.com. ディレクトリが最初に作成されたときに作られたトランザクションログエントリを次の例に示します。「XID」はトランザクション ID を意味します。


rootmaster# /usr/sbin/nislog -h 1
NIS Log printing facility.
NIS Log dump:
 Log state : STABLE
Number of updates : 48
Current XID : 39
Size of log in bytes : 18432
***UPDATES***
@@@@@@@@@@@@@@TRANSACTION@@@@@@@@@@@@@@
#00000, XID : 1
Time : Wed Nov 25 10:50:59 1992
Directory : doc.com.
Entry type : ADD Name
Entry timestamp : Wed Nov 25 10:50:59 1992
Principal : rootmaster.doc.com.
Object name : org_dir.doc.com.
...................Object......................
Object Name : org_dir
Owner : rootmaster.doc.com.
Group : admin.doc.com.
Domain : doc.com.
Access Rights : r---rmcdr---r---
Time to Live : 24:0:0
Object Type : DIRECTORY
Name : `org_dir.doc.com.'
Type: NIS
Master Server : rootmaster.doc.com.
.
.
................................................
@@@@@@@@@@@@@@TRANSACTION@@@@@@@@@@@@@@
#00000, XID : 2

nischttl コマンド

nischttl コマンドは、名前空間内のオブジェクトまたはエントリの生存期間値を変更します。キャッシュマネージャは、この生存期間値を使って、キャッシュエントリをいつ期限切れにするかを決めます。生存期間を指定するには、合計秒数か、日、時間、分、秒の組み合わせのいずれかを使います。

オブジェクトまたはエントリに割り当てる生存期間値は、オブジェクトの安定性に左右されます。よく変化するオブジェクトの場合、生存期間値を低くします。安定したオブジェクトの場合、高い値を指定します。高い生存期間値であれば、1 週間などを指定し、低い値であれば 1 分未満を指定します。パスワードエントリの生存期間値は約 12 時間とし、1 日に 1 回パスワード変更ができるようにする必要があります。RPC テーブル内のエントリなど、あまり変化しないテーブルのエントリには、数週間の値を設定できます。

オブジェクトの生存期間を変更するには、そのオブジェクトに対する変更権が必要です。テーブルエントリの生存期間を変更するには、変更したいテーブル、エントリ、または列に対して変更権が必要です。

オブジェクトまたはテーブルエントリの現在の生存期間値を表示するには、第 15 章「NIS+ のアクセス権の管理」で説明する nisdefaults -t コマンドを使います。

オブジェクトの生存期間値を変更するには、以下のどちらかのように入力します。


nischttl time-to-live object-name

または


nischttl [-L] time-to-live object-name

エントリの生存期間値を変更するには、以下のどちらかのように入力します。


nischttl time-to-live \
  [column=value,...], \
  table-name

または


nischttl [-ALP] time-to-live \
  [column=value,...], \
  table-name

time-to-live には以下のものを指定します。

以上の値は組み合わせて使うことができます。たとえば「 4d3h2m1s 」は、4 日 3 時間 2 分 1 秒を意味します。

nischttl コマンドでは以下のフラグを使用できます。

表 18–6 nischttl 構文のオプション

オプション 

種類 

A

すべて。[column=value] 指定に合致する全エントリに変更を適用する

L

リンク。リンクをたどり、リンク自体ではなく、リンクされたオブジェクトまたはエントリを変更する 

P

パス。条件を満足するエントリが 1 つ見つかるまで、パスをたどる 

オブジェクトの生存期間を変更する

オブジェクトの生存期間を変更するには、生存期間の値とオブジェクト名を指定して nischttl コマンドを入力します。-L コマンドを追加すれば、リンクされたオブジェクトにまで変更を拡張できます。


nischttl -L time-to-live object-name

生存期間は秒か、日、時間、分、秒の組み合わせかで指定できます。前者の場合、秒数だけを指定します。後者の場合、日数、時間数、分数と秒数に「 smhd」をつけてください。 たとえば :


client% nischttl 86400 sales.doc.com.
client% nischttl 24h sales.doc.com.
client% nischttl 2d1h1m1s sales.doc.com.

最初の 2 つでは、sales.doc.com. ディレクトリの生存期間が 86,400 秒、つまり 24 時間に変更されます。 3 つ目では、hosts テーブル内の全エントリの生存期間が 176,461 秒、つまり 2 日と 1 時間 1 分 1 秒に変更されます。

テーブルエントリの生存期間を変更する

エントリの生存期間を変更するには、インデックス付きのエントリフォーマットを使います。-A-L、または -P のどのオプションでも使えます。


nischttl [-ALP] time-to-live \
  [column=value,...], \
  table-name

注 –

C シェル を使用している場合、[ ] がメタキャラクタとして解釈されないように引用符で囲みます。


次に示す例は上記の例と似ていますが、オブジェクトではなく、テーブルエントリの値を変更します。


client% nischttl 86400 '[uid=99],passwd.org_dir.doc.com.' 
client% nischttl 24h `[uid=99],passwd.org_dir.doc.com.' 
client% nischttl 2d1h1m1s `[name=fred],hosts.org_dir.doc.com'

第 19 章 NIS+ テーブルの管理

この章では、NIS+ テーブルとその管理方法について説明します。デフォルトの NIS+ テーブルの詳細については、表 10–1 を参照してください。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ テーブル

NIS+ で使用される情報は、NIS+ テーブルに格納されます (Solaris オペレーティング環境で提供されるデフォルトの NIS+ システムテーブルについては、第 23 章「NIS+ テーブルの情報」を参照)。

NIS+ テーブル関連のコマンドと、その構文およびオプションの詳細については、NIS+ のマニュアルページを参照してください。

nistbladm コマンド


注 –

NIS+ テーブルに関連した作業のうちいくつかは、 Solstice AdminSuiteTMツールを使用すると容易に行えます。


nistbladm コマンドは NIS+ テーブル管理コマンドの中でも最も重要なコマンドであり、NIS+ ディレクトリオブジェクトに格納されている NIS+ テーブル上で使います。nistbladm コマンドを使うと、NIS+ テーブルまたはそのエントリを作成、修正、削除できます。ただし、ディレクトリのないところにテーブルを作成はできません。同様に、テーブルと列が定義されていないところにエントリを追加できません。

テーブルを作成するには、そのテーブルが所属するディレクトリに対する作成権が必要です。テーブルを削除するには、そのディレクトリに対する削除権が必要です。テーブルの内容を変更 (エントリの追加、変更、または削除) するには、そのテーブルまたはエントリの変更権が必要です。

nistbladm 構文

nistbladm コマンドの一般的な構文は次のとおりです。


nistbladm options \
 [columspec | columnvalue] \
 [tablename | indexedname]

表 19–1 nistbladm コマンドのオプション

オプション 

説明 

-a | -A

既存の NIS+ テーブルにエントリを追加する。-a を指定した場合、nistbladm コマンドを実行すると既存のエントリが上書きされる場合には、エラーが返される。-A を指定した場合、nistbladm コマンドが既存エントリを上書きする場合でも強制的に実行される (エントリをテーブルに追加するを参照)

-D defaults

別のデフォルト特性を使ってオブジェクトを作成する (詳細については、デフォルトの nistbladm(1) のマニュアルページを参照)

-d

テーブルを破棄する (テーブルを削除するを参照)

-c

テーブルを作成する ( テーブルを作成するを参照)

-r | -R

既存の NIS+ テーブルからエントリ (1 つまたは複数) を削除する。-r を指定した場合、複数のエントリの削除につながる nistbladm コマンドは実行されず、エラーが返される。-R を指定した場合、複数のエントリの削除につながる nistbladm コマンドであっても強制的に実行される (テーブルからエントリを削除するを参照)

-m

テーブルエントリを修正するためのオプション。旧リリースとの互換性を維持するためにだけ残されている。エントリを修正するのであれば、-e オプションまたは -E オプションを使うほうが望ましい

-e | -E

既存の NIS+ テーブルのエントリを修正する。-e を指定した場合、複数のエントリの変更につながる nistbladm コマンドは実行されず、エラーが返される。-E を指定した場合、複数のエントリの変更につながる nistbladm コマンドであっても強制的に実行される (エントリを修正するを参照)

nistbladm と列の値

列の値は、テーブル内の個々のエントリを識別するために使われます。列の値の書式は次のとおりです。


columname="value", \
 columnname="value", ...

引数の意味は、それぞれ以下のとおりです。

たとえば、マシン名と IP アドレスを登録した hosts という名前のテーブルがあるとします。

表 19–2 hosts テーブルの例

IP アドレス 

名前 

別名 

129.146.168.4

altair

 

129.146.168.119

deneb

mail

129.146.168.120

regulus

dnsmaster

129.146.168.121

regulus

dnsmaster

129.146.168.11

sirius

 

このサンプルテーブルの altair エントリ (行) を識別するには、次の 3 通りの column=value の指定方法が考えられます。

上記のテーブルで注目すべき点としては、regulus という名前のマルチホームマシンに 2 つの IP アドレスが割り当てられていることです。この場合、ホストマシン reguluscolumn=value は 2 つの行を示します。そこで、最初の regulus 行だけを識別したいという場合は次のいずれかを入力します。


注 –

nistbladm コマンドの一部のオプションには、テーブル内のすべての列に column=value を指定しなければならないものがあります。


nistbladm、検索可能列、キー、列の値

NIS+ テーブルを作成する際は、S フラグまたは I フラグを指定し、1 つまたは複数の列が検索可能になるようにします (テーブルの列を指定するを参照)。なお、niscat -o tablename と入力すれば、テーブルの列とその特性を一覧表示できます。

テーブル内で行の「識別」に使われるのが検索可能列です。検索可能列の値 (値の組み合わせ) はすべて一意でなければなりません。したがって、検索可能列が 1 つしかないテーブルの場合、各行の検索可能列の値はすべて一意でなければならず、重複は一切許されません。

ここで、city という名前の検索可能列と country という名前の検索不可列からなるテーブルを作成する場合を想定します。次に示すのは、正しい (検索可能列の値の組み合わせに重複がない) テーブルの例です。

City 

Country 

San Francisco 

United States 

Santa Fe 

United States 

Santiago 

Chile 

次は正しくない (City 列に重複がある) テーブルの例です。

City 

Country 

London 

Canada 

London 

England 

1 つのテーブルに検索可能列が複数ある場合は、検索可能列どうしの値の組み合わせが一意であればかまいません。ここでは、Lastname および Firstname という 2 つの検索可能列と、city という検索不可列からなるテーブルを作成する場合を想定します。次に示すのは、正しい (検索可能列の値の組み合わせに重複がない) テーブルの例です。

Lastname 

Firstname 

City 

Kuznetsov 

Sergei 

Odessa 

Kuznetsov 

Rima 

Odessa 

Sergei 

Alex 

Odessa 

次は正しくない (検索可能列の値の組み合わせに重複がある) テーブルの例です。

Lastname 

Firstname 

City 

Kuznetsov 

Rima 

Odessa 

Kuznetsov 

Rima 

Chelm 

NIS+ のコマンドはいずれも、検索可能列の値に基づいて特定の行を識別します。

nistbladm とインデックス名

NIS+ には、テーブル名と列の値の検索基準の組み合わせ (これを「インデックス名」という) によって特定のテーブルの特定のエントリを識別する、というテーブル管理の方法もあります。インデックス名の書式は次のとおりです。


[search_criteria],tablename.directory

search_criteria には検索基準を指定しますが、このとき角カッコ ([]) で囲むのを忘れないでください。書式は次のとおりです。


columname=value, \
 columname=value,...

columname=value にはテーブルの検索可能列の値を指定します (nistbladm と列の値を参照)。

たとえば、表 19–2altair エントリを識別するには、次のようにインデックス名を指定します。


[addr=129.146.168.4,cname=altair],hosts.org_dir.doc.com.

nistbladm -R コマンドを使用すると、間になにも入れない角カッコ [ ]をすべてのテーブル列を指定するワイルドカードとして使用し、テーブル中のすべてのエントリを一度に削除できます。

nistbladm とグループ

Solaris の NIS+ 環境には 3 種類のグループがあります。


注 –

NIS+ グループの管理に nistbladm を使うことはできません。


その他のグループの詳細については、Solaris グループを参照してください。

テーブルを作成する

NIS+ テーブルには、少なくとも 1 つの列が必要で、その列のうち少なくとも 1 つが検索可能でなければなりません。NIS+ テーブルを作成するには、nistbladm コマンドに -c オプションを付けて使います。


nistbladm -c tabletype columnspec \
  ... tablename

引数の意味は、それぞれ以下のとおりです。


nistbladm -c tabletype columnspec columnspec  \
columnspec tablename

columnspec の書式については、テーブルの列を指定する (下記) を参照してください。

テーブルの列を指定する

columnspec エントリは、以下の形式のように、2 つから 4 つの要素から成っています。


name=type,rights:
表 19–3 テーブルの列の構成要素

コンポーネント 

説明 

name

列の名前 

=

等号記号 (必須) 

type

(オプション) SI、または C で列の種類を指定する。表 19–4 参照。このコマンドは省略可能です。type を指定しないと、その列はデフォルトとなる

rights

(オプション) アクセス権を指定する。ここに指定したアクセス権は、テーブル全体や特定エントリに付与したアクセス権より優先される。access を指定しないと、その列のアクセス権は、テーブル全体や特定エントリに付与したアクセス権になる。アクセス権の構文については、コマンドによるアクセス権の指定を参照

列には、次に挙げる種類のうち 1 つを指定できます。

表 19–4 列の種類

形式 

説明 

 

等号 (=) のみ。列の種類は指定しない。その列は検索可能にもならなければ、暗号化されることもない

S

検索可能 

I

大文字と小文字の区別をしない。NIS+ コマンドで列を検索する場合、大文字と小文字を区別しない 

C

暗号化する 

NIS+ の各コマンドは、列全体を調べ、検索可能列の値に基づいて個々の行を識別します。検索可能列は S フラグまたは I フラグで指定します (データベースの分野では、検索可能列のことをキー列といいます)。テーブルの最初の列は必ず検索可能にします。その他の列は検索可能にする必要はありません。NIS+ テーブルのキーは、検索可能列に対して作成されます。このため、検索可能列が複数存在する場合は、最初の列から連続した領域に割り当てなければなりません。検索可能列以外の列がその領域に存在してはなりません。たとえば、テーブルの検索可能列が 1 列だけの場合は、最初の列に配置しなければなりません。検索可能列が 2 列の場合は、最初の 2 列に配置しなければなりません。検索可能列の詳細については、nistbladm、検索可能列、キー、列の値 を参照してください。

アクセス権だけを指定する場合、コンマを使用する必要はありません。-S-I-C フラグの 1 つか複数を指定する場合は、アクセス権の前にコンマを追加します。

以下の例では、上と同じテーブルが作成されますが、最初の 2 列にはその列に固有なアクセス権が付与されます。


master% nistbladm -c depts Name=I,w+m Site=w+m Name=C \
divs.mydir.doc.com.

テーブル作成時の列のアクセス権の指定については、テーブル作成時の列権限設定を参照してください。


注 –

NIS+ では、すべての列エントリが NULL で終了するものと仮定しています。NIS+ テーブルに情報を書き込むアプリケーションやルーチンは、列エントリをすべて NULL で終了するように構成しなければなりません。


自動マウントテーブルを追加作成する

自動マウントテーブルには 2 つの列しか作ることができません。1 番目の列には key という名前を付け、2 番目の列には value という名前を付けます。たとえば、auto1 という名前の自動マウントテーブルを作成するには、次のように入力します。


master% nistbladm -c key-value key=S value= auto1.org_dir.doc.com.

テーブルを削除する

テーブルを削除するには、-d オプションを使ってテーブル名を入力します。


nistbladm -d tablename

テーブルを削除するには、その前にテーブルが空になっていなければなりません (テーブルからエントリを削除するを参照)。次の例では、doc.com. ディレクトリから divs テーブルを削除します。


rootmaster% nistbladm -d divs.doc.com.

エントリをテーブルに追加する

エントリ (行) をテーブルに追加するには、nistbladm コマンドに -a オプションまたは -A オプションを指定し、続けて column=value のペア (1 つまたは複数)、テーブル名の順に指定します。あるいは、nistbladm コマンドに -a オプションまたは -A オプションを指定し、続けてインデックス名を指定します (nistbladm とインデックス名を参照)。


nistbladm [-a | -A] indexedname
nistbladm [-a | -A] column="value" \
column="value" \
... tablename

-a オプションまたは -A オプションを指定して既存のテーブルに新しいエントリ (行) を追加する場合は、次の点に注意してください。


注 –

NIS+ はネームサービスであり、設計上、そのテーブルにはオブジェクト本体ではなく、オブジェクトのリファレンスが格納されます。NIS+ は、最適化された状態では 10,000 におよぶオブジェクトをサポートし、すべてのテーブルのサイズを合計しても 10M バイトを超えることはありません。NIS+ では、1 つの列のフィールドサイズの合計が 7k を超えるようなテーブルはサポートされません。テーブルが大きすぎると、rpc.nisd は失敗します。


-a オプションを指定してエントリを追加する

nistbladm コマンドに -a オプションを指定しておくと、追加するエントリと同じエントリがすでに存在する場合は、エントリの上書きは行われずにエラーが返されます。あるエントリの検索可能列の値が、追加するエントリの検索可能列の値とまったく同じである場合、そのエントリは「すでに存在しているもの」と判断されます。このとき、検索不可列の値は考慮されません。

-a オプションを指定する場合、次のように、テーブル内のすべての列の値を指定する必要があります。


nistbladm -a column="value" \
 column="value" \
 ... tablename
nistbladm -a indexedname

テーブルのすべての列名とその特性を表示する場合は、niscat -o tablename コマンドを実行します。

たとえば、depts テーブルに新しい行を追加する場合は、次に示すように、列の数だけ column=value ペアを指定します。


rootmaster% nistbladm -a Name='R&D' Site='SanFran'  \
	Name='vattel' depts.doc.com.

なお、これと同じエントリをインデックス名を指定して追加する場合は、次のように入力します。


rootmaster% nistbladm -a [Name='R&D',Site='SanFran' \
Name='vattel'],depts.doc.com. 

どちらの場合も、次のようなテーブルとなります。

Dept 

Site 

Name 

R&D 

SanFran 

vattel 

C シェルを使っている場合は、角カッコを含む数式を引用符でオフセットすることもできます。

nistbladm コマンドでは 1 回につき 1 つのエントリしか追加できません。つまり、追加する行の数だけ nistbladm コマンドを実行する必要があります。

追加するエントリ (行) の各列と同じ値を持つ行がすでに存在する場合、nistbladm -a はエラーを返します。1 つのテーブルの中に同じ行が存在することはできません。検索可能列の値が同一である場合、それらの行は同一であるとみなされます。このとき、検索不可列の値は考慮されません。

たとえば、Dept 列と Site 列が検索可能であって、Name 列は検索可能ではないテーブルに対して nistbladm を実行すると、次の 2 つの行は同一であるとみなされます。

Dept (検索可能) 

Site (検索可能) 

Name (検索不可) 

Sales 

Vancouver 

Hosteen 

Sales 

Vancouver 

Lincoln 

この場合、nistbladm -a を実行して Sales Vancouver Lincoln という行を作成できません。

しかし、複数の検索可能列のどちらか一方の値が重複するだけであれば、nistbladm -a を実行して新しい行を作成できます。たとえば、以下の 2 つのコマンドを実行すると、一部の値が異なるだけの 2 つの列を作成できます。


rootmaster% nistbladm -a Dept='Sales' \
Site='Vancouver' Name='hosteen' staff.doc.com. 
rootmaster% nistbladm -a Dept='Sales' \
Site='SanFran' Name='lincoln' staff.doc.com. 

これらのコマンドを実行すると、検索可能列の一部が同じで、すべてが同じではない 2 つの行が作成されます。

Dept 

Site 

Name 

Sales 

Vancouver 

hosteen 

Sales 

SanFran 

lincoln 

-A オプションを指定してエントリを追加する

-A オプションは、nistbladm コマンドで既存のエントリを上書きするアプリケーションに使用します。-a と同様に、-A もテーブルにエントリを追加するためのオプションです。しかし、追加するエントリがすでに存在する場合、エラーを返して終了するのではなく、既存のエントリを上書きします。

-A オプションを指定する場合、エントリ内のすべての列の値を指定する必要があります。

ここで、Dept 列と Site 列が検索可能である次のテーブルを想定します。

Dept (検索可能) 

Site (検索可能) 

Name 

Sales 

SanFran 

Lincoln 

このテーブルに対して次のコマンドを実行します。


rootmaster% nistbladm -A Name=Sales Site=SanFran \
Name=Tsosulu depts.doc.com.

Name=Sales Site=SanFran はすでに存在するので、オプションが -a であれば、上記のコマンドはエラーを返します。しかし、上記のコマンドでは -A が指定されているので、既存の行が上書きされます。

Dept 

Site 

Name 

Sales 

SanFran

Tsosulu 

エントリを修正する

既存のエントリを修正 (編集) する場合は、-e オプションまたは -E オプションを指定します。Solaris オペレーティング環境では、旧リリースとの互換性を維持するため、-m オプションもサポートしています。新しいアプリケーションまたはコマンド行での操作には、-e オプションまたは -E オプションを使うことをお勧めします。

テーブル内の既存のエントリ (行) を編集するには、nistbladm コマンドに -e オプションまたは -E オプションを指定し、それに続けて、値を変更した column=value のペア (1 つまたは複数) とテーブル内の特定の行を示すインデックス名を指定します (nistbladm とインデックス名を参照)。


nistbladm [-e | -E] column="value" \
 column="value" \
 ... indexedname

-e オプションまたは -E オプションを指定して既存エントリ (行) を修正する場合は、次の点に注意してください。

-e オプションを指定してエントリを編集する

-e オプションを指定した場合、複数のエントリの検索可能列値を変更することになる nistbladm コマンドは実行されず、エラーが返されます。このとき、検索不可列の値は考慮されません。


nistbladm column=" value" \
 column="  value" \
 ... indexedname

-e オプションを指定した場合、変更する列の値を指定するだけです。

ここで次のテーブルについて考えます。

Dept 

Site 

Name 

Sales 

SanFran 

Tsosulu 

Name 列の値を Chandar に変更するには、次のように入力します。


master% nistbladm -e Name="Chandar" [Dept='Sales',Site='SanFran'], \
	depts.doc.com. 

修正後のテーブルは次のようになります。

Dept 

Site 

Name 

Sales 

SanFran 

Chandar 

上記の例では、インデックス名に Name 列が含まれていません。これは、Name 列が検索可能ではないためです。

C シェルを使っている場合は、角カッコを含む数式を引用符でオフセットすることもできます。

-e オプションを指定して検索可能列の値を編集するには、新たに指定した値が (インデックス名によって識別される) 1 行にだけ適用されることが条件になります。したがって、Dept 列の値を Manf に変更するには、次のように入力します。


master% nistbladm -e Dept="Manf" [Dept='Sales',Site='SanFran'], \
	depts.doc.com. 

Dept (検索可能) 

Site (検索可能) 

Name 

Manf 

SanFran 

Chandar 

しかし、検索可能列に ManfSanFran という値を持つエントリが既に存在する場合は、nistbladm -e はエラーを返します。

同一のエントリが対象である場合は、複数の列の変更を指定できます。たとえば、Dept 列と Name 列の値を変更するには、次のように入力します。


master% nistbladm -e Dept="Manf" Name=”Thi” \
	[Dept='Sales',Site='SanFran'],depts.doc.com.

Dept (検索可能) 

Site (検索可能) 

Name 

Manf 

SanFran 

Thi 

-E オプションを指定してエントリを編集する

-E オプションは、nistbladm コマンドで既存のエントリを上書きする場合のアプリケーションに使用します。

ここで次のテーブルを想定します。

Dept (検索可能) 

Site (検索可能) 

Name 

Sales 

SanFran 

Chandar 

Sales 

Alameda 

Achmed 

このテーブルに対して次のコマンドを実行します。


master% nistbladm -E Site="Alameda” Mgr="Chu"  \
[Div='Sales',Site='SanFran'],depts.doc.com.

すると、Sales SanFran Chandar 行が Sales Alameda Chu に変わります。しかも、キーの値 Sales Alameda によって識別される Sales Alameda Achmed 行までもが変更の対象になります。その結果、コマンド実行前には 2 つあったはずの行が 1 つになります。

Dept (検索可能) 

Site (検索可能) 

Name 

Sales 

Alameda 

Chu 

これは複数の行を編集することになるので、オプションが -e であれば、上記のコマンドはエラーを返します。しかし、実際には -E が指定されているので、複数のエントリ (行) が編集されます。

テーブルからエントリを削除する

1 つのエントリを削除する

テーブルから 1 つのエントリを削除するには、次に示すように -r オプションを指定します。


nistbladm -r indexed-name

次に示すコマンドでは、depts テーブルから Manf-1 エントリを削除します。


rootmaster% nistbladm -r [Dept=Manf-1,Site=Emeryville,Name=hosteen], \
depts.doc.com. 

指定する列の値の数は最小限に減らすことができます。NIS+ では、列の値の重複が見つかると、行は 1 つも削除されることなく、エラーが返されます。次のテーブルから Manf-1 エントリを削除するには、次に示すように Site 列の値を指定するだけで済みます。


rootmaster% nistbladm -r [Site=Emeryville],depts.doc.com. 

しかし、R&D エントリも Sales エントリと同じ値を持っているため、Site 列の値 (SanFran) を指定するだけでは Sales エントリを削除できません。

Dept 

Site 

Name 

R&D 

SanFran

kuznetsov

Sales 

SanFran

jhill

Manf-1 

Emeryville

hosteen

Manf-2 

Sausalito

lincoln

複数のエントリを削除する

テーブルから複数のエントリを削除するには、次に示すように -R オプションを指定します。


nistbladm -R indexedname

オプションが -r であれば、最小限必要な列値を指定するだけで済みます。しかし、上記のコマンドでは -R が指定されているので、NIS+ が重複を見つけると、それに該当するすべてのエントリが削除されます。テーブル内の列の名前を確認したい場合は、niscat -o コマンドを実行します。次のコマンドを実行すると、Site 列の値が SanFran であるすべてのエントリが削除されます。


rootmaster% nistbladm -R [Site=SanFran],depts.doc.com. 

Dept 

Site 

Name 

Manf-1 

Emeryville

hosteen

Manf-2 

Sausalito

lincoln

-R オプションを使用して、テーブルからすべてのエントリを削除することができます。次に示すように、列の値を指定しなければテーブル内のすべてのエントリを削除できます。


rootmaster% nistbladm -R [],depts.doc.com.

nistbladm -R コマンドと共に使用すると、一対の空の角カッコはすべてのテーブル列を指定するワイルドカードとして解釈されます。

niscat コマンド

niscat コマンドは NIS+ テーブルの内容を表示します。このコマンドを使って、テーブルのオブジェクト属性を表示できます。表示するテーブル、エントリ、または列に対する読み取り権が必要です。

構文

テーブルの内容を表示するには、以下のように入力します。


niscat [-hM] tablename

テーブルのオブジェクト属性を表示するには、以下のように入力します。


niscat -o tablename
niscat -o entry
表 19–5 niscat 構文のオプション

オプション 

説明 

-h

ヘッダー。テーブルエントリの上にあるヘッダー行を表示し、各列の名前を表示する 

-M

マスター。マスターサーバーに収められているテーブルのエントリだけを表示する。これによって、最新情報を取得できる。デバッグにだけ使うようにする 

-o

オブジェクト。列名、属性、サーバーなどの、テーブルについてのオブジェクト情報を表示する 

テーブルの内容を表示する

テーブルの内容を表示するには、niscat にテーブル名を付けて実行します。


niscat tablename

次の例では、depts というテーブルの内容を表示します。


rootmaster% niscat -h depts.doc.com.
#  Name:Site:Name
R&D:SanFran:kuznetsov
Sales:SanFran:jhill
Manf-1:Emeryville:hosteen
Manf-2:Sausalito:lincoln 

注 –

*NP* は、ユーザーにそのエントリを表示するためのアクセス権がないことを示します。アクセス権は、テーブル、列、エントリ (行) ごとに与えられます。アクセス権の詳細については、第 15 章「NIS+ のアクセス権の管理」を参照してください。


テーブルまたはエントリのオブジェクト属性を表示する方法

テーブルのオブジェクト属性を表示するには、niscat -o にテーブル名を付けて実行します。


niscat -o tablename.org_dir

テーブルエントリのオブジェクト属性を表示するには、niscat -o を使い、インデックス付きの名前でエントリを指定します。


entry ::=column=value   ... tablename | \
 [column=valu  ,...], tablename

次に、テーブルの例とテーブルエントリの例を示します。

「テーブル」


rootmaster# niscat -o hosts.org_dir.doc.com.
Object Name : hosts
Owner : rootmaster.doc.com.
Group : admin.doc.com.
Domain : org_dir.doc.com.
Access Rights : ----rmcdr---r---
Time to Live : 12:0:0
Object Type :
TABLE Table Type : hosts_tbl
Number of Columns : 4
Character Separator :
Search Path :
Columns :
 [0] Name : cname
 Attributes : (SEARCHABLE, TEXTUAL DATA, CASE INS
 Access Rights: ----------------
 [1] Name : name
 Attributes : (SEARCHABLE, TEXTUAL DATA, CASE INS
 Access Rights: ----------------
 [2] Name : addr
 Attributes : (SEARCHABLE, TEXTUAL DATA, CASE INS
 Access Rights: ----------------
 [3] Name : comment
 Attributes : (TEXTUAL DATA)
 Access Rights: ---------------- 

「テーブルエントリ」


rootmaster# niscat -o [name=rootmaster],hosts.org_dir.doc.com. 
Object Name : hosts
Owner : rootmaster.doc.com.
Group : admin.doc.com.
Domain : org_dir.doc.com.
Access Rights : ----rmcdr---r---
Time to Live : 12:0:0
Object Type : ENTRY
Entry data of type hosts_tbl
Entry has 4 columns.
 .
#

nismatchnisgrep コマンド

nismatch コマンドと nisgrep コマンドは、NIS+ テーブルを検索して、それぞれ特定の文字列または正規表現に一致するエントリを探します。これらのコマンドは、エントリ自体、またはエントリの検索できた回数のどちらかを表示します。nismatch コマンドと nisgrep コマンドの相違を表 19–6 に示します。

表 19–6 nismatchnisgrep の 比較

特性 

nismatch

nisgrep

検索指定 

テキストのみ指定可能 

正規表現が指定可能 

速度 

高速 

低速 

検索対象 

検索可能列のみ 

すべての列 (検索可能かどうかとは無関係) 

検索構文 

column= string ... tablename[ column= string,...], tablename

column=exp ... tablename

この節の例では、両方のコマンドの構文を説明します。

どちらのコマンドを使用する場合にも、検索するテーブルに対する読み取りアクセス権が必要です。

この節の例は、次に示す depts.doc.com. というテーブルの値をベースにしています。最初の 2 つの列だけが検索可能です。

Name (検索可能) 

Site (検索可能) 

Name 

R&D 

SanFran 

kuznetsov 

Sales 

SanFran 

jhill 

Manf-1 

Emeryville 

hosteen 

Manf-2 

Sausalito 

lincoln 

Shipping-1 

Emeryville 

tsosulu 

Shipping-2 

Sausalito 

katabami 

Service 

Sparks 

franklin 

正規表現について

正規表現により、テキストと記号を組み合わせて使用し、特定の構成の列の値を検索できます。たとえば、正規表現 `Hello' は、Hello で始まる値を検索します。正規表現をコマンド行で使用するときは、必ず引用符で囲んでください。その理由は、正規表現記号の多くが Bourne シェルと C シェルでは特殊な意味をもつからです。たとえば :


rootmaster% nisgrep -h greeting='Hello' phrases.doc.com. 

正規表現の記号を表 19–7 にまとめます。

表 19–7 正規表現記号

シンボル 

説明 

^string

string で始まる値を見つける

string $

string で終わる値を見つける

ピリオドの数と等しい数の文字をもつ値を見つける 

[chars]

角かっこ内の文字のどれかを含む値を見つける 

*expr

expr についてゼロ回以上一致する値を見つける

+

1 回以上現われるものを見つける 

?

任意の値を見つける 

\'s-char '

? や $ などの特殊文字を見つける  

x | y

x または y の値を見つける

構文

最初の列を検索するには、以下のように入力します。


nismatch string tablename
nisgrep  reg-exp tablename

特定の列を検索するには、以下のように入力します。


nismatch column=string tablename
nisgrep column=reg-exp tablename 

複数の列を検索するには、以下のように入力します。


nismatch column=string tablename ...\
nismatch [column=string,...],tablename
nisgrep column=reg-exp ... \
   tablename
表 19–8 nismatch 構文と nisgrep 構文のオプション

オプション 

説明 

-c

カウント。エントリ自体ではなく、検索指定に一致したエントリのカウントを表示する 

-h

ヘッダー。エントリの上のヘッダー行を表示し、各列名を表示する  

-M

マスター。マスターサーバーに収められているテーブルのエントリだけを表示する。これによって、最新情報を取得できる。デバッグにだけ使うようにする 

最初の列を検索する

テーブルの最初の列で特定の値を検索するには、最初の列の値と「tablename」を入力します。nismatch では、この値は文字列でなければなりません。nisgrep では、この値は正規表現でなければなりません。


nismatch [-h] string tablename
nisgrep [-h] reg-expression tablename

次の例では、depts テーブルを検索して、最初の列の値が R&D となっているすべてのエントリを探します。


rootmaster% nismatch -h `R&D' depts.doc.com. 
rootmaster% nisgrep -h `R&D' depts.doc.com. 

注 –

& がシェルによってメタキャラクタとして解釈されないように、R&D が引用符で囲まれています。


特定の列を検索する

最初の列以外の特定の列を検索するには、次の構文を使います。


nismatch column=string tablename
nisgrep column=reg-expression tablename

次の例では、depts テーブルを検索して、第 2 列の値が SanFran となっているすべてのエントリを探します。


rootmaster% nismatch -h Site=SanFran depts.doc.com. 
rootmaster% nisgrep -h Site=SanFran depts.doc.com.

複数の列を検索する

2 つ以上の列で一致するエントリを検索するには、次の構文を使います。


nismatch [-h] [column=string, ... \
 column=string,...],tablename
nisgrep [-h] column=reg-exp ... \
 tablename

以下の例では、第 2 列の値が SanFran で、第 3 列の値が jhill のエントリを検索します。


rootmaster% nismatch -h [Site=SanFran,Name=jhill], depts.doc.com.
rootmaster% nisgrep -h Site=SanFran Name=jhill depts.doc.com.

nisln コマンド

nisln コマンドは、NIS+ オブジェクトとテーブルエントリの間でシンボリックリンクを作成します。すべての NIS+ 管理コマンドで、NIS+ オブジェクト間のリンクをたどるように指示する -L フラグを使用できます。


注 –

テーブルエントリはリンクしないでください。あるテーブルから他のテーブルへのリンクはできますが、あるテーブルのエントリから他のテーブルのエントリへのリンクはできません。


他のオブジェクトまたはエントリへのリンクを作成するには、ソースオブジェクトまたはエントリ、つまり他のオブジェクトまたはエントリを指すものに対する変更権が必要です。


注意 – 注意 –

cred テーブルをリンクしないでください。org_dir ディレクトリには、それぞれ専用の cred テーブルが必要です。org_dir cred テーブルもリンクしないでください。


構文

リンクを作成するには次のように入力します。


nisln source target
表 19–9 nisln 構文のオプション

オプション 

説明 

-L

リンクをたどる。ソース (source) 自体がリンクである場合、新しいリンクはこれにはリンクされず、そのリンク元のソースにリンクされる

-D

デフォルト。リンクされたオブジェクトに対して別のデフォルトセットを指定する。デフォルトについては、デフォルトを無効にするを参照

リンクを作成する

オブジェクト間のリンク (テーブルとディレクトリの間のリンクなど) を作成するには、最初に「ソース (source)」、次に「リンク先 (target)」の順で、両方のオブジェクト名を指定します。 テーブルエントリはリンクしないでください。


nisln source-object target-object

nissetup コマンド

nissetup コマンドは、org_dir ディレクトリと groups_dir ディレクトリ、それにフルセットの NIS+ テーブルを作成することによって、既存の NIS+ ディレクトリオブジェクトをドメインに展開します。しかし、データでテーブルを生成することはありません。これを行うには、nisaddent コマンドで説明する nisaddent コマンドが必要です。ドメインにディレクトリを展開することは、ドメインの設定作業の一部です。


注 –

新しい NIS+ ドメインを設定するのであれば、nissetup コマンドを使うより、nisserver スクリプトを使った方が簡単です。nisserver の使用法の詳細については、NIS+ ルートサーバーの設定を参照してください。


nissetup コマンドは、NIS クライアントをサポートするドメインにもディレクトリを展開できます。

nissetup を使用するには、テーブルを格納するディレクトリに対する変更権が必要です。

ディレクトリを NIS+ ドメインに展開する

nissetup コマンドは、ディレクトリ名を付けても付けなくても使えます。ディレクトリ名を付けない場合、このコマンドはデフォルトのディレクトリを使います。追加される各オブジェクトは、出力に表示されます。


rootmaster# /usr/lib/nis/nissetup doc.com.
org_dir.doc.com. created
groups_dir.doc.com. created
a uto_master.org_dir.doc.com. created
auto_home.org_dir.doc.com. created
bootparams.org_dir.doc.com. created
cred.org_dir.doc.com. created
ethers.org_dir.doc.com. created
group.org_dir.doc.com. created
hosts.org_dir.doc.com. created
mail_aliases.org_dir.doc.com. created
sendmailvars.org_dir.doc.com. created
netmasks.org_dir.doc.com. created
netgroup.org_dir.doc.com. created
networks.org_dir.doc.com. created
passwd.org_dir.doc.com. created
protocols.org_dir.doc.com. created
rpc.org_dir.doc.com. created
services.org_dir.doc.com. created
timezone.org_dir.doc.com. created

ディレクトリを NIS 互換ドメインに展開する方法

NIS+ と NIS のクライアント要求をサポートするドメインにディレクトリを展開するには、-Y フラグを使います。作成するテーブルは、NIS のクライアント要求がアクセスできるように、未認証カテゴリに対する読み取り権が与えられます。


rootmaster# /usr/lib/nis/nissetup -Y Test.doc.com. 

nisaddent コマンド

nisaddent コマンドは、テキストファイルまたは NIS マップからの情報を NIS+ テーブルにロードします。また、NIS+ テーブルの内容をテキストファイルに逆にダンプできます。NIS+ テーブルを初めて生成する場合は、NIS+ テーブルの生成 (populate)を参照してください。すべての前提条件と関連作業が説明してあります。

nisaddent を使用して、情報をある NIS+ テーブルから別のテーブルに (たとえば、別のドメインの同じ種類のテーブルに) 転送できますが、直接には転送できません。まず、テーブルの内容をファイルにダンプし、次にそのファイルを他のテーブルにロードする必要があります。ただし、ファイル内の情報は正しくフォーマットされていなければなりません。各テーブルに必要なフォーマットについては第 10 章「NIS+ のテーブルと情報」で説明しています。

情報をテーブルにロードするとき、置換 (replace)、追加 (append)、またはマージ (merge) の 3 つのオプションを自由に使用できます。追加オプションは、ソースエントリを NIS+ テーブルに単純に追加します。置換オプションの場合、NIS+ は、まずテーブル内のすべての既存エントリを削除し、次にソースからエントリを追加します。大規模なテーブルでは、これによって多くのエントリセット (1 セットは既存エントリの削除用、他のセットは新エントリの追加用) がテーブルの .log ファイルに追加され、/var/nis 内の領域を占有し、複製への伝達に長時間を要することになります。

マージオプションでは、置換オプションと同じ結果が得られますが、異なるプロセスを使っており、複製に送信する動作数が大幅に減少します。このオプションでは、NIS+ は次の 3 種類のエントリを異なる方法で処理します。

大きなテーブルを更新する場合で、内容の変更があまりないときは、マージオプションを使用するとサーバーは多くの動作を節約できます。ソース内で重複していないエントリだけを削除する (置換オプションは全エントリを無差別に削除する) ため、重複エントリごとに 1 回の削除と 1 回の追加動作を省略できます。

初めてテーブルに情報をロードする場合、テーブルオブジェクトに対する作成権が必要です。テーブル内の既存情報を上書きする場合、テーブルに対する変更権が必要です。

構文

テキストファイルから情報をロードするには、以下のように入力します。


/usr/lib/nis/nisaddent -f filename table-type\[domain]
/usr/lib/nis/nisaddent -f filename \
 -t tablename table-type [domain]

NIS マップから情報をロードするには、以下のように入力します。


/usr/lib/nis/nisaddent -y NISdomain table-type\
  [domain]
/usr/lib/nis/nisaddent -y NISdomain -t tablename table-type [domain]
/usr/lib/nis/nisaddent -Y map table-type [domain]
/usr/lib/nis/nisaddent -Y map -t tablename table-type [domain]

NIS+ テーブルから情報をファイルにダンプするには、以下のように入力します。


/usr/lib/nis/nisaddent -d [-t tablename tabletype ]> filename

ファイルから情報をロードする

ファイルの内容を NIS+ テーブルに転送するには、いくつかの方法があります。


nisaddent -f filename table-type

nisaddent -a -f filename table-type

nisaddent -m -f filename table-type

次に示す 2 つの例では、テキストファイル /etc/passwd.xfr の内容が NIS+ passwd テーブルにロードされます。最初の例ではローカルドメインに、2 番目の例では別のドメインのテーブルにロードされます。


rootmaster# /usr/lib/nis/nisaddent -f /etc/passwd.xfr passwd
rootmaster# /usr/lib/nis/nisaddent -f /etc/shadow.xfr shadow
rootmaster# /usr/lib/nis/nisaddent -f /etc/passwd.xfr passwd sales.doc.com.
rootmaster# /usr/lib/nis/nisaddent -f /etc/shadow.xfr shadow sales.doc.com.

注 –

/etc ディレクトリのファイルから NIS+ passwd テーブルを作成する場合は、nisaddent を 2 回 (/etc/passwd ファイルと /etc/shadow ファイルに対して 1 回ずつ) 実行する必要があります。


/etc/inet/ipnodes ファイル (IPv6 アドレス) のエントリを ipnodes.org_dir テーブルにマージするには、-v オプションと -f オプションを使用します。


rootmaster# /usr/lib/nis/nisaddent -mv -f  /etc/inet/ipnodes ipnodes

もう 1 つの方法では、stdin をソースとして使います。しかし、stdin では -m オプションを使えません。次に例を示します。リダイレクト (>) やパイプ (|) を使用することは可能です。ただし、別のドメインに出力が行われるような形でパイプを使用することはできません。

作業 

コマンド名 

リダイレクト 

cat filename > nisaddent table-type

リダイレクト処理後、追加する 

cat filename > nisaddent -a table-type

リダイレクト処理後、別のドメインに追加する 

cat filename> nisaddent -a table-type NIS+ domain

パイプ 

cat filename | nisaddent table-type

パイプ処理後、追加する 

cat filename | nisaddent -a table-type

NIS+ テーブルが、オートマウンタテーブルの 1 つであるか標準以外のテーブルである場合、-t オプションと NIS+ テーブルの完全な名前を追加します。


master# nisaddent -f /etc/auto_home.xfr \
  -t auto_home.org_dir.doc.com.key-value
master# nisaddent -f /etc/auto_home.xfr \
  -t auto_home.org_dir.doc.com. key-value sales.doc.com.

NIS マップからデータをロードする

NIS マップから情報を転送する方法は 2 つあり、NIS ドメインを指定するか、または実際の NIS マップを指定します。ドメインを指定した場合、NIS+ は、table-type に基づいて、/var/yp/nisdomain 内のどのマップファイルをソースとして使うかを判断します。/var/yp/nisdomain は「ローカル」ファイルでなければなりません。

NIS+ テーブル形式 

NIS マップ名 

Hosts

hosts.byaddr

Nodes

ipnodes.byaddr

Passwd

passwd.byname

Group

group.byaddr

Ethers

ethers.byname

Netmasks

netmasks.byaddr

Networks

networks.byname

Protocols

protocols.byname

RPC

rpc.bynumber

Services

services.byname

NIS ドメインの指定によって転送するには、-y (小文字) オプションを使い、NIS+ テーブル形式に加えて NIS ドメインを指定します。

「テーブルの置換」


nisaddent -y nisdomain table-type

「テーブルの追加」


nisaddent -a -y nisdomain table-type

「テーブルのマージ」


nisaddent -m -y nisdomain table-type

デフォルトでは、nisaddent は NIS+ テーブルの内容を NIS マップの内容に置き換えます。追加またはマージを行うには、-a または -m のオプションを使います。次の例では、対応する NIS マップ (passwd.byname) からの NIS+ passwd テーブルを old-doc ドメインにロードします。


rootmaster# /usr/lib/nis/nisaddent -y old-doc passwd

2 番目の例でも同じことを行いますが、ローカルドメイン doc.com. の代わりに、sales.doc.com. ドメインに対して行います。


rootmaster# /usr/lib/nis/nisaddent -y old-doc passwd sales.doc.com.

NIS+ テーブルが、オートマウンタテーブルの 1 つであるか非標準テーブルである場合、そのソースがファイルであるかのように、-t オプションと NIS テーブルの完全な名前を追加します。


rootmaster# nisaddent -y old-doc \
  -t auto_home.org_dir.doc.com. key-value
rootmaster# nisaddent -y old-doc \
  -t auto_home.org_dir.doc.com. key-value sales.doc.com.

マップファイルをドメイン用に使うのではなく、特定の NIS マップを指定したい場合、-Y (大文字) オプションを使い、マップ名を指定します。オプションを見つけやすいように、次の例では太字にしています。


rootmaster# nisaddent -Y hosts.byname hosts
rootmaster#  nisaddent -Y hosts.byname hosts sales.doc.com.

NIS マップがオートマウンタマップの 1 つであるか非標準マップである場合、-Y オプションと -t オプションを組み合わせます。


rootmaster# nisaddent -Y auto_home \
 -t auto_home.org_dir.doc.com. key-value
rootmaster# nisaddent -Y auto_home \
 -t auto_home.org_dir.doc.com. key-value sales.doc.com.

NIS+ テーブルの内容をファイルにダンプする

NIS+ テーブルの内容をファイルにダンプするには、-d-t のオプションを使います。-d オプションは、ダンプするようコマンドに指示します。-t オプションは、NIS+ テーブルを指定します。


rootmaster# nisaddent -d auto_home \
 -t auto_home.org_dir.doc.com. key-value 
rootmaster# nisaddent -d auto_home \
 -t auto_home.org_dir.doc.com.  key-value sales.doc.com.

第 20 章 サーバー使用のカスタマイズ

この章では、NIS+ クライアントが使用するサーバーのカスタマイズおよび制御方法について説明します。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ サーバーと NIS+ クライアント

クライアントマシン、ユーザー、アプリケーション、またはプロセスは、アクティブな NIS+ サーバー (マスターまたは複製) を検索して、そこから必要な情報を取り込みます。巨大なネットワーク、サブネットを多く持ったネットワーク、あるいは広域リンクにまたがったネットワークでは、サーバーの使用法をカスタマイズすることにより NIS+ のパフォーマンスを強化できます。

デフォルトでのクライアントの検索動作

カスタマイズ前の状態で、nisprefadm コマンドによるサーバーの優先順位設定がなにも設定されていなければ、クライアントは、まず自分自身のローカルサブネット上の NIS+ サーバーから情報を入手しようとします。そのサブネットにアクティブなサーバーが見つかれば、応答のあった最初のローカルサーバーから必要な情報を入手します。ローカルサブネットにサーバーがない場合、次にクライアントは、ローカルサブネットの外部を検索し、応答のあった最初の遠隔サーバーから必要な NIS+ 情報を入手します。

ネットワークが大規模で、混雑している場合、上記のデフォルトの検索動作では NIS+ の性能を十分に発揮させることができないことがあります。それは次のような理由によります。

優先サーバーを指定する

Solaris オペレーティング環境には、新規機能 (サーバーの使用のカスタマイズ) が搭載されています。この機能を使用すると、クライアントが NIS+ サーバーを検索する順序をコントロールできます。この新規機能では、次のような方法でサーバーの使用の度合いをバランスよくカスタマイズできます。

指定した検索基準は、ドメイン内のすべてのクライアント、サブネット上のすべてのクライアント、またはマシンごとに独立したクライアントに適用できます。


注 –

サーバー使用の優先順位を特定のマシンに設定すると、この優先順位は、そのマシンで実行中のユーザー、アプリケーション、処理、または他のクライアントすべてに適用されます。同じマシン上の別のクライアントに、異なるサーバー使用のパターンを設定できません。


広域ネットワーク (WAN) 上での NIS+

使用サーバーのカスタマイズは、多数のサブネットを持つ大規模ネットワークや、モデムまたは専用回線で接続された複数の地理的サイトにまたがるネットワークで使用すると特に効果があります。ネットワークの性能を最大にするには、サブネット間やより低速な接続によってリンクされたサイト間のトラフィックを最小限にする必要があります。これは、クライアントが使用できる NIS+ サーバーとその優先順位を指定することによって実現できます。このようにして、可能な限り NIS+ ネットワークトラフィックがローカルサブネットから出ないようにします。

サーバー使用の最適化 - 概要

この節では、サーバー使用のカスタマイズの概要について説明します。

nis_cachemgr が必要

使用サーバーをカスタマイズするには、クライアントで nis_cachemgr を実行している必要があります。クライアントマシンが nis_cachemgr を実行していない場合は、使用サーバーのカスタマイズ機能は利用できません。クライアントマシン上で、nis_cachemgr を実行していない場合は、そのクライアントは、デフォルトでのクライアントの検索動作で説明した方法で識別された最初のサーバーを使用します。

グローバルテーブルまたはローカルファイル

nisprefadm コマンドは、次のように、その使用方法により、ローカルの client_info ファイルまたはドメインの client_info テーブルのどちらかを作成します。


注意 – 注意 –

client_info ファイルと client_info テーブルを変更する場合は、nistbladm コマンドだけを使用してください。nistbladm などの、他の NIS+ コマンドは絶対に使用しないでください。


client_info テーブルまたは client_info ファイルを処理する場合は、-G または -L オプションを使用して、グローバルテーブル (-G) またはコマンドを実行中のマシンのローカルファイル (-L) のどちらにそのコマンドを適用させるかを指定する必要があります。

優先順位の番号の指定

サーバーの優先順位は、各サーバーに「優先順位を表す番号」を指定することによって制御されます。クライアントは、数値で指定された優先順位にしたがって NIS+ サーバーを検索します。検索の順序は、まず、優先順位格付け番号が小さいサーバーを先に検索し、次に大きい数値の付いたサーバーを検索します。

つまり、クライアントは、まず初めにゼロの優先順位の付いた NIS+ サーバーから名前空間情報を入手しようとします。使用できる優先順位=0 のサーバーがない場合、クライアントは、次に優先順位=1 のサーバーに問い合わせを行います。1 のサーバーが使用できない場合は、2 のサーバーを検出しようと、次に 3 というように、この検索は必要な情報が入手できるか、または検索するサーバーがなくなるまで続きます。

優先順位格付け番号は、nisprefadm コマンドを使用してサーバーに割り当てます。これについては、グローバルサーバー優先順位を指定するで説明しています。

サーバーの優先順位番号は、client_info テーブルと client_info ファイル内に格納されます。マシンに、固有の /var/nis/client_info ファイルがある場合は、このファイル内に格納された優先順位番号が使用されます。マシンに、固有の client_info ファイルがない場合は、ドメインの client_info.org_dir テーブル内に格納された優先順位番号が使用されます。このような client_info テーブルと client_info ファイルを、「優先サーバーのリスト」、または単に「サーバーリスト」と呼びます。

各クライアントのサーバーの優先順位を制御することで、サーバーの使用法をカスタマイズします。たとえば、ドメインに mailer という名前のクライアントマシンがあり、このマシンは名前空間情報を頻繁に利用していて、さらにこのドメインには、マスターサーバー (nismaster) と複製サーバー (replica1) の両方があるとします。ここで、mailer マシン用に nismaster に優先順位番号 1 を割り当て、replica1 に優先順位番号 0 を割り当てると、mailer マシンは、名前空間情報を、必ず最初に replica1 から入手しようとし、その後で nismaster に移ります。 次に、このサブネット上にある他のすべてのマシンに対して、優先順位番号を nismaster サーバーにはゼロを、replica1 には 1 を割り当てます。この結果、他のマシンは、必ず最初に nismaster に問い合わせを行います。

同じ優先順位番号を、ドメイン内の複数のサーバーに割り当てることができます。たとえば、nismaster1replica2 の両方に優先順位番号 0 を割り当て、replica3replica4replica5 に優先順位番号 1 を割り当てることができます。

サーバーの優先順位のデフォルト

client_info ファイルまたはテーブルがない場合は、キャッシュ管理プログラムが自動的に、ローカルサブネット上のすべてのサーバーにデフォルトの優先順位番号ゼロ (0) を割り当て、ローカルサブネットの外部のすべてのサーバーに無限大の優先順位を割り当てます。nisprefadm は、このデフォルトの優先順位番号を自由に変更するためのものです。

効率とサーバーの優先順位番号

クライアントは、すべてのサーバーを指定された優先順位番号を使用して昇順に検索しなければなりません。クライアントが指定された優先順位番号をもつすべてのサーバーを検索するには、5 秒以上必要です。つまり、ドメイン内に 1 つのマスターサーバーと 4 つの複製サーバーがあり、それぞれのサーバーに 0 から 4 の異なる優先順位番号を指定した場合、クライアントがこれらの優先レベルをすべて実行するには、25 秒以上かかるということです。

性能を最大にするために、サーバーの優先レベルを 2 つまたは 3 つ以上使用しないでください。たとえば、上記のような場合は、5 つのサーバーのうちの 1 つに優先順位= 0 を割り当て、他すべてのサーバーには優先順位 1 を割り当てるか、または 5 つのサーバーのうち 2 つに優先順位 1 を、残りの 3 つのサーバーに 2 を割り当てるといった方法をとってください。

優先サーバー限定と全サーバー

サーバーリストには、クライアントが優先サーバーを検出できなかった場合の処置も指定できます。「優先サーバー」とは、優先順位にゼロが指定されたサーバー、または nisprefadm を使用して優先順位番号を割り当てたサーバーです。

デフォルトでは、クライアントは優先サーバーに到達できないと、検索モードを使用して、ネットワーク上のあらゆる場所を検索し、検出できるあらゆるサーバーを検索します。これについては、デフォルトでのクライアントの検索動作で説明しています。このデフォルト機能を、nisprefadm -o オプションを使用して変更し、クライアントが優先サーバーだけを使用し、使用できるサーバーがない場合でも、優先サーバー以外のサーバーには問い合わせしないように指定できます。詳細については、優先サーバー限定指定を参照してください。


注 –

マシンのドメインに優先サーバーが全くない場合、このオプションは無視されます。


優先順位の表示

現在特定のクライアントマシンに対して有効なサーバーの優先順位を表示するには、-l オプションを指定した nisprefadm を実行してください。これについては、現行のサーバー優先順位の表示で説明しています。

サーバー名とクライアント名

サーバーまたはクライアントマシンを指定する場合、次の点に注意してください。

サーバーの優先順位

以下のマシンにサーバーの優先順位を指定する方法は、それぞれ次のとおりです。

サーバーの優先順位が有効になるタイミング

マシンまたはサブネットのサーバー優先順位の変更内容は、通常、指定したマシンがその nis_cachemgr データを更新するまでは有効になりません。マシンの nis_cachemgr がそのサーバー使用情報を更新するタイミングは、マシンがサーバーの優先順位をグローバル client_info テーブルまたはローカル /var/nis/client_info ファイルのどちらから入手するかによって決まります (グローバルテーブルまたはローカルファイルを参照してください)。

ただし、nisprefadm-F オプションを指定して実行すると、サーバーの優先順位の変更内容を強制的にただちに有効にできます。-F オプションを使用すると、nis_cachemgr で、ただちにその情報が更新されます。詳細は、優先順位の変更内容をただちに実現する方法を参照してください。

nisprefadm コマンドの使用方法

ここからの節では、nisprefadm コマンドを使用して、サーバーの優先順位を設定、変更、削除する方法について説明します。

nisprefadm コマンドは、クライアントが優先的に選択するサーバーを指定するために使用します。

nisprefadm コマンドの構文は次のとおりです。


nisprefadm -a|-m|-r|-u|-x|-l -L|-G [-o type] \
 [-d domain] \
 [-C  machine] \
 servers 
nisprefadm -F
表 20–1 nisprefadm コマンドのオプション

オプション 

説明 

-G

ドメインの org_dir ディレクトリ内に格納されるグローバル client_info テーブルを作成する。つまり、グローバルな優先されるサーバーリストを作成する。このオプションは、指定したサブネット上のすべてのマシンに対して優先順位を指定する場合は -C subnet、個別のマシンに優先順位を指定する場合は -C machine のどちらかと同時に使用しなければならない

-L

ローカルマシンの /var/nis ディレクトリに格納されるローカル client_info ファイルを作成する。つまり、コマンドを実行中のマシンにだけ適用される優先サーバーのリストを作成する

-o type

オプションを指定する。有効なオプションには、クライアントが接続できる優先サーバーがない場合、優先サーバー以外のサーバーを使用できるように指定する pref_type=all と、指定した優先サーバーだけをクライアントが使用するように指定する pref_type=pref_only がある

-d domain

指定したドメインまたはサブドメインに、グローバルな優先サーバーの client_info テーブルを作成する

-C subnet

優先順位を適用するサブネットの番号 

-C machine

クライアントマシン名 

servers

1 つまたは複数の NIS+ サーバー。ここで指定されたサーバーは優先的に選択される 

-a

サーバーリストに指定サーバーを追加する 

-m

サーバーリストを変更する。たとえば、-m オプションを使用すると、1 つまたは複数のサーバーに指定された優先順位番号を変更できる

-r

サーバーリストから指定したサーバーを削除する 

-u

サーバーリストを消去してから、指定したサーバーを追加する (つまり、現行のサーバーリストを優先サーバーの新規リストに置換する) 

-x

サーバーリストを完全に削除する 

-l

現行の優先サーバー情報を一覧表示 (表示) する 

-F

優先サーバーのリストを強制的にただちに変更する 


注 –

-C machine オプションは、-L (ローカル) フラグとともに使用しても無効となるので、使用しないでください。たとえば、nisprefadmaltair マシン上で実行しているとします。ここで、-L フラグを使用して、指定した優先順位が altair のローカル client_info ファイルに書き込まれるように指定し、さらに、-C vega オプションを使用して、作成した優先順位が vega マシンに適用されるように指定します。すると、nisprefadm コマンドは、vega 用の優先順位を altair のファイルに書き込みますが、vega は、サーバーの優先順位を必ず自分のローカル client_info ファイルまたはドメインのグローバル client_info テーブルから入手するため、これらの情報を参照することはありません。 そのため、-C オプションは、nisprefadm-G (グローバル) フラグを指定して実行する場合にだけ意味をもちます。


現行のサーバー優先順位の表示

現行のサーバー優先順位を表示するには、nisprefadm-l オプションを指定して実行してください。

マシンに指定された優先順位の表示方法

    そのマシン上で、nisprefadm-L-l を指定して実行します。


sirius# nisprefadm -L -l

このようにすると、マシンのローカル /var/nis/client_info ファイル内に定義されたサーバーの優先順位がすべて表示されます。ローカルファイルがない場合は、情報は表示されず、シェルプロンプトに戻ります。

1 台のマシンに設定されたグローバルな優先順位の表示方法

    nisprefadm に、-l-G-C machinename オプションを指定して実行します。


sirius# nisprefadm -G -l -C  machinename

machinename には、マシンの IP アドレス (番号) が入ります。

このようにすると、このサブネット用にドメインのグローバル client_info テーブル内に設定された優先順位が表示されます。

サブネットに設定されたグローバル優先順位の表示方法

    nisprefadm に、-l-G-C subnet オプションを指定して実行します。


sirius# nisprefadm -G -l -C  subnet

subnet には、サブネットの IP アドレス (番号) が入ります。

このようにすると、このサブネット用にドメインのグローバル client_info テーブル内に設定された優先順位が表示されます。

優先順位格付け番号の指定方法

デフォルトでは、-a オプションの後ろにリストしたサーバーには、すべて優先順位番号ゼロが指定されます。別の優先順位番号を指定する場合は、次のように、サーバー名の直後に指定する番号をカッコで囲んで入れてください (-a name(n)) 。 name にはサーバー名が、n には優先順位番号が入ります。

たとえば、replica2 サーバーに優先順位番号 3 を割り当てる場合は、次のように入力します。


# nisprefadm -G -a replica2(3)

注 –

シェルの中には、次のように要素を 2 重引用符で囲まなければならないものがあります。"name(n)"


サーバーの優先順位格付け番号の基礎知識については、優先順位の番号の指定を参照してください。

グローバルサーバー優先順位を指定する

ローカルまたは遠隔ドメインに、グローバルサーバー優先順位を設定できます。優先順位は、個別のマシンと 1 つのサブネット上のすべてのマシンに設定できます。

この節では、NIS+ ドメインのマスターサーバーに存在するグローバル client_info テーブル内にサーバーの優先順位を設定する方法を説明します。マスターサーバー上にテーブルがある場合、NIS+ は、そのテーブルをドメインの既存の複製サーバー上に複写します。

サーバーの優先順位番号を割り当てるには、次のどちらかを指定して nisprefadm を実行してください。

サブネットにグローバル優先順位を設定する方法

1 つのサブネット上のすべてのマシンのグローバルテーブルにサーバーの優先順位を割り当てるには、次のようにします。

    nisprefadm-G および -C subnet オプションを指定して実行します。


# nisprefadm -G -a -C subnet servers (preferences)

引数の意味は、それぞれ以下のとおりです。


polaris# nisprefadm -a -G -C 123.123.123.123 nismaster1 \
replica3 "manf.replica6(1)"

個別のマシンにグローバル優先順位を設定する方法

    -G-C マシンオプションを指定した nisprefadm を実行します。


# nisprefadm -G -a -C machine servers (preferences)

引数の意味は、それぞれ以下のとおりです。


polaris# nisprefadm -u -G -C cygnus replica7 replica9

遠隔ドメインにグローバル優先順位を設定する方法

遠隔ドメイン内の個別のマシン、または遠隔ドメイン内の 1 つのサブネット上にあるすべてのマシンにサーバーの優先順位を割り当てるには、次のようにします。

    nisprefadm-C-G-d オプションを指定して実行します。


# nisprefadm -a -G -C  name \
 -d  domain servers (preferences)

引数の意味は、それぞれ以下のとおりです。

たとえば、デフォルトの優先順位番号ゼロを指定した nismaster2 サーバーを、遠隔ドメイン sales.doc.com 内のサブネット 111.11.111.11 の優先サーバーのリストに追加する場合は、次のように入力します。


polaris# nisprefadm -a -G -C 111.11.111.11 -d sales.doc.com. nismaster2

ローカルサーバー優先順位を指定する

ここでは、ローカル client_info ファイルの作成および変更方法について説明します。ローカル client_info ファイルは、このファイルが存在するマシンにサーバーの優先順位を指定するためのものです。

マシンに /var/nis/client_info ファイルがある場合、このマシンは、NIS+ サーバー上のグローバル client_info テーブルではなく、そのマシンのローカルファイルからサーバーの優先順位を入手します。つまり、ローカルファイルはグローバルテーブルよりも優先されます。

サーバーの優先順位を割り当てるには、次のどちらかを指定した nisprefadm を実行してください。

ローカルマシン上に優先順位を設定する方法

nisprefadm コマンドを実行中のローカルマシンにサーバーの優先順位を割り当てるには、次のようにします。

    nisprefadm-L オプションと -a または -u オプションを指定して実行します。


# nisprefadm -a -L servers(preferences)

ここで、servers (preferences) には、1 つまたは複数のサーバーが入ります。それらには優先順位格付け番号を指定できます。

たとえば、deneb マシンが NIS+ 情報を、まず初めにデフォルトの優先順位番号ゼロが指定された replica3 から検索し、次に manf.doc.com ドメイン内の (優先順位番号 1 が指定された) サーバー replica6 を検索するように指定する場合は、次のように入力します。


deneb# nisprefadm -a -L replica3 replica6.manf(1) 

サーバーの優先順位を変更する

サーバーの優先順位番号は、変更することができ、また別のサーバーに優先順位番号の割り当てを移すこともできます

優先サーバーまたはサーバーに割り当てた優先順位番号を変更するには、nisprefadm-m oldserver-=newserver(n) オプションを指定して実行してください。

サーバーの優先順位番号を変更する方法

    nisprefadm-m server=server(new) オプションを指定して実行します。


# nisprefadm -L|-G -C name -m oldserver=newserver(n)

引数の意味は、それぞれ以下のとおりです。

たとえば、deneb マシン上で、deneb のローカル client_info ファイルの replica6.manf サーバーに指定された番号を 2 に変更する場合は、次のように入力します。


deneb# nisprefadm -L -m replica6.manf=replica6.manf(2)

優先順位リスト内で 1 つのサーバーを別のサーバーに置換する方法

優先順位リスト内で、1 つのサーバーを別のサーバーに変更するには、次のようにします。

    nisprefadm-m oldserver=newserver オプションを指定して実行します。


# nisprefadm -L|-G -C name -m \
 oldserver=newserver(prefnumber)

引数の意味は、それぞれ以下のとおりです。

-G オプションを使用して、グローバル client_info テーブル内のサーバーを置換する場合には、その置換内容は -C オプションで特定したサブネットまたはマシンにだけ適用されるので注意してください。それ以外にリストされている置換対象 (旧) サーバーは影響を受けません。

たとえば、3 つのサブネットを持つドメインを所有していて、この中の 2 つのサブネット用に replica1 サーバーが優先サーバーのリストに入っている場合を考えます。これ以上 replica1 を使用しないので、使用サーバーから除外する場合は、nisprefadm -m を実行して、最初のサブネットの replica1 を新規サーバーに置換します。この時、2 番目のサブネットに対しても同様の処理を行うまでは、replica1 はそのサブネットの優先サーバーのリストに入っています。個別のマシンの優先サーバーでも同様です。

たとえば、ドメインのグローバル client_info テーブル内で、サブネット 123.12.123.12 用に指定された replica3 サーバーを replica6 サーバーに置換し、replica6 に優先順位番号 1 を割り当てる場合は、次のように入力します。


nismaster# nisprefadm -G -C 123.12.123.12 -m replica3 replica6(1)

優先順位リストからサーバーを削除する方法

優先順位リストから 1 つまたは複数のサーバーを削除するには、次のようにします。

    nisprefadm-r オプションを指定して実行します。


# nisprefadm -L|-G -C name -r servers

引数の意味は、それぞれ以下のとおりです。

たとえば、ドメインのグローバル client_info テーブル内から、マシン polaris に指定された replica3 および replica6.manf サーバーを削除する場合は、次のように入力します。


polaris# nisprefadm -G -C polaris -r replica3 replica6.manf 

優先サーバーリスト全体を置換する方法

グローバル client_info テーブルまたはマシンのローカル client_info ファイルどちらかの中にある、サブネットまたはマシンに指定された優先サーバーのリスト全体を置換するには、nisprefadm-u オプションを指定して実行してください。

-u オプションは、マシンまたはサブネットに指定されたサーバーの優先順位を、まず初めにすべて削除してから指定した新規の優先順位を追加しますが、これ以外は、-a オプションと同じ処理を行います。既存の優先順位がある場合、-a オプションでは旧リストに新しい優先順位を追加します。

-u オプションの使用例については、個別のマシンにグローバル優先順位を設定する方法を参照してください。

優先サーバー限定指定

優先サーバーが使用できない場合に、クライアントがとる動作を指定できます。

デフォルトでは、クライアントは、優先サーバーに到達できない場合、検出できたサーバーであればどれでも使用してしまいます。優先サーバー限定オプションを設定すると、クライアントが優先サーバーだけを使用するように指定できます。優先サーバー限定オプションと全サーバーオプションの基礎知識については、優先サーバー限定と全サーバーを参照してください。

優先サーバーが使用できない場合のクライアントの動作を指定するには、nisprefadm-o value オプションを指定して実行してください。

優先サーバーだけを指定する方法

サーバーリストを使用するクライアントが、リスト内に記述されたサーバーだけから NIS+ 情報を入手するように指定するには、次のようにします。

    nisprefadm-o pref_only オプションを指定して実行してください。


# nisprefadm -L|-G -o pref_only

引数の意味は、それぞれ以下のとおりです。


注 –

このオプションは、優先サーバーが全くないドメインでは無視されます。


たとえば、altair のローカル client_info ファイル内に、altair が必ず優先サーバーを使用し、altair の優先サーバーリストにないサーバーは使用しないように指定するには、次のように入力します。


altair# nisprefadm -L -o pref_only

優先サーバー以外のサーバーを使用する方法

サーバーリストを使用するクライアントが、優先サーバーが使用できない場合に、リストに記載されていないサーバーから NIS+ 情報を入手するように指定するには、次のようにします。

    nisprefadm-o all オプションを指定して実行してください。


# nisprefadm -L|-G -o all

引数の意味は、それぞれ以下のとおりです。


注 –

これは、デフォルトの動作です。そのため、-o all オプションは、以前に -o pref_only オプションを使用して優先サーバーだけを指定していた場合に限り使用する必要があります。


たとえば、altair が優先サーバーを使用できない場合には、altair のローカル client_info ファイル内に、優先サーバー以外のサーバーを使用できるように指定し直すには、次のように入力してください。


altair# nisprefadm -L -o all

サーバーの優先順位の使用の終了

使用サーバーのカスタマイズ機能の使用を終了し、デフォルトでのクライアントの検索動作で説明した NIS+ 情報の入手方法に戻すことができます。

サーバーの優先順位の使用を終了するには、nisprefadm-x オプションを指定して実行してください。


注 –

サーバーの優先順位の使用を終了する場合、クライアントは、サーバーの優先順位が有効になるタイミングで説明していることがらが通常どおり進行するまではサーバーの優先順位の使用を終了しません。また、サーバーの優先順位の使用を強制的にただちに終了させることもできます。これについては、サーバーの優先順位の有効化で説明しています。


グローバルサーバー優先順位を削除する方法

    nisprefadm-G および -x オプションを指定して実行してください。


# nisprefadm -G -x

これにより、グローバルサーバーの優先順位が削除されます。

ローカルサーバー優先順位を削除する方法

ローカル優先順位を終了するということは、次の異なる 3 つの事項のいずれか 1 つを意味すると考えられます。

ローカルからグローバルサブネットの優先順位に置換する方法

    マシンの /var/nis/client_info ファイルを削除します。


# rm /var/nis/client_info

この結果、マシンはドメインのグローバル client_info テーブル内でマシンのサブネットに指定された優先順位を使用するようになります。

ローカルからマシン固有のグローバル優先順位に置換する方法

  1. マシンの /var/nis/client_info ファイルを削除します。


    # rm /var/nis/client_info
    
  2. -G-C オプションを使用して、グローバルテーブル内にそのマシン用の優先順位を指定します。

    詳細は、個別のマシンにグローバル優先順位を設定する方法を参照してください。

マシンにサーバーの優先順位の使用を中止させる方法

  1. マシンの /var/nis/client_info ファイルを削除します。


    # rm /var/nis/client_info
    

    マシンのドメインにグローバル client_info テーブルがない場合、必要な処理はこの手順だけです。ドメインに client_info テーブルがある場合は、手順 2 に進んでください。

  2. 空の /var/nis/client_info ファイルを作成します。


    # touch /var/nis/client_info
    

    マシンに固有の /var/nis/client_info ファイルがある場合、そのマシンは client_info テーブルのグローバル優先順位は使用しません。マシンに空の /var/nis/client_info ファイルがある場合、そのマシンはどの優先順位も使用せず、デフォルトでのクライアントの検索動作で説明した方法で NIS+ 情報を入手します。

サーバーの優先順位の有効化

使用サーバーの変更内容は通常、クライアントマシンをリブートするか、またはマシンのキャッシュ管理プログラムを更新した時に有効になります。

ローカル client_infoファイル (-L オプション) を使用するローカルマシン上で、nisprefadm を使用してサーバーの優先順位の設定または変更した場合は、その変更内容はただちに有効になります。

グローバル client_info テーブル (-G オプション) からサーバーの優先順位を入手しているマシンの場合、nisprefadm-F オプションを指定して実行すると、サーバーの優先順位に加えた変更を強制的にただちに有効にできます。


# nisprefadm -F

-F オプションとは、マシンのキャッシュ管理プログラムに、そのサーバーの優先順位情報をドメインのグローバル client_info テーブルを使って強制的にただちに更新させるオプションです。nisprefadm -F を実行するマシンが、/var/nis 内にそのマシン固有のローカル client_info ファイルを持つ場合、そのマシン上で nisprefadm -F を実行しても無効になります。


注 –

-F オプションは、他の nisprefadm オプションと同時に使用できません。nisprefadm -F コマンドは、必ず、このコマンドを適用するマシン上で、単独で使用してください。-G オプションを使用して、ドメイン内にあるすべてのマシンのキャッシュ管理プログラムを更新できません。nisprefadm -F コマンドは、各マシン上でそれぞれ実行する必要があります。


優先順位の変更内容をただちに実現する方法

新しく作成、または変更したサーバーリストを、指定したマシン上で強制的にただちに有効にするためには、次のようにします。

    マシン上で、nisprefadm-F オプションを指定して実行します。


# nisprefadm -F

たとえば、vega の優先サーバーリストへの変更内容を、強制的にただちに実現させるには (ローカルまたはグローバルのどちらの場合でも)、次のように入力してください。


vega# nisprefadm -F

第 21 章 NIS+ のバックアップと復元

この章では、NIS+ 名前空間のバックアップ方法と復元方法について説明します。

NIS+ のバックアップ機能と復元機能を使用すると、NIS+ 名前空間の保存と復元を素早く簡単に行うことができます。また、これらの機能を使用すると、新しい複製サーバーを簡単に作成でき、さらにそのサーバーをオンラインにするためにかかる時間を削減できます。これらのタスクは、次の 2 種類のコマンドを使用して実行します。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


nisbackup を使用して名前空間をバックアップする

nisbackup コマンドは、1 つまたは複数の NIS+ ディレクトリオブジェクト、または 1 つの名前空間全体を、指定した UNIX ファイルシステムのディレクトリにバックアップします。


注 –

nisbackup コマンドは、必ずマスターサーバー上で実行してください。複製サーバー上では絶対に実行しないでください。


nisbackup コマンドは、バックアップコマンドが動作するように設定された時点の NIS+ 名前空間をコピーします。この記録には、現行のすべての NIS+ データと、認証されたネットワーク管理者が NIS+ 名前空間に入力した変更が含まれます。ただし、まだ NIS+ テーブルにチェックポイントされていない ( NIS+ テーブルに記入されていない) ものは除きます。このバックアップ処理は、NIS+ データのチェックや訂正は行いません。テーブル内のデータが破壊されると、破壊されたデータは、有効なデータと見分けがつかない状態にバックアップされます。

nisbackup コマンドは、マシンがそのマスターサーバーであるディレクトリオブジェクトだけをバックアップします。つまり、nisbackup は、マスターサーバー上でだけ使用でき、複製サーバー上では使用できません。

バックアップ処理が、他の処理に割り込まれたり、またはその処理を正常に終了できない場合は、処理を停止し、転送先ディレクトリ内に格納された以前のバックアップファイルをすべて復元します。

nisbackup の構文

nisbackup コマンドで使用する構文は、次のとおりです。


nisbackup [-v][-a] backupdir objects

引数の意味は、それぞれ以下のとおりです。

nisbackup コマンドには、次のようなオプションを指定できます。

表 21–1 nisbackup コマンドのオプション

オプション 

種類 

-v

冗長モード。このモードは、追加情報を出力する 

-a

すべて。サーバーがマスターである NIS+ ディレクトリオブジェクトをすべてバックアップする。これには、このサーバーがマスターであるサブドメインのディレクトリオブジェクトも含まれる。ただし、他のマスターサーバーを持つサブドメインのディレクトリオブジェクトはバックアップされない  

nisbackup コマンドは、バックアップする NIS+ ディレクトリオブジェクトのマスターサーバー上で実行する必要があります。

バックアップする NIS+ ディレクトリオブジェクトを指定する場合、そのディレクトリ名には完全指定名、または部分指定名を使用できます。

マルチレベルディレクトリをバックアップする場合、下位ディレクトリのバックアップファイルは、自動的にバックアップ転送先ディレクトリのサブディレクトリ内に配置されます。

nisbackup によるバックアップの対象

nisbackup を使用する場合、nisbackup はサーバー固有のコマンドであることに注意してください。-a オプションを使用するかどうかに関係なく、nisbackup は、このコマンドを実行中のサーバーがマスターサーバーであるディレクトリだけをバックアップします。他にマスターサーバーを持つ NIS+ ディレクトリオブジェクトは、バックアップされません。

たとえば、submaster1 サーバーは sales.doc.com. ディレクトリオブジェクトのマスターサーバーで、west.sales.doc.com. ディレクトリオブジェクトの複製サーバーでもあると想定します。 この場合、submaster1 上で nisbackup を実行すると、sales.doc.com. ディレクトリオブジェクトだけがバックアップされます。

このサーバー固有の原則には次のものがあります。

バックアップ転送先ディレクトリ

バックアップ転送先ディレクトリは、バックアップ対象のサーバーが使用できるものでなければなりませんが、サーバー上に物理的にマウントしていない転送先ディレクトリを使用するのも良い方法です。この場合、サーバーがダメージを受けても、バックアップディレクトリは使用可能です。

独立した転送先ディレクトリは、バックアップ対象となるマスターサーバーごとに使用する必要があります。混乱を避けるために、マスターサーバーのマシン名を転送先ディレクトリ内に組み込むと良いでしょう。たとえば、master1 マシン上で実行した nisbackup の転送先ディレクトリは、/var/master1_bakup という名前にします。


注意 – 注意 –

指定した 1 つの転送先ディレクトリに対して、複数のサーバーをバックアップしないでください。異なるマスターサーバーには、必ず、異なる転送先ディレクトリを使用してください。それは、指定した転送先ディレクトリに、1 つまたは複数の NIS+ ディレクトリオブジェクトをバックアップするたびに、このディレクト内のこれらの NIS+ ディレクトリオブジェクト用のそれ以前のバックアップファイルが上書きされるからです。


NIS+ のバックアップを日付順に保存する

バックアップファイルを日付順に保存するには、少なくとも次の 2 つの方法があります。

特定の NIS ディレクトリをバックアップする

特定の NIS+ ディレクトリオブジェクトをバックアップするには、これらのディレクトリをバックアップ転送先ディレクトリの後ろに入力します。

たとえば、ルート、sales ドメイン、manf ドメインの 3 つの org_dir ディレクトリオブジェクトを /master1_backup ディレクトリにバックアップするには、nisbackupmaster1 マシン上で次のように実行します。


master1# nisbackup /var/master1_bakup org_dir org_dir.sales org_dir.manf

すべての NIS+ 名前空間をバックアップする

すべての NIS+ 名前空間をバックアップする場合は、ルートマスターサーバー上で、nisbackup コマンドに -a オプションを指定して実行します。

-a オプションを使用する場合は、バックアップする NIS+ ディレクトリオブジェクトは指定しません。サーバー上とそのサーバーの下にあるサブドメインのすべての NIS+ ディレクトリオブジェクトは、自動的にバックアップされます。

たとえば、doc.com. 名前空間を /master1_bakup ディレクトリにバックアップするには、ルートマスター上で、nisbackup を次のように実行してください。


rootmaster# nisbackup -a /var/master1_bakup

バックアップディレクトリの構造

ドメイン上でバックアップを実行すると、バックアップ転送先ディレクトリ内に、NIS+ ディレクトリオブジェクトごとにサブディレクトリが作成されます。これらのサブディレクトリ名は、完全指定の NIS+ ディレクトリオブジェクト名の末尾にピリオドが付いたものになります。

-a オプションを使用してすべての NIS+ オブジェクトをフルバックアップした場合は、3 つの関連ディレクトリオブジェクト ( domain.org_dir.domain.、および groups_dir.domain.) がすべてバックアップされ、3 つのサブディレクトリが作成されます。 複数のオブジェクトをバックアップすると、サブディレクトリはバックアップしたそれぞれのオブジェクトごとに作成されます。

複数の NIS+ ディレクトリオブジェクトのバックアップサブディレクトリは、それがサブドメインであるかどうかに関係なく、親バックアップ転送先ディレクトリのサブディレクトリになるので注意してください。つまり、nisbackup は、親バックアップ転送先ディレクトリの下にドメインの階層を複製しません。その代わりに、バックアップサブディレクトリはすべて、転送先ディレクトリの単純なサブディレクトリになります。

たとえば、doc.com. のルート、salesmanf のからディレクトリオブジェクトを /var/master1_bakup ディレクトリにバックアップする場合、図 21–1 に示すように、/var/master1_bakup ディレクトリ内には 9 個のサブディレクトリが作成されます。

図 21–1 nisbackup によって作成されたディレクトリの例

この図は、nisbackup によって作成されたディレクトリの例を示しています。

バックアップファイル

バックアップ転送先ディレクトリには、この転送先ディレクトリにバックアップされた最新の NIS+ ディレクトリオブジェクトを表示する backup_list ファイルが入っています。

各サブディレクトリには、ファイルが 2 つと /data サブディレクトリが 1 つ組み込まれます。このファイルを次に示します。

/data サブディレクトリには、1 つまたは複数の以下のファイルが入っています。

nisrestore を使用して NIS+ 名前空間を復元する

nisrestore コマンドによって、nisbackup を使用して作成したバックアップファイル内に格納されたデータと一致する NIS+ ディレクトリオブジェクトが再現されます。このコマンドを使用すると、NIS+ サーバーの復元、壊れたディレクトリオブジェクトの置換、または新しい NIS+ サーバーに NIS+ データを読み込めます。

nisrestore を実行するための前提条件

nisrestore を使用するには、nisrestore から NIS+ データを受け取るマシンは、NIS+ サーバーとして設定されている必要があります (NIS+ サーバーの設定の詳細については、第 4 章「スクリプトを使用した NIS+ の設定」を参照)。つまり、次の設定が行われていなければなりません。


注意 – 注意 –

上記の 3 つの前提条件への追加条件として、マシン上で rpc.nisd デーモンを実行しないでください。rpc.nisd デーモンを実行する場合は、rpc.nisd を消去してから nisrestore を実行してください。


nisrestore の構文

nisrestore コマンドでは、次の構文を使用します。


nisrestore [-fv][-a][-t] backupdir [directory_objects]

引数の意味は、それぞれ以下のとおりです。

nisrestore コマンドには、以下のオプションを指定できます。

表 21–2 nisbackup コマンドのオプション

オプション 

種類 

-a

すべて。バックアップディレクトリ内に入っている NIS+ ディレクトリオブジェクトをすべて復元する 

-f

サーバーが、ディレクトリオブジェクトのサーバーリストに記載されているかどうかを検査せずに、強制的に復元を行う。このオプションは、ルートマスターサーバーを復元する時、または「オブジェクトを検出できません」といった種類のエラーを受け取った場合に使用する必要がある 

-v

冗長モード。このモードは、追加情報を出力する 

-t

このオプションを使用すると、バックアップディレクトリ内に格納された NIS+ ディレクトリオブジェクトがすべて表示される。オブジェクトの復元は行われない 

nisrestore を使用する

NIS+ バックアップファイルから NIS+ データを復元するには、nisrestore コマンドを使用します。

たとえば、org_dir.doc.com. ディレクトリオブジェクトを replica1 サーバーに復元する場合は、スーパーユーザーになって replica1 にログインします。で説明した前提条件が満たされていることを確認してから、以下のように nisrestore を実行します。


replica1# nisrestore /var/master1_bakup org_dir.doc.com. 

nisrestore には、以下の項目が適用されます。


master1# nisrestore -f -a /var/master1_bakup

バックアップと復元を使用して複製サーバーを設定する

NIS+ バックアップおよび復元機能を使用すると、NIS+ データを新しい複製サーバーに速く読み込むことができます。名前空間が広い場合は、この方法の方が、nisping を使用するよりもマスターサーバーからのデータを非常に速く入手できます。

nisbackupnisrestore を使用して新しい複製サーバーを設定するには、次の手順を行います。

  1. マスター上で nisserver を実行し、新しい複製サーバーを作成します。

  2. 複製サーバー上の rpc.nisd を終了させます。

    この処理は、nisping コマンドを使用した名前空間データのマスターから複製への自動転送に割り込んで実行されます。

  3. マスターサーバー上で、nisbackup を実行します。

  4. 新しい複製サーバー上で nisrestore を実行し、NIS+ データを読み込みます。

  5. 新しい複製サーバー上で rpc.nisd を再実行します。

サーバーマシンを置換する

nisbackupnisrestore を使用すると、サーバーとして使用中のマシンと別のマシンをすぐに置換できます。たとえば、旧サーバーを新しい高速のサーバーと交換すると、ネットワークのパフォーマンスを向上させることができます。

マシンを置換する場合の必要条件

NIS+ サーバーとして使用中のマシンを他のマシンに置き換える場合には、次の条件が必要です。

サーバーマシンの置換方法

サーバーマシンを置換する場合は、次の手順に従ってください。

  1. 旧サーバーが管理するドメインのマスターサーバー上で nisbackup を実行します。

    詳細は、すべての NIS+ 名前空間をバックアップするを参照してください。置換する旧サーバーがマスターサーバーである場合もあるので注意してください。この場合は、この旧マスターサーバー上で nisbackup を実行します。

  2. 旧サーバーの /var/nis/NIS_COLD_START ファイルをバックアップディレクトリにコピーします。

  3. 旧サーバーの /etc/.rootkey ファイルをバックアップディレクトリにコピーします。

  4. 旧サーバーをネットワークから切り離します。

  5. 新しいサーバーをネットワークに接続します。

  6. 新しいサーバーに旧サーバーと同じ IP アドレス (番号) を割り当てます。

  7. 新しいサーバーに旧サーバーと同じマシン名を割り当てます。

  8. 必要な場合は、新しいサーバー上で rpc.nisd を消去します。

  9. 新しいサーバー上で nisrestore を実行し、NIS+ データを読み込みます。

    詳細は、nisrestore を使用して NIS+ 名前空間を復元するを参照してください。

  10. .rootkey ファイルを、バックアップディレクトリから新しいサーバーの /etc にコピーします。

  11. NIS_COLD_START ファイルを、バックアップディレクトリから新しいサーバーの /var/nis にコピーします。

  12. 新しいサーバーを再起動します。

第 22 章 NIS+ の削除

この章では、NIS+ ディレクトリ管理コマンドを使用して、クライアントまたはサーバーから NIS+ を削除する方法と、NIS+ 名前空間全体を削除する方法について説明します。

NIS+ 複製サーバーを、ディレクトリから分離し、そのドメインの複製サーバーとして機能しないようにする場合は、nisrmdir コマンドを参照してください。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


クライアントマシンから NIS+ を削除する

この節では、クライアントマシンから NIS+ を削除する方法について説明します。ただし、クライアントマシンから NIS+ を削除しても、ネットワークから NIS+ ネームサービスを削除したことにはならないので注意してください。ネットワークから NIS+ ネームサービスを削除して、NIS または /etc ディレクトリのファイルをネームサービスとして使用する状態に戻す場合は、NIS+ 名前空間を削除するを参照してください。

nisclient を使用してインストールした NIS+ を削除する

第 4 章「スクリプトを使用した NIS+ の設定」の説明に沿って nisclient - i スクリプトに使用して、NIS+ クライアントとして設定したクライアントマシンから NIS+ を削除するには、 nisclient-r オプションで実行します。


client# nisclient -r

nisclient -r では、nisclient -i 1 回分の処理が取り消されます。つまり、nisclient -i 実行以前にクライアントによって使用されていたネーミングシステム (NIS や /etc ディレクトリのファイルなど) が再び使用されるようになります。

NIS+ コマンドでインストールした NIS+ を削除する

第 4 章「スクリプトを使用した NIS+ の設定」の説明に沿って nisaddcreddomainname、および nisinit コマンドを使用して、NIS+ クライアントとして設定されたクライアントマシンから NIS+ を削除するには、 次の手順を行います。

  1. ファイル .rootkey を削除します。


    client# rm -f /etc/.rootkey
    
  2. keyservnis_cachemgrnscd のプロセス ID を確認して、終了します。


    client# ps -ef | grep keyserv
    	root 714 1 67 16:34:44 ? keyserv
    client# kill -9 714
    client# ps -ef | grep nis_cachemgr
    	root 123 1 67 16:34:44 ? nis_cachemgr
    client# kill -9 123
    client# ps -ef | grep nscd
    	root 707 1 67 16:34:44 ? nscd
    client# kill -9 707
    
  3. /var/nis ディレクトリとその下のファイルを削除します。


    clientmachine# rm -rf /var/nis/*
    

サーバーから NIS+ を削除する

この節では、NIS+ サーバーから NIS+ を削除する方法を示します。

ただし、サーバーから NIS+ を削除しても、ネットワークから NIS+ ネームサービスを削除したことにはならないので注意してください。ネットワークから NIS+ ネームサービスを削除して、NIS または /etc ディレクトリのファイルをネームサービスとして使用する状態に戻す場合は、NIS+ 名前空間を削除するを参照してください。


注 –

NIS+ サーバーとして使用しているマシンを、別のマシンに置換できます。サーバーマシンを置換するを参照してください。


サーバーから NIS+ を削除する手順は以下のとおりです。

  1. クライアントから NIS+ を削除する作業を行います。

    NIS+ サーバーも NIS+ クライアントの一種なので、まずクライアントに関連する部分を削除する必要があります。このためには nisclient -r (nisclient を使用してインストールした NIS+ を削除するを参照) か、NIS+ コマンド (NIS+ コマンドでインストールした NIS+ を削除するを参照) を使用します。

  2. サーバーの groups_dir ディレクトリと org_dir ディレクトリを削除する。


    server# nisrmdir -f groups_dir. domainname
    server# nisrmdir -f org_dir. domainname
    
  3. keyservrpc.nisdnis_cachemgrnscd のプロセス ID を確認し、終了します。


    server# ps -ef | grep rpc.nisd
    	root 137 1 67 16:34:44 ? rpc.nisd
    server# kill -9 137
    server# ps -ef | grep keyserv
    	root 714 1 67 16:34:44 ? keyserv
    server# kill -9 714
    server# ps -ef | grep nis_cachemgr
    	root 123 1 67 16:34:44 ? nis_cachemgr
    server# kill -9 123
    server# ps -ef | grep nscd
    	root 707 1 67 16:34:44 ? nscd
    server# kill -9 707
    
  4. /var/nis ディレクトリとその下のファイルを削除します。


    rootmaster# rm -rf /var/nis/*
    

NIS+ 名前空間を削除する

NIS+ 名前空間を削除し、NIS または /etc ディレクトリのファイルをネームサービスとして使用する状態に戻す手順は以下のとおりです。

  1. ルートマスターから .rootkey ファイルを削除します。


    rootmaster# rm -f /etc/.rootkey
    
  2. ルートマスターのルートドメインから groups_dir サブディレクトリと org_dir サブディレクトリを削除します。


    rootmaster# nisrmdir -f groups_dir.domainname
    rootmaster# nisrmdir -f org_dir.domainname
    

    domainname には、ルートドメイン名 (doc.com など) が入ります。

  3. ルートドメインを削除します。


    rootmaster# nisrmdir -f domainname
    

    domainname には、ルートドメイン名 (doc.com など) が入ります。

  4. keyservrpc.nisdnis_cachemgrnscd のプロセス ID を確認し、終了します。


    rootmaster# ps -ef | grep rpc.nisd
    	root 137 1 67 16:34:44 ? rpc.nisd
    rootmaster# kill -9 137
    rootmaster# ps -ef | grep keyserv 
    	root 714 1 67 16:34:44 ? keyserv
    rootmaster# kill -9 714
    rootmaster# ps -ef | grep nis_cachemgr
    	root 123 1 67 16:34:44 ? nis_cachemgr
    rootmaster# kill -9 123
    rootmaster# ps -ef | grep nscd
    	root 707 1 67 16:34:44 ? nscd
    rootmaster# kill -9 707
    
  5. 新しいドメインを作成します


    rootmaster# domainname name
    

    name には、新しいドメイン名 (NIS+ インストール前のドメイン名など) が入ります。

  6. 既存の /etc/defaultdomain ファイルを削除します。


    rootmaster# rm /etc/defaultdomain
    
  7. /etc/defaultdomain ファイルを、新しいドメイン名を使用して作成し直します。


    rootmaster# domainname > /etc/defaultdomain
    
  8. nsswitch.conf ファイルを元のファイルに戻します。

    サーバーを nisserver -r を使用して設定した場合は、以下のコマンドを使用します。


    rootmaster# cp /etc/nsswitch.conf.no_nisplus /etc/nsswitch.conf 
    

    また、デフォルトスイッチテンプレートファイルの 1 つをコピーする方法もあります。NIS スイッチのデフォルトファイルテンプレートを使用する場合は、以下のコマンドを入力します。


    rootmaster# cp /etc/nsswitch.nis etc/nsswitch.conf 
    

    /etc ファイルのデフォルトスイッチファイルテンプレートを使用する場合は、以下のコマンドを入力します。


    rootmaster# cp /etc/nsswitch.files etc/nsswitch.conf 
    
  9. keyserv プロセスを再起動します。


    rootmaster# keyserv
    
  10. /var/nis ディレクトリとその下のファイルを削除します。


    rootmaster# rm -rf /var/nis/*
    
  11. この状態で、別のネームサービス (NIS または /etc ファイル) を再起動できます。

第 23 章 NIS+ テーブルの情報

この章では、Solaris オペレーティング環境で提供されているデフォルトの NIS+ テーブルについて概要を説明します。対応するマニュアルページも参照してください。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。Solaris 9 オペレーティング環境には、NIS+ から LDAP への移行を支援するツールが用意されています (『Solaris のシステム管理 (ネーミング とディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ テーブル

NIS+ 環境では、ほとんどの名前空間の情報は、NIS+ テーブルに格納されます。

ネームサービスがないと、ほとんどのネットワーク情報は /etc ファイルに格納され、ほとんどすべての NIS+ テーブルが対応する /etc ファイルを持ちます。NIS サービスでは、/etc ファイルにほとんど対応する NIS マップにネットワーク情報を格納しました。


注 –

この章では、NIS+ の一部として配布されたものだけを説明します。ユーザーとアプリケーション開発者は、目的に応じて NIS+ との互換性があるテーブルを頻繁に作成します。ユーザーと開発者によって作成されたテーブルの詳細については、マニュアルを参照してください。


すべての NIS+ テーブルは、groups_dir ディレクトリオブジェクトに格納される admin とグループテーブルを除いて、ドメインの org_dir NIS+ ディレクトリオブジェクトに格納されます。


注 –

テーブルエントリはリンクしないでください。テーブルは他のテーブルにリンクされますが、あるテーブルのエントリを別のテーブルのエントリにリンクしないでください。


NIS+ テーブルと他のネームサービス

Solaris の環境では、ネームサービスのスイッチファイル (nsswitch.conf) によって、1 つ以上のソースを異なる名前空間の情報に対して指定できます。NIS+ テーブルの他に、ソースは NIS マップ、DNS ゾーンファイル、/etc テーブルにすることができます。これらをスイッチファイルで指定する順番によって、異なるソースから情報が組み合わされる方法が決まります。スイッチファイルの詳細については 第 1 章「ネームサービススイッチ」を参照してください。

NIS+ テーブル入力ファイルフォーマット

これらテーブルのどれかに対して入力ファイルを作成している場合、ほとんどのテーブルは、次の 2 つのフォーマットの条件を共有します。

特定のテーブルに、異なるまたは追加のフォーマットの条件がある場合には、「入力ファイルフォーマット」の項で説明します。

auto_home テーブル

auto_home テーブルは間接オートマウンタマップです。このマップによって NIS+ クライアントは、ドメイン内の任意のユーザーのホームディレクトリをマウントできます。このテーブルは、各ユーザーのホームディレクトリのマウントポイント、各ホームディレクトリの位置と、マウントオプションがあればそれを指定してマウントします。これは間接マップであるため、マウントポイントの最初の部分は auto_master テーブルに指定され、デフォルトでは /home となります。マウントポイントの 2 番目の部分 (つまり、/home の下にあるサブディレクトリ) は auto_home マップ内のエントリによって指定され、ユーザーごとに異なります。

auto_home テーブルには 2 つの列があります。

表 23–1 auto_home テーブル

列 

コメント 

説明 

キー 

マウントポイント 

ドメイン内のユーザーのログイン名 

値 

 

オプションと位置 

ユーザーごとのマウントオプションがあればそれと、ユーザーのホームディレクトリの位置 

たとえば :


costas barcelona:/export/partition2/costas

ユーザー costas のホームディレクトリは、サーバー barcelona 上にあり、ディレクトリ /export/partition2/costas 内にあります。またこのホームディレクトリは、クライアントの /home/costas ディレクトリの下にマウントされます。このエントリにはマウントオプションはありません。

auto_master テーブル

auto_master テーブルは、ドメイン内のすべてのオートマウンタマップを含みます。直接マップの場合、auto_master テーブルは、単にマップ名を提供するだけです。間接マップの場合、このテーブルは、そのマウントポイントの先頭ディレクトリとマップ名の両方を提供します。auto_master テーブルには次の 2 つの列があります。

表 23–2 auto_master テーブル

列 

コメント 

説明 

キー 

マウントポイント 

マップがマウントされる先頭ディレクトリ。マップが直接マップの場合、これは /— で表されるダミーディレクトリである

値 

マップ名 

オートマウンタマップの名前 

たとえば、auto_master テーブルに次のエントリがあるとします。


/home auto_home
/-auto_man
/programs auto_programs

最初のエントリは auto_home マップを指定します。このエントリによって、auto_home マップのすべてのエントリに対して、マウント先の最上位ディレクトリ /home を指定します。 auto_home マップは、間接マップです。2 番目のエントリには、 auto_man マップを指定します。このマップは直接マップであるため、このエントリはマップ名だけを与えます。auto_man マップはそれ自体で、その各エントリに対するマウントポイントの完全パス名だけではなく、最上位ディレクトリも提供します。3 番目のエントリは auto_programs マップを指定します。このエントリはマウントポイントの先頭ディレクトリを与えるため、auto_programs マップは間接マップです。

すべてのオートマウンタマップは NIS+ テーブルとして格納されます。デフォルトでは、Solaris 環境は必須の auto_master マップ、および非常に便利な auto_home マップを提供します。

1 つのドメインに対してさらに多くのオートマウンタマップを作成できますが、これらは必ず NIS+ テーブルとして格納し、auto_master テーブルに登録してください。その他のオートマウントマップを作成して、auto_master (ユーザーに対して作成された) に追加するときは、列名は「キー」と「」にする必要があります。オートマウンタの詳細については、オートマウンタ、または NFS ファイルシステムの関連マニュアルを参照してください。

bootparams テーブル

bootparams テーブルは、ドメイン内のすべてのディスクレスマシンに関する構成情報をもっています。ディスクレスマシンとは、ネットワークに接続されているが、ハードディスクのないマシンのことです。ディスクレスマシンにはディスク装置がないため、自分のファイルとプログラムをネットワーク上のサーバーのファイルシステムに持っています。また、自分の構成情報 (つまり「ブートパラメタ」) をサーバーに持っています。

このような構成になっているため、すべてのディスクレスマシンには、この情報がどこに格納されているかを認識する初期設定プログラムがあります。ネットワークにネームサービスがない場合、このプログラムはサーバーの /etc/bootparams ファイル内でこの情報を探します。ネットワークが NIS+ ネームサービスを使う場合、このプログラムは、代わりに bootparams テーブル内でこの情報を探します。

bootparams テーブルは、ディスクレスマシンに関するどんな構成情報でも格納できます。このテーブルには 2 つの列があり、構成キーとその値を格納します。デフォルトでは、このテーブルは各マシンのルート、スワップ、およびダンプの各パーティションの位置を格納するように設定されます。

デフォルトの bootparams テーブルには 2 つの列しかありませんが、列を使用して、次に示す情報を提供します。

表 23–3 bootparams テーブル

列 

コメント 

説明 

キー 

ホスト名 

ディスクレスマシンの正式ホスト名、hosts テーブルで指定

値 

構成 

ルートパーティション :マシンのルートパーティションの位置 (サーバー名とパス) 

 

 

スワップパーティション :マシンのスワップパーティションの位置 (サーバー名とパス) 

 

 

ダンプパーティション :マシンのダンプパーティションの位置 (サーバー名とパス) 

 

 

インストールパーティション 

 

 

ドメイン 

「入力ファイルのフォーマット」

列はタブ文字で区切ります。バックスラッシュ (\) は、1 つのエントリを複数の行で指定するのに使用します。ルート、スワップ、およびダンプの各パーティション用のエントリのフォーマットを次に示します。


client-name root=server:path \
swap=server:path \ 
dump=server:path \
install=server:path \
domain=domainname

次に例を示します。


buckarooroot=bigriver:/export/root1/buckaroo \
 swap=bigriver:/export/swap1/buckaroo \
 dump=bigriver:/export/dump/buckaroo \
 install=bigriver:/export/install/buckaroo \
 domain=sales.doc.com 

x86 ベースのマシンでは、使用できるパラメータが増えます。詳細は、bootparams(4) のマニュアルページを参照してください。

client_info テーブル

client_info テーブルは、それが存在するドメインのサーバー設定を格納するために使われるオプションの内部 NIS+ テーブルです。このテーブルは、nisprefadm コマンドで作成および保管されます。


注意 – 注意 –

nisprefadm だけを使って、このテーブルで作業してください。このテーブルでは、他の NIS+ コマンドは使わないでください。


cred テーブル

NIS+ 主体の資格に関する情報を格納するテーブルです。ドメインにつき1つ存在し、ドメインに属するクライアントマシンおよびマシンにログインできるクライアントユーザー (つまり、ドメイン中の主体) の資格に関する情報を持っています。cred テーブルはドメイン中の org_dir サブディレクトリにあります。


注 –

cred テーブルはリンクしないでください。org_dir ディレクトリにはそれぞれ固有の cred テーブルがあり、他の org_dir ディレクトリの cred テーブルへのリンクを使用できません。


cred テーブルには以下の 5 つの列があります。

表 23–4 cred テーブル

NIS+ 主体名 

認証タイプ 

認証名 

公開データ 

非公開データ 

主体ユーザー名  

LOCAL  

UID 

グループ ID リスト 

 

主体ユーザー名またはマシン名 

DES 

Secure RPC ネット名 

公開鍵 

暗号化非公開鍵 

2 番目の「認証タイプ」という列の値により、他の 4 つの列の値のタイプが決定されます。

資格および cred テーブルの詳細については、第 12 章「NIS+ 資格の管理」を参照してください。

ethers テーブル

ethers テーブルは、インターネット上のマシンの 48 ビット Ethernet アドレスに関する情報を格納しています。次の 3 列があります。

表 23–5 ethers テーブル

列 

コメント 

説明 

Addr 

Ethernet アドレス 

マシンの 48 ビット Ethernet アドレス 

名前 

公式なホスト名 

マシンの名前、hosts テーブルで指定

コメント 

コメント 

エントリに関するコメント (必要に応じて) 

Ethernet アドレスの形式は次のとおりです。

n:n :n:n :n: n hostname

ここで n は 0 〜 FF の 16 進数で、1 バイトを表します。このアドレスのバイト列は常に最上位のバイトから始まるネットワーク順になっています。

group テーブル

group テーブルは、UNIX ユーザーグループについての情報を格納します。group テーブルには 4 つの列があります。

表 23–6 group テーブル

列 

説明 

名前 

グループ名 

パスワード 

グループのパスワード 

GID 

グループの数値 ID 

メンバー 

グループメンバー名、コンマで区切る 

Solaris の以前のリリースでは、ローカル /etc/group ファイルで +/- 構文を使用して、NIS グループマップ内のエントリを結合または上書きしました。Solaris 環境ではネームサービススイッチファイルを使用してマシンの情報ソースを指定するため、この仕様は不要になります。Solaris 2.x システムで必要なのは、クライアントの /etc/nsswitch.conf ファイルを編集して files を指定し、そのあとグループ情報のソースとして nisplus を指定することです。これによって、group テーブルの内容がクライアントの /etc/group ファイルの内容に効果的に追加されます。

hosts テーブル

hosts テーブルは、ドメイン内の全マシン名とそれらの IP アドレスを関連付けます。マシンは通常、 NIS+ クライアントでもありますが、その必要はありません。bootparamsgroup、および netgroup などのほかのテーブルは、このテーブルに収められたネットワーク名に依存しています。これらのテーブルは、ネットワーク名を使用して、ホームディレクトリやグループメンバーなどのほかの属性を個々のマシンに割り当てます。hosts テーブルには 4 つの列があります。

表 23–7 hosts テーブル

列 

説明 

アドレス 

マシンの IP アドレス (ネットワーク番号とマシン ID 番号) 

正式名 

マシンの正式名 

名前 

マシンを識別するために、ホスト名の代わりに使われる任意の名前  

コメント 

エントリに関するコメント (必要に応じて) 

mail_aliases テーブル

mail_aliasesテーブルは、sendmail によって認識されるドメインのメール別名を含んでいます。これには 4 つの列があります。

表 23–8 mail_aliases テーブル

列 

説明 

別名 

別名の名前 

メンバーリスト 

この別名に送信されたメールを受信するメンバーが収められているリスト。メンバーはユーザー、マシン、またはほかの別名とすることができる 

コメント 

エントリに関するコメント (必要に応じて) 

オプション 

(マニュアルページを参照) 

「入力ファイルのフォーマット」

各エントリの書式は次のとおりです。


alias-name:member[,member]...

1 つのエントリが複数の行にまたがるときには、バックスラッシュを使用します。

netgroup テーブル

netgroup テーブルは、リモートマウント、ログインとシェルのアクセス権をチェックするために使用される、ネットワーク全域にわたるグループを定義します。リモートマウントに使用されるネットグループのメンバーは、マシンです。リモートログインとシェルの場合、これらのメンバーはユーザーです。


注 –

サービスを提供している NIS+ サーバーが互換モードで動作している場合、クライアントマシンのユーザーは netgroup テーブルに対して ypcat を実行できません。実行すると、エントリの有無に関わらず「テーブルが空である」という結果が返されます。


netgroup テーブルには 6 つの列があります。

表 23–9 netgroup テーブル

列 

コメント 

説明 

名前 

グループ名 

ネットワークグループ名 

グループ 

グループ名 

このグループを構成するグループ名 

ホスト 

ホスト名 

ホスト名 

ユーザー 

ユーザー名 

ユーザーのログイン名 

ドメイン 

ドメイン名 

ドメイン名 

コメント 

コメント 

エントリに関するコメント (必要に応じて) 

「入力ファイルのフォーマット」

入力ファイルは、1 つのグループ名と任意の数のメンバーから構成されます。


groupname member-list...

メンバー指定は、他のネットグループ名、または 3 つのフィールドを順序正しく並べたものとすることができます。ネットグループ名、3 つのフィールドを両方指定することもできます。


member-list::=groupname | (hostname, username, domainname)

最初のフィールドには、グループに属するマシン名を指定します。2 番目のフィールドに、グループに属するユーザー名を指定します。3 番目のフィールドには、メンバー指定が有効となっているドメインを指定します。

指定のないフィールドは、ワイルドカードを示します。たとえば、次の netgroup には、すべてのドメインのユーザーとすべてのマシンが含まれます。


everybody ( , , )

フィールド内のダッシュはワイルドカードの反対で、このグループに所属するマシンやユーザーがないことを示します。 次に 2 つの例を示します。


(host1, -,doc.com.) (-,joe,doc.com.)

最初の指定では、1 台のマシン host1doc.com. ドメインに入れますが、すべてのユーザーを排除します。2 番目の指定では、1 人のユーザーを doc.com. ドメインに入れますが、すべてのマシンを排除します。

netmasks テーブル

netmasks テーブルには、標準のインターネットサブネットに使われるネットワークマスクが収められています。このテーブルには 3 つの列があります。

表 23–10 netmasks テーブル

列 

説明 

アドレス 

ネットワークの IP 番号 

マスク 

ネットワーク上で使うネットワークマスク 

コメント 

エントリに関するコメント (必要に応じて) 

ネットワーク番号には、マシンアドレスで使用される従来の IP ドット表記を使用できますが、マシンアドレスの代わりにゼロを残します。たとえば、


128.32.0.0 255.255.255.0

というエントリでは、クラス B ネットワーク 128.32.0.0 が、サブネットフィールドに 24 ビット、ホストフィールドに 8 ビットを持つことを意味します。

networks テーブル

networks テーブルにはインターネットのネットワークが含まれます。このテーブルは、Network Information Control Center (NIC) で管理される公式のネットワークテーブルから作成されるのが普通ですが、これにローカルネットワークを追加しなければならないこともあります。これには 4 つの列があります。

表 23–11 networks テーブル

列 

説明 

正式名 

ネットワークの正式名、インターネットが提供 

アドレス 

ネットワークの公式 IP 番号 

名前 

ネットワークの非公式名  

コメント 

エントリに関するコメント (必要に応じて) 

passwd テーブル

passwd テーブルには、ドメイン内のユーザーのアカウントに関する情報が入っています。これらのユーザーは、一般的には NIS+ 主体ですが、その必要はありません。ただし、ユーザーが NIS+ 主体である場合、それらの資格はここには収められず、ドメインの cred テーブルに格納されることに注意してください。passwd テーブルは、その他 (または未認証) に対して通常読み取り権を与えます。


注 –

スーパーユーザー (ユーザー ID = 0) のエントリをこのテーブルに入れることはできません。root のパスワード情報は、/etc ディレクトリ上のファイルに格納してください。


passwd テーブル内の情報は、ユーザーのアカウントが作成されたときに追加されます。

passwd テーブルには次の列があります。

表 23–12 passwd テーブル

列 

説明 

名前 

ユーザーのログイン名であり、ユーザーのアカウントが作成されたときに割り当てられる。この名前は大文字を含む必要はない。最大 8 文字まで 

パスワード 

ユーザーの暗号化されたパスワード 

ユーザー ID 

ユーザーの ID 番号であり、ユーザーのアカウントが作成されたときに割り当てられる 

グループ ID 

ユーザーのデフォルトグループの ID 番号 

GCOS 

ユーザーの実名と、ユーザーがメールメッセージ見出しの「From:」フィールドに入れたい情報。この列が「&」の場合、単にユーザーのログイン名を使用する 

ホーム 

ユーザーのホームディレクトリのパス名 

シェル 

ユーザーの初期シェルプログラム。デフォルトは B シェル :/usr/bin/sh

シャドウ 

表 23–13 を参照してください。

passwd テーブルには、さらにシャドウ列があります。この列には、ユーザーアカウントに関して、次に示すような制限情報が格納されています。

表 23–13 passwd テーブルのシャドウ列

項目 

説明 

最終変更日 

1970 年 1 月 1 日からパスワードの最終変更日までの日数 

最小値 

推奨されるパスワード変更間隔の最小日数 

最大値 

パスワードが有効な最大日数 

警告 

ユーザーパスワードが期限切れになる前にユーザーが警告を受ける日数 

間隔 

ユーザーに許される休止日数 

期限 

ユーザーのアカウントが無効となる絶対日付 

フラグ 

将来のために獲保。現在は 0 に設定されている 

Solaris の以前のリリースでは、ローカル /etc/passwd ファイル内で +/- 構文を使って、NIS パスワードマップ内のエントリを統合または上書きしました。Solaris 2.x 環境ではネームサービススイッチを使ってマシンの情報ソースを指定するため、この仕様は不要になります。Solaris 2.x システムで必要なのは、クライアントの /etc/nsswitch.conf ファイルを編集して files を指定し、それに続けて passwd 情報のソースとして nisplus を指定することです。これによって、passwd テーブルの内容が /etc/passwd ファイルの内容に効果的に追加されます。

しかし、それでも +/- 方式を使用したい場合は、クライアントの nsswitch.conf ファイルを編集します。NIS を使用しているなら passwd ソースに compat を指定します。NIS+ を使用している場合は、passwd_compat: nisplus を追加してください。

protocols テーブル

protocols テーブルにはインターネットで使われるプロトコルが含まれます。これには 4 つの列があります。

表 23–14 protocols テーブル

列 

説明 

正式名 

プロトコル名 

名前 

プロトコルの識別に使われる非公式な別名 

番号 

プロトコルの番号 

説明 

プロトコルに関するコメント 

rpc テーブル

rpc テーブルには、RPC プログラム名が含まれます。これには 4 つの列があります。

表 23–15 rpc テーブル

列 

説明 

正式名 

プログラム名 

名前 

プログラムの起動に使用できる別の名前 

番号 

プログラムの番号 

説明 

RPC プログラムに関するコメント 

rpc テーブルの入力ファイルの例を次に示します。


# 
# rpc file
#
rpcbind 100000 portmap sunrpc portmapper
rusersd 100002 rusers
nfs 100003 nfsprog
mountd 100005 mount showmount
walld 100008 rwall shutdown
sprayd 100012 spray
llockmgr 100020
nlockmgr 100021
status 100024
bootparam 100026
keyserv 100029 keyserver
nisd 100300 rpc.nisd
# 

services テーブル

services テーブルは、インターネット上で使用できるインターネットサービスに関する情報を格納しています。これには 5 つの列があります。

表 23–16 services テーブル

列 

説明 

正式名 

サービスの公式インターネット名 

名前 

サービスを要求できる代替名のリスト 

プロトコル 

サービスを提供するためのプロトコル (たとえば 512/tcp) 

ポート 

ポート番号 

コメント 

サービスに関するコメント 

timezone テーブル

timezone テーブルは、ドメイン内の全マシンのデフォルトの時間帯を含んでいます。デフォルトの時間帯はインストール中に使用されますが、インストーラがこれを無効にすることができます。このテーブルには 3 つの列があります。

表 23–17 timezone テーブル

フィールド 

説明 

名前 

ドメイン名 

時間帯 

時間帯の名前 (たとえば US/Pacific) 

コメント 

時間帯に関するコメント 

その他のデフォルトのテーブル

以下のテーブルも、デフォルトで用意されています。

詳細については、『man pages section 4』を参照してください。

第 24 章 NIS+ の問題解決

この章では、問題をいくつかの種類に分類しています。各問題について、一般的な症状を示し問題について説明してから、推奨する対策を 1 つまたは複数挙げています。

また、付録 A 「エラーメッセージ」では、NIS+ の詳細な共通エラーメッセージをアルファベット順に掲載しています。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ のデバッグオプション

NIS+ のデバッグオプション

NIS_OPTIONS の環境変数を設定して、NIS+ デバッグオプションを制御できます。

オプションは、二重引用符で囲まれたオプションセットと共にスペースで区切られた NIS_OPTIONS コマンドの後に指定されます。各オプションに name=value のフォーマットがあります。値は、特定のオプションに従って整数、文字列、ファイル名になります。整数値のオプションに対して、値が指定されていない場合には、デフォルト値は 1 になります。

NIS_OPTIONS は次のオプションを認識します。

表 24–1 NIS_OPTIONS オプションと値

オプション 

値 

動作 

debug_file

filename

デバッグの指定ファイルへの出力を指示する。このオプションが指定されていない場合は、デバッグは stdout に出力する

debug_bind

Number

サーバーの選択プロセスに関する情報を表示する 

debug_rpc

1 または 2

値が 1 の場合には、NIS+ に対する RPC コールを表示する。値が 2 の場合には、RPC コールと RPC の内容、引数、結果の両方を表示する 

debug_calls

Number

NIS+ API へのコールと、アプリケーションに戻される結果を表示する 

pref_srvr

String

nisprefadm コマンドによって生成されるのと同じフォーマットで、優先サーバーを指定する (表 20–1 を参照)。これは nis_cachemgr で指定された優先サーバーを上書きする

server

String

特定のサーバーを設定する 

pref_type

String

現在実装されていない 

例を以下に示します。(C シェルの使用を前提)


setenv NIS_OPTIONS “debug_calls=2 debug_bind debug_rpc”

setenv NIS_OPTIONS “debug_calls debug_file=/tmp/CALLS”

setenv NIS_OPTIONS “debug_calls server = sirius”

NIS+ の管理上の問題

この節では、日常的な NIS+ 名前空間の管理作業を行なっているときに発生する可能性のある問題について説明します。一般的な症状には次のようなものがあります。

無効なオブジェクトの問題

「症状」

このエラーメッセージには、いくつもの原因が考えられます。

nisinit のエラー

次の点をチェックしてください。

チェックポイントのエラーが続く

チェックポイント処理 (たとえば、nisping -C コマンドによる操作) が、継続してエラーを起こしている場合は、十分なスワップ空間やディスク容量があるかどうか確認してください。syslog 内のエラーメッセージもチェックします。core ファイルがディスク空間を使い果たしていないかどうかチェックします。

ユーザーをグループに追加することができない

ユーザーをそのドメイン内のグループのメンバーとして追加する前に、そのユーザーは、ドメインの cred テーブルの中で LOCAL の資格を持つ NIS+ 主体クライアントになっていなければなりません。DES の資格を持っているだけでは、十分ではありません。

ログが大きくなりすぎた

nisping -C を使用して定期的にチェックポイントを実行していないと、ログファイルが極端に大きくなることがあります。マスターサーバーのすべての複製サーバーが更新されるまでは、マスター上にあるログはクリアされません。複製がダウンしている場合や、サービスが行われていない場合、複製サーバーと通信できない場合は、その複製サーバーに対応するマスターをクリアできません。このため複製がダウンしているか、または一定時間使用できない場合には、ディレクトリを削除するで説明するとおり、マスターから複製を削除する必要があります。ディレクトリ org_dir とサブディレクトリ groups_dir を最初に削除してから、ディレクトリ自体を削除してください。

ディスク容量の不足

十分なディスク容量が確保できない場合は、様々なエラーメッセージが表示されます (詳細は、ディスク容量の不足を参照)。

トランザクションログファイルを切り捨てることができない

まずはじめに、問題のファイルが存在するか、読み込み可能か、そのファイルに書き込み権が割り当てられているかどうかチェックしてください。

最も可能性のある原因は、適切なアクセス権を割り当てられているものの、ディスク容量が不足していることです。チェックポイント処理では、ログを切り捨て一時ファイルを削除する前に、ますログ一時ファイルのコピーを作成します。このため、一時ファイルを作成するためのディスク容量がない場合は、チェックポイント処理を進めることができません。使用可能なディスク容量をチェックし、必要であれば容量を確保してください。

ドメイン名の混同

NIS+ の多くのコマンドや操作にとって、ドメイン名は重要な役割を果たします。ルートサーバーを除いて、NIS+ のすべてのマスターと複製は、それ自身がサービスを提供するドメインより上にあるドメインのクライアントであるということに特に注意してください。サーバーまたは複製サーバーを、それ自身がサービスを提供するドメインのクライアントとして誤って扱った場合、「Generic system error」や「Possible loop detected in namespace directoryname:domainname」というエラーメッセージが表示されます。

たとえば、altair というマシンが、subdoc.doc.com. ドメインのクライアントだとします。サブドメイン subdoc.doc.com. のマスターサーバーが sirius というマシンだとすると、siriusdoc.com. ドメインのクライアントになります。 したがって、ドメインの指定や変更を行うときは、混同しないように次のルールに注意してください。

  1. クライアントマシンは、特定のドメインかサブドメインに所属します。

  2. 特定のサブドメインにサービスを提供するサーバーや複製サーバーは、そのドメインより上にあるサブドメインのクライアントです。

  3. 2 の規則の唯一の例外は、ルートマスターサーバーとルート複製サーバーです。これらは、それ自身がサービスを提供するドメインのクライアントになります。つまり、ルートドメインのクライアントになるのは、ルートマスターとルート複製だけです。

したがって、上の例では、マシン altair の完全指定名は、altair.subdoc.doc.com. です。マシン sirius の完全指定名は、sirius.doc.com. です。sirius.subdoc.doc.com. という名前は正しくありません。siriusdoc.com. のクライアントで、subdoc.doc.com. のクライアントではないためエラーの原因になります。

org_dirgroups_dir を削除できない

親ディレクトリを削除する前に、必ず org_dirgroups_dir を削除してください。ドメインの groups_dirorg_dir を削除する前に、nisrmdir を使用してドメインを削除すると、これらの 2 つのサブディレクトリは、どちらも削除できなくなります。

複製の失敗からの NIS+ ディレクトリの削除または分離

複製サーバーからディレクトリを削除または分離する場合には、最初にディレクトリの org_dirgroups_dir のサブディレクトリを削除してから、ディレクトリ自体を削除します。各サブディレクトリが削除された後に、削除しようとするディレクトリの親ディレクトリで nisping を実行する必要があります (ディレクトリを削除する を参照)。

nisping の操作に失敗すると、ディレクトリは完全に削除または分離されません。

この状態が発生したら、次の手順を実行して、修正する必要があります。

  1. 複製上の /var/nis/rep/org_dir を削除します。

  2. org_dir.domain が、複製上の /var/nis/rep/serving_list に表示されないことを確認してください。

  3. domainnisping を実行します。

  4. マスターサーバーから nisrmdir -f replica_directory を実行します。

分離しようとしている複製サーバーがダウンしているか、または通信不能である場合に nisrmdir -s コマンドは「Cannot remove replica name : attempt to remove a non-empty table」というエラーメッセージが出されます。

このような場合は、マスターサーバー上で nisrmdir -f -s replicaname コマンドを実行すれば、強制的に切り離すことができます。しかし、nisrmdir -f -s replicaname を使って通信不能な複製を分離する場合には、複製がオンライン状態に戻ったらすぐに、nisrmdir -f -s replicaname を再実行して、複製の /var/nis ファイルシステムを消去する必要があります。nisrmdir -f -s replicaname を再実行しないと、複製がサービスを再開した時に複製上に残された古い情報によって問題が発生します。

NIS+ データベースの問題

この節では、名前空間のデータベースとテーブルに関連する問題を説明します。一般的な症状には次のようなものがあります。処理内容に関係する次の表現が含まれているエラーメッセージが表示されます。

rpc.nisd が失敗します。

NIS+ の所有権とアクセス権の問題を参照してください。

rpc.nisd の複数の親プロセス

「症状」

次の表現が含まれている様々なエラーメッセージが表示されます。これらのメッセージは、データベースやトランザクションログが壊れていることを意味しています。

「考えられる原因」

複数の独立した rpc.nisd デーモンを実行させています。通常の動作では、rpc.nisd は他の rpc.nisd デーモンを子プロセスとして生成できます。このこと自体は問題はありません。しかし、1 台のマシン上で 2 つの rpc.nisd デーモンが親として動作している場合は、互いのデータを上書きし、ログとデータベースを壊してしまいます。このような現象が発生するのは、rpc.nisd が手作業で起動された場合です。

「診断」

ps -ef | grep rpc.nisd を実行します。親の rpc.nisd プロセスは、1 つしか動作していないことを確認します。

「対策」

「親」としての rpc.nisd のエントリが複数ある場合は、1 つを残して、他のデーモンの動作を終了させなければなりません。kill -9 process-id を実行し、もう一度 ps コマンドを実行して、他のデーモンが終了したかどうか確認します。


注 –

-B オプションを指定して rpc.nisd を起動した場合は、rpc.nisd_resolv デーモンも終了させる必要があります。


NIS+ データベースが壊れている場合は、壊れていないデータベースを、最新のバックアップから復元します。次に、バックアップの時点よりあとで、名前空間に加えられた変更を反映します。しかし、ログも壊れている場合は、バックアップを行なったあとで名前空間に加えられた変更を、再度手作業で行わなければなりません。

rpc.nisd の失敗

NIS+ テーブルが大きすぎると、rpc.nisd は失敗します。

「診断」

nisls を使って、NIS+ テーブルの大きさをチェックします。7K バイト以上のテーブルでは、rpc.nisd は失敗します。

「対策」

NIS+ テーブルの大きさを小さくします。ネームサービスとして NIS+ は、オブジェクト自体ではなく、オブジェクトへのリファレンスを格納するために設計されています。

NIS+ と NIS の互換性の問題

この節では、NIS と NIS+ や以前のシステムとの間の互換性に関連する問題、またスイッチ構成ファイルに関連する問題を説明します。一般的な症状には次のようなものがあります。

表示されるエラーメッセージの中には、次のようなものがあります。

ユーザーがパスワードを変更したあと、ログインできない

「症状」

新しいユーザーや、最近パスワードを変更したユーザーが、ログインできません。または、特定のマシンからログインできますが、他のマシンからログインできません。そのようなユーザーに対して、次の表現が含まれているエラーメッセージが表示されることがあります。

「最初に考えられる原因」

NIS マシン上でパスワードが変更されました。

NIS+ の名前空間サーバーがサービスを提供しているドメインの中で、NIS を実行している Solaris オペレーティング環境のマシン上で、ユーザーまたはシステム管理者が passwd コマンドを使用してパスワードを変更した場合、そのユーザーのパスワードは、そのマシンの /etc/passwd ファイルの中だけで変更されています。そのユーザーが、ネットワーク上の他のマシンを使用してログインしても、そのマシン上では新しいパスワードは認識されません。NIS+ のパスワードテーブルに格納されている、古いパスワードを使用しなければなりません。

「診断」

そのユーザーの古いパスワードが、NIS+ の他のマシンでまだ有効かどうかチェックしてください。

「対策」

NIS+ を実行しているマシンで、passwd コマンドを使用して、ユーザーのパスワードを変更します。

「2 番目に考えられる原因」

パスワードの変更を行なっても、システム全体に反映されるまでに時間がかかります。

「診断」

名前空間の変更がドメインやシステム全体に反映されるまでに、ある程度の時間がかかります。ドメインのサイズや複製サーバーの台数により、数秒間で済むこともあれば、何十分もかかることがあります。

「対策」

変更結果がドメインに伝わるまで、常識的に受け入れられる程度の時間、待つだけです。または、nisping org_dir コマンドを使用して、システムを同期させることもできます。

nsswitch.conf ファイルが正しく実行されない

変更した (または、新しくインストールした) nsswitch.conf ファイルが正しく実行されません。

「症状」

新しい nsswitch.conf ファイルをインストールしたか、または既存のファイルを変更しましたが、システムがその変更結果を反映していません。

「考えられる原因」

nsswitch.conf ファイルのインストールや変更を行なった後は、必ずマシンを再起動して、変更結果を有効にしなければなりません。nscdnsswitch.conf ファイルをキャッシュに書き込むためです。

「対策」

nsswitch.conf(4) のマニュアルページの情報を参照して、現在の nsswitch.conf ファイルをチェックしてください。必要に応じてファイルを修正し、マシンを再起動します。

NIS+ オブジェクトが見つからない問題

この節では、NIS+ がオブジェクトや主体を見つけることができない問題について説明します。一般的な症状には次のようなものがあります。

処理内容に関係する次の表現が含まれているエラーメッセージが表示されます。

構文やスペリングの誤り

NIS+ のオブジェクトが見つからない場合、最も可能性のある原因は、名前の入力を間違えたことです。構文をチェックし、正しい名前を使用しているかどうか確認してください。

正しくないパス名

「オブジェクト」が見つからない場合、考えられる原因として、正しくないパスを指定していることが挙げられます。指定したパスが正しいことを確認してください。また、NIS_PATH 環境変数が正しく設定されているかどうかも確認してください。

ドメインレベルが正しく指定されていない

すべてのサーバーは、それ自身がサービスを提供しているドメインではなく、その上にあるドメインのクライアントであることに注意してください。この規則には、2 つの例外があります。

オブジェクトが存在しない

NIS+ のオブジェクトが削除されたため、または作成されていないために、現在は存在していなくて、見つからないこともあります。nisls -l を使用して、そのドメインに目的のオブジェクトが存在するかどうかチェックしてください。

複製サーバーの同期遅延

NIS+ のオブジェクトの作成や変更を行うと、処理が完了して、特定の複製サーバーの情報が更新されるまでに、ある程度の遅れが発生します。通常の動作では、マスターかその複製から名前空間情報の照会が行われます。クライアントは、照会を複数のサーバー (マスターと複製) に自動的に分散し、システムの負荷のバランスを取ります。これは、どの時点でも、名前空間の情報をどのマシンが返してくるかわからないということを意味します。新しく作成されたオブジェクトや変更されたオブジェクトに関係するコマンドが、更新された情報をまだマスターから受け取っていない複製に送られた場合、「オブジェクトが見つかりません」というタイプのエラーか、同期していない古い情報を受け取ることになります。同様に、nisls のような、全体に関係するコマンドを使用して、まだ更新されていない複製サーバーに照会を行なった場合、新しく作成されたオブジェクトが含まれていないリストを受け取る可能性があります。

nisping を使用すると、同期していない状態にある複製サーバーを同期させることができます。

代わりに、NIS+ のコマンドで -M オプションを指定して、そのコマンドがドメインのマスターサーバーから名前空間の情報を受け取るように指定することも可能です。この方法を使用すると、確実に最新の情報を取得し、使用できます。ただし、-M オプションは、必要なときにだけ使用してください。複製サーバーを使用して名前空間のサービスを行う最大の理由は、負荷を分散して、ネットワークの効率を向上させることにあります。

ファイルが見つからないか壊れている

/var/nis/data ディレクトリの中の 1 つまたは複数のファイルが、壊れているか削除されています。最新のバックアップから、これらのファイルを復元してください。

旧バージョンの /var/nis について

Solaris 2.4 以前では、/var/nis ディレクトリに hostname.dicthostname.log という 2 つのファイルが含まれていました。またサブディレクトリ /var/nis/hostname もありました。Solaris 2.5 においては、2 つのディレクトリ名は trans.logdata.dict、サブディレクトリ名は /var/nis/data となります。

nisinit など NIS+ 設定プロシージャーによって作成された /var/nis/var/nis/data といったディレクトリ、およびその下のファイルは、名前を変更しないでください。

Solaris 2.5 ではこれらのファイルの内容も変更されており、Solaris 2.4 以前との互換性はなくなっています。したがって、これらのファイルやディレクトリを Solaris 2.4 での名前にしてしまうと、Solaris 2.4、および 2.5 以降の rpc.nisd で機能しなくなりますので名前の変更をしないようにしてください。ディレクトリ名もファイル名も変更しないでください。

名前の中の空白

「症状」

ある時にはオブジェクトが存在し、別の時には存在しないことがあります。NIS+ や UNIX の特定のコマンドが NIS+ のオブジェクトが存在しない、または見つからないと報告しますが、別のコマンドは同じオブジェクトを見つけることができます。

「診断」

nisls を使用して、オブジェクト名を探します。オブジェクト名を注意深くチェックして、その名前が実際は空白で始まっていないかどうか確認してください。NIS+ のコマンド行を使用して NIS+ のオブジェクトを作成するときに、フラグの後に誤って空白文字を 2 回入力すると、NIS+ のコマンドの中には、2 番目の空白文字をオブジェクト名の一部と解釈するものがあります。

「対策」

NIS+ のオブジェクト名が空白で始まっている場合は、名前を変更して空白を取り除くか、いったん削除して初めから作成し直します。

オートマウンタを使用できない問題

「症状」

他のホスト上のディレクトリに移動できません。

「考えられる原因」

NIS+ 環境では、NIS+ の必要条件に合わせて、オートマウンタの名前を変更しなければなりません。/etc/auto* テーブル名の一部としてピリオドが使用されている場合、NIS+ はそれらのテーブルをアクセスすることができません。たとえば、NIS+ は auto.direct というファイルにアクセスすることができません。

「診断」

nislsniscat を使用して、オートマウンタのテーブル名が正しく割り当てられているかどうか確認します。

「対策」

ピリオドを下線 (_) に変更します。たとえば、auto.directauto_direct という名前に変更します。これらのテーブルを参照している可能性のある他のマップも変更してください。

テーブルエントリ間でのリンクが機能しない

nisln コマンド (またはその他のコマンド) を使って、テーブルエントリ間でのリンクは作成できません。NIS+ コマンドはエントリレベルでのリンクは追跡しません。

NIS+ の所有権とアクセス権の問題

この節では、ユーザーの所有権とアクセス権に関連する問題を説明します。一般的な症状には次のようなものがあります。

処理内容に関係する次の表現が含まれているエラーメッセージが表示されます。

一般的に観察されるその他の現象

アクセス権がない

アクセス権に関連して最も頻繁に発生する問題は、最も単純な問題です。行おうとしている業務に必要なアクセス権が、割り当てられていません。対象としているオブジェクトを指定して niscat -o を使用し、どのアクセス権が割り当てられているか確認します。他のアクセス権も必要な場合は、ユーザー自身、オブジェクトの所有者、システム管理者のうちの誰かが、そのオブジェクトのアクセス権の変更を行うことができます。詳細については、第 15 章「NIS+ のアクセス権の管理」 および 第 17 章「NIS+ グループの管理」を参照してください。

資格がない

ユーザーやマシンに適切な資格がない場合は、ほとんどの操作を行なったときにエラーが発生します。ホームドメインの cred テーブルを対象にして nismatch を使用し、正しい資格を割り当てられているかどうか確認します (資格に関連した問題の詳細は、無効になった資格を参照)。

サーバーがセキュリティレベル 0 で動作している

セキュリティレベル 0 で動作しているサーバーは、NIS+ の主体の資格の作成や管理を行いません。

セキュリティレベル 0 で動作しているサーバーで nispasswd を試みると、次のエラーメッセージが表示されます。「You name do not have secure RPC credentials in NIS+ domain domainname

セキュリティレベル 0 は、管理者が名前空間の初期設定やテストを行う際にだけ使用されます。一般のユーザーがアクセスするような環境で使用すべきではありません。

ユーザーのログインがマシン名と同じ

マシン名と同じものを、ユーザーのログイン ID とすることはできません。ユーザー名と同じ名前をマシンに割り当てる (またはその逆) と、最初の主体は、セキュリティに関係するアクセス権を必要とする動作を行うことができなくなります。2 番目の主体の鍵が、cred テーブルの中にある、最初の主体の鍵を上書きするからです。さらに、2 番目の主体は、最初の主体に割り当てられていたアクセス権を持つようになります。

たとえば、saladin というログイン名を持つユーザーが、名前空間の中で読み込み専用のアクセス権を割り当てられていたとします。次に、saladin という名前を持つマシンをドメインに追加します。ユーザー saladin は、何らかの種類のアクセス権を必要とする名前空間の操作を行うことができなくなります。そして、マシン saladin のスーパーユーザーは、名前空間の中で、読み込み専用のアクセス権だけを割り当てられます。

「症状」


注 –

nisclientnisaddcred を実行したときに、「Adding Key」ではなく「Changing Key」というメッセージが表示された場合は、そのドメインの中で、ユーザー名またはホスト名がすでに重複しています。


「診断」

nismatch を実行して、hosts テーブルや passwd テーブル内のホストとユーザーを表示し、各テーブルの中に、同じホスト名やユーザー名が存在しないか確認します。以下に例を示します。


nismatch username passwd.org_dir 

次に、ドメインの cred テーブルを対象にして nismatch を実行し、重複しているホスト名やユーザー名に、どのようなタイプの資格が割り当てられているかを調べます。LOCAL と DES 両方の資格が割り当てられている場合、cred テーブルのエントリはユーザーを表わしています。DES の資格だけが割り当てられている場合、エントリはマシンを表わしています。

「対策」

マシン名を変更します (ユーザー名を変更するより、マシン名を変更することをお勧めします)。次に、cred テーブルからそのマシンのエントリを削除し、nisclient を使用して、マシンを NIS+ のクライアントとして初期設定します (必要に応じて、nistbladm を使用し、そのマシンの別名を hosts テーブルの中に作成し、元のマシン名を別名として使用することもできます)。必要に応じて、cred テーブル内のユーザーの資格を変更します。

正しくない資格

無効になった資格を参照してください。

NIS+ のセキュリティの問題

この節では、パスワード、資格、暗号、その他セキュリティに関係した一般的な問題を取り上げます。

セキュリティ問題の症状

処理内容に関係する次の表現が含まれているエラーメッセージが表示されます。

ユーザーまたはスーパーユーザーは、名前空間に関係する作業を行うことができません (NIS+ の所有権とアクセス権の問題を参照)。

Login Incorrect」というメッセージが表示された

原因としてもっとも多いのが、パスワードの誤入力です。もう一度入力するようユーザーに指示してください。「記憶しているパスワードが正しいか」、「パスワードでは大文字と小文字が区別されることを理解しているか」、「アルファベットの o と数字の 0、アルファベットの l と数字の 1 などを混同していないか」といったことについても確認してください。

login incorrect」メッセージの原因としては他に以下のようなものが考えられます。

パスワードについては、第 16 章「パスワードの管理」を参照してください。

パスワードがロック状態、期限切れ、または無効である

Permission denied, password expired」といったタイプのメッセージは、「ユーザーのパスワードが有効期限を過ぎた」、「またはパスワード使用権が無効になった」といった理由で表示されることが最も多くなっています。詳細については、第 16 章「パスワードの管理」を参照してください。

資格情報が古い

資格、アクセス権ともに正しいにもかかわらず、クライアントの要求が拒否されるという場合もあります。これは、名前空間のどこかに古い情報が存在することが原因である可能性があります。

資格情報の保存と更新

公開鍵など、資格に関する情報は、名前空間内の様々な場所に保存されています。NIS+ は、情報を格納しているオブジェクトの生存期間に応じてこの情報を定期的に更新しますが、場合によっては、更新の間に同期が失われることがあります。その結果、一部の操作が行えなくなります。表 24–2 は、資格に関する情報を保存するすべてのオブジェクト、テーブル、ファイルと、そのリセットの方法を示したものです。

表 24–2 資格に関連する情報が格納されている場所

項目 

保存対象 

リセットおよび更新の方法 

cred テーブル

NIS+ 主体の非公開鍵と公開鍵。これらの鍵のマスターコピーとなる 

nisaddcred を使用して新しい資格を作成する。これによって既存の資格が更新される。chkey を使用しても同様のことが行える

ディレクトリオブジェクト 

個々のサーバーの公開鍵のコピー 

ディレクトリオブジェクトに対して/usr/lib/nis/ nisupdkeys コマンドを実行する

 

キーサーバー 

その時点でログインされている NIS+ 主体の非公開鍵 

主体ユーザーに対して keylogin を実行する。または主体マシンに対して keylogin -r を実行する

NIS+ デーモン 

ディレクトリオブジェクトのコピー (そのサーバーの公開鍵のコピーが含まれる) 

デーモンおよびキャッシュマネージャを終了した後、再起動する  

ディレクトリキャッシュ 

ディレクトリオブジェクトのコピー (そのサーバーの公開鍵のコピーが含まれる) 

NIS+ キャッシュマネージャを終了した後、nis_cachemgr -i コマンドを使用して再起動する。-i オプションを指定すると、コールドスタートファイルからディレクトリキャッシュがリセットされた後、キャッシュマネージャが再起動される

コールドスタートファイル 

ディレクトリオブジェクトのコピー (そのサーバーの公開鍵のコピーが含まれる) 

ルートマスターで NIS+ デーモンを終了した後、再起動する。デーモンは、既存の NIS_COLD_START ファイルに新しい情報を再ロードする。

まず、主体の /var/nis からコールドスタートファイルと共有ディレクトリファイルを削除し、キャッシュマネージャを終了する。次に nisinit - c を使用して主体を再初期化する。主体に対して「trusted」と指定したサーバーは、新しい情報を主体の既存のコールドスタートファイルに再読み込みする

passwd テーブル

ユーザーのパスワードまたはマシンのスーパーユーザーのパスワード 

passwd -r nisplus コマンドを使用する。これによって、NIS+ passwd テーブル、cred テーブルの中でパスワードが更新される

passwd ファイル

ユーザーのパスワードまたはマシンのスーパーユーザーのパスワード 

passwd -r nisplus コマンドを使用する。スーパーユーザー、一般ユーザーのどちらでログインしてもよい

passwd マップ

(NIS) 

ユーザーのパスワードまたはマシンのスーパーユーザーのパスワード 

passwd -r nisplus を使用する

古くなったキャッシュに保存された鍵の更新

情報が古くなる原因として最も多いのが、サーバーの公開鍵のバージョンが古くなることです。一般に、この問題を解決するには、アクセスするドメインに対して nisupdkeys を実行します (nisupdkeys コマンドの使用方法の詳細は、第 12 章「NIS+ 資格の管理」を参照)。

鍵の中にはファイルやキャッシュに保存されているものもあるため、nisupdkeys ですべての問題を解決できるわけではありません。鍵を手作業で更新しなければならない場合もあります。この場合は、「サーバーの公開鍵の内容は、公開鍵が作成された後どのように名前空間オブジェクトに伝えられるのか」ということについて理解する必要があります。サーバーの公開鍵の伝播には、一般に以下の 5 つの段階があります。それぞれの詳細について説明します。

1: サーバーの公開鍵が作成される

NIS+ サーバーはまず第 1 に、NIS+ クライアントです。つまり、NIS+ サーバーの公開鍵は、NIS+ クライアントの公開鍵と同様に、 nisaddcred コマンドによって生成されます。 公開鍵はその後、サーバーが実際にサポートするドメインではなく、サーバーのホームドメインの cred テーブルに保存されます。

2: 公開鍵の内容がディレクトリオブジェクトに伝えられる

NIS+ ドメインと NIS+ サーバーの設定後は、サーバーとドメインを関係づけることができます。この「関係づけ」は、nismkdir コマンドで行います。nismkdir コマンドによってサーバーとディレクトリの関係づけが行われる際、サーバーの公開鍵も cred テーブルからドメインのディレクトリオブジェクトにコピーされます。たとえば、サーバーが doc.com. ルートドメインのクライアントで、sales.doc.com. ドメインのマスターサーバーになっているという場合を考えてみましょう。

図 24–1 ディレクトリオブジェクトへの公開鍵の伝播

Graphic

公開鍵は cred.org_dir.doc.com. ドメインから、ディレクトリオブジェクト sales.doc.com. にコピーされます。以上のことは、niscat -o sales.doc.com. というコマンドを使用して確認できます。

3: ディレクトリオブジェクトの内容がクライアントファイルに伝えられる

nisinit ユーティリティまたは nisclient スクリプトを使用すれば、すべての NIS+ クライアントを初期化できます。

他の類似のコマンドと同様、nisinit (または nisclient) では、コールドスタートファイル /var/nis/NIS_COLDSTART が作成されます。コールドスタートファイルは、クライアントのディレクトリキャッシュ /var/nis/NIS_SHARED_DIRCACHE の初期化に使用されます。コールドスタートファイルには、クライアントのドメイン中のディレクトリオブジェクトのコピーが含まれています。ディレクトリオブジェクトには、すでにサーバーの公開鍵のコピーが含まれているため、これで公開鍵の内容はクライアントのコールドスタートファイルに伝えられたことになります。

また、クライアントがホームドメインの外のサーバーに対して要求をした場合、リモートドメインのディレクトリオブジェクトのコピーが、クライアントの NIS_SHARED_DIRCACHE ファイルに保存されます。クライアントのキャッシュの内容は、nisshowcache コマンドを使用して調べることができます。

複製サーバーがドメインに追加されるか、サーバーの鍵が更新されるまでは、鍵の伝播はこの段階にとどまります。

4: 複製サーバーがドメインに追加された場合の処理

複製サーバーがドメインに追加されると、nisping コマンド (nisping コマンド を参照) によって NIS+ テーブル (cred テーブルを含む) が新しい複製サーバーにダウンロードされます。これによって、元のサーバーの公開鍵も複製サーバーの cred テーブルに保存されます。

5: サーバーの公開鍵が更新された場合の処理

サーバーの DES 資格 (サーバーのルート ID) を変更すると、公開鍵も変更されます。その結果、サーバー用に cred テーブルに保存される公開鍵が、以下の場所に保存されるものと矛盾します。

サーバーの鍵は、ほとんどの場所において数分〜 12 時間で自動的に更新されます。すぐに更新するには、以下のコマンドを使用します。

表 24–3 サーバーの鍵の更新

保存場所 

コマンド名 

参照する項目 

複製サーバーの cred テーブル (nisping を使用しなくても、テーブルは数分で自動的に更新される)

nisping

nisping コマンド

サーバーがサポートするドメインのディレクトリオブジェクト  

nisupdkeys

nisupdkeys コマンド

クライアントの NIS_COLDSTART ファイル

nisinit -c

nisinit コマンド

クライアントの NIS_SHARED_DIRCACHE ファイル

nis_cachemgr

nis_cachemgr コマンド


注 –

nis_cachemgr の再起動は、既存の nis_cachemgr を終了してから行います。


無効になった資格

主体 (ユーザーかマシン) の資格が無効になっている場合は、その主体は nisls のようなコマンドも含め、名前空間の操作や処理を行うことができなくなってしまいます。資格が無効になると、未認証クラスに割り当てられるアクセス権も含め、すべてのアクセス権が失われるからです。

「症状」

ユーザーまたはスーパーユーザーが、名前空間に関係する作業を行うことができなくなります。名前空間のどのような操作を行なっても、「permission denied」というタイプのエラーメッセージが表示されます。ユーザーまたはスーパーユーザーは、nisls を実行することも不可能になります。

「考えられる原因」

鍵の破損、物理的な破損、古い資格、その他何らかの不適切な点が、/etc/.rootkey ファイルの中にあります。

「診断」

snoop を使用して、不適切な資格を識別します。

あるいは、その主体がリスト表示できる場合は、その主体としてログインを行い、主体が間違いなく承認されているはずのオブジェクトを対象として、NIS+ コマンドを実行します。たとえば、ほとんどの場合、未認証クラスにオブジェクトの読み込みは承認されているはずです。そこで、cred テーブルの中にリストされている主体は、nisls コマンドを正しく実行できるはずです。このコマンドを実行しても「permission denied」エラーが発生する場合は、おそらく、その主体の資格は無効になっています。

「対策」

Keyserv のエラー

keyserv が、セッションを暗号化できません。このタイプの問題には、いくつかの原因が考えられます。

「考えられる原因と対策」

マシンが以前は NIS+ のクライアントだった

このマシンが、同じドメインの中で NIS+ のクライアントとして初期設定されている場合は、試みに keylogin -r を実行し、Secure RPC パスワードプロンプトでスーパーユーザーのログインパスワードを入力します。

cred テーブルにエントリがない

cred テーブルの中に主体 (ユーザーまたはホスト) の NIS+ のパスワードが存在することを確認するために、主体のホームドメインの中で次のコマンドを実行します。


nisgrep -A cname=principal cred.org_dir.domainname

nisgrep を別のドメインで実行する場合は、domainname には完全な名前を指定する必要があります。

ドメイン名が変更されている

ドメイン名は変更すべきではありません。

既存のドメイン名を変更すると、認証の問題が発生するはずです。ネットワーク全体で、オブジェクトの中に完全指定のドメイン名が埋め込まれているからです。

ドメイン名を変更しないでください。既にドメイン名を変更してしまい、認証の問題や、ドメイン名に関係する「malformed」や「illegal」などの表現が含まれているメッセージが表示されている場合は、ドメイン名を元の名前に戻します。ドメイン名を変更したい場合は、次の手順に従ってください。「新しい名前」を使用して「新しいドメイン」を作成し、新しいドメインでマシンをサーバーやクライアントとして設定し、これらが正しく動作していることを確認した上で、古いドメインを削除します。

マシンを新しいドメインに変更する

NIS+ のクライアントとなっているマシンを、他のドメインのクライアントに変更したい場合は、/etc/.rootkey ファイルを削除し、ネットワーク管理者から受け取ったパスワードか nisclient スクリプトから取り出したパスワードを使用して、nispopulate スクリプトを実行し直します。

/etc/passwd ファイルの中にある NIS+ のパスワードとログインパスワード

NIS+ のパスワードは、NIS+ の passwd テーブルの中に格納されています。ログインパスワードは、NIS+ の passwd テーブルか、各ユーザーの /etc/passwd ファイルの中に格納されています。ユーザーパスワードと NIS+ のパスワードは、同じでも違っていてもかまいません。/etc/passwd ファイル内のパスワードを変更するには、nsswitch.conf ファイルでの設定を「files」にするか、「-r files」というフラグを指定するかして passwd コマンドを実行する必要があります。

nsswitch.conf ファイルは、どの目的にどのファイルを使用するか指定します。nsswitch.conf ファイルが、システムの照会に対して誤った場所を指示している場合は、パスワードやアクセス権のエラーが発生するはずです。

Secure RPC パスワードとログインパスワードが異なる

主体のログインパスワードと Secure RPC パスワードが一致しないと、ログイン時に keylogin はパスワードを復号化できません。keylogin はデフォルトで主体のログインパスワードを使用することになっていて、また非公開鍵は主体の Secure RPC パスワードを使用して暗号化されているからです。

この場合、主体はシステムにログインすることはできますが、NIS+ においては未認証クラスとして扱われます。キーサーバーが、そのユーザーの非公開鍵を復号化されていない状態のまま持っているからです。NIS+ 環境では多くの場合、未認承クラスによる NIS+ オブジェクトへのアクセス (作成、削除、変更) が拒否されるため、この状態でユーザーが NIS+ オブジェクトにアクセスしようとしても「permission denied」といったタイプのエラーになってしまいます。


注 –

「ネットワークパスワード」と「Secure RPC パスワード」は、このコンテキストでは同義語として扱われる場合があります。ネットワークパスワードの入力を求められたら Secure RPC パスワードを入力します。


認証クラスを「未認承」以外にするには、ユーザーがこの状況で keylogin プログラムを実行し、パスワード入力を求める keylogin プロンプトが表示されたときに主体の Secure RPC パスワードを入力する必要があります (キーログインを参照)。

しかし keylogin を実行しても、現在のログインセッション以外には無効で、一時的な解決にしかなりません。キーサーバーはこの方法によって、復号化された形でユーザーの非公開鍵を持つようになるのですが、ユーザーの cred テーブル中の非公開鍵が Secure RPC パスワード (ユーザーのログインパスワードとは異なっている) を使用して暗号化されているという点に変わりはないからです。ログインし直してしまえば、状況はまったく元どおりになってしまいます。根本的に問題を解決するためには、cred テーブルの非公開鍵を、Secure RPC パスワードではなくログイン ID に基づいたものに変更する必要があります。この作業は、chkey プログラムを使用して行います (NIS+ 主体の鍵の変更を参照)。

Secure RPC パスワードとログインパスワードが異なっているという問題を根本的に解決するには、具体的には以下の作業を行います。

  1. ログインパスワードを使用してログインします。

  2. keylogin プログラムを実行して、キーサーバーに保存される非公開鍵を一時的に復号し、一時的な NIS+ アクセス権を得ます。

  3. chkey -p 実行して、cred テーブル中の暗号化された非公開鍵を、ユーザーのログインパスワードに基づいたものに固定的に変更します。

/etc/.rootkey ファイルがすでに存在している

「症状」

insufficient permission」や、「permission denied」などの、様々なエラーメッセージ

「考えられる原因」

サーバーやクライアントの設定や初期設定を行なったときに、/etc/.rootkey ファイルがすでに存在していました。以前そのマシンに NIS+ をインストールしたことがあり、NIS+ を削除したとき、または NIS や /etc への変更を行なったときに、.rootkey ファイルを削除しなかったためにこのような状態が起こります。

「診断」

/etc ディレクトリで ls -lnisls -l org_dir を実行し、/etc/.rootkey の日付を、cred テーブルの日付と比較します。/etc/.rootkey の日付が明らかに cred テーブルより古い場合は、ファイルがあらかじめ存在していたことが考えられます。

「対策」

問題のあるマシンで、root として keylogin -r コマンドを実行し、そのマシンをもう一度クライアントとして設定し直します。

root のパスワードを変更したための問題

「症状」

マシンの root のパスワードを変更した結果、変更結果が反映されなかったか、スーパーユーザーとしてログインできなくなりました。

「考えられる原因」


注 –

セキュリティ上の理由から、passwd テーブルの中に、UserID 0 という項目を、設けるべきではありません。


ルートのパスワードを変更した際、ルートに対して chkey -p を実行していなかったり、何らかの問題が発生したことにより、変更が正しく行われませんでした。

「対策」

管理特権を持つユーザー (つまり、管理特権が割り当てられているグループに所属するメンバー) としてログインし、passwd を使用して、元のパスワードに戻します。元のパスワードが正しく機能するかどうか確かめてください。正しく機能すれば、passwd を使用してパスワードを変更した後、chkey -p を実行します。


注意 – 注意 –

NIS+ の名前空間の設定が終わり、すでに動作している状態でも、ルートマスターのマシンを使って root のパスワードを変更することは可能です。しかし、ルートマスターの鍵は変更しないでください。これらは、サブドメイン内のすべてのクライアント、複製サーバー、サーバーの中のすべてのディレクトリオブジェクトに埋め込まれているからです。chkey をルートで実行する際、必ず -p オプションを指定するようにすれば、ルートマスターの鍵を変更する必要はなくなります。


NIS+ の性能の低下とシステムのハングアップの問題

この節では、性能の低下とシステムのハングアップの問題を取り上げます。

性能の低下の症状

処理内容に関係する次の表現が含まれているエラーメッセージが表示されます。

次の一般的な現象が観察されることもあります。

チェックポイントの実行

誰かが nispingnisping -C どちらかのコマンドを実行しました。または、rpc.nisd デーモンが、チェックポイントを実行しています。


注意 – 注意 –

再起動しないでください。nisping を実行しないでください。


nisping やチェックポイントを実行すると、サーバーは反応が遅くなったり、他のコマンドにすぐに応答しなくなったりすることがあります。名前空間のサイズに応じて、このようなコマンドが完了するまでに、かなりの時間を要します。これらのコマンドの実行中に、誰かが同様のコマンドを実行すると、所要時間は何倍にもなります。再起動も行わないでください。この種の問題は自然に解決します。サーバーが nisping やチェックポイントの実行を完了するまで待つだけです。

マスターサーバーと複製サーバーの同期が完全に行われている場合、同期が完了するまで、複製サーバーはサービスを停止します。再起動しないで待機してください。

変数 NIS_PATH

NIS_PATH 変数が、明快かつ単純な値に設定されているかどうか確認します。たとえば、デフォルトでは org_dir.$:$ に設定されています。 複雑な NIS_PATH、特に他の変数を含んでいる変数は、システムの速度を低下させ、特定の操作にエラーを引き起こす可能性があります (詳細は、環境変数 NIS_PATH を参照)。

デフォルト以外のテーブルパスを指定するために nistbladm を使用することは避けてください。デフォルト以外のテーブルパスを指定すると、性能は低下します。

テーブルパス

テーブルパスは使用しないでください。性能を低下させることになります。

複製サーバーが多すぎる

1 つのドメインの中に複製サーバーが多すぎる場合は、複製作業を行なっている間はシステムの性能が低下します。1 つのドメインまたはサブドメインの中に、10 台より多くの複製サーバーを置くことは避けてください。ドメインの中の複製サーバーが 5 台より多い場合は、何台かを取り除いて性能が改善されるかどうか調べます。

再帰的なグループ

再帰的なグループとは、他のグループを包含するグループのことです。グループの中に他のグループを含めると、システム管理者として行う作業は減少しますが、システムの速度は低下します。再帰的なグループを使うべきではありません。

起動時の NIS+ データベースのログが大きい

rpc.nisd は、起動時に各ログを参照します。ログが大きい場合は、起動時の参照に時間がかかることがあります。rpc.nisd を起動する前に、nisping -C を使用して、チェックポイントを実行することをお勧めします。

マスターの rpc.nisd デーモンが終了している

「症状」

-M オプションを指定して要求をマスターサーバーに送ったときに、マスターのマシンで rpc.nisd デーモンが終了していると、「server not responding」タイプのエラーメッセージが発生し、更新を行うことは認められません。-M オプションを指定しなかったときは、要求は機能している複製サーバーに自動的に転送されます。

「考えられる原因」

ホームディレクトリ名やホスト名の一部として大文字を使うと、rpc.nisd デーモンが終了することがあります。

「診断」

最初に、サーバー自体が起動されて、動作しているかどうか確認します。動作している場合は、ps -ef | grep rpc.nisd を実行し、デーモンが動作しているかどうか調べます。

「対策」

デーモンが終了している場合は、起動し直します。たびたびデーモンが終了する場合は、ご購入先にご連絡ください。

nis_cachemgr がない

「症状」

あるマシンが他のドメインにある名前空間オブジェクトを探すのに、非常に長い時間がかかっています。

「考えられる原因」

nis_cachemgr を実行していません。

「診断」

ps -ef | grep nis_cachemgr を実行して、nis_cachemgr が動作しているかどうか確認します。

「対策」

そのマシンで、nis_cachemgr を起動します。

NIS+ のインストール後、サーバーの起動が非常に遅い

「症状」

NIS+ のスクリプトを使用して NIS+ をインストールした後、サーバーの動作が非常に遅く、緩慢です。

「考えられる原因」

nispopulate スクリプトを動作させた後、nisping -C -a を実行していません。

「対策」

nisping -C -a を実行して、できるだけ早くチェックポイントを実行します。

niscat が エラーメッセージ「Server busy. Try Again」を返す

「症状」

niscat を実行すると、サーバーがビジーであるというエラーメッセージが表示されます。

「考えられる原因」

「診断」

swap -s を実行して、サーバーのスワップ空間をチェックします。

「対策」

NIS+ を実行するには、適度のスワップ空間とディスク容量を用意すべきです。必要に応じて、空間を増やします。

ホスト名を変更した後で、NIS+ の照会がハングする

「症状」

NIS+ サーバーのホスト名を完全指定することは、推奨されていません。このような指定を行なった後、NIS+ の照会を実行すると、エラーメッセージを表示することなくハングアップが発生しました。次の可能性をチェックします。

「考えられる原因」

完全指定のホスト名は、次の条件を満たしていなければなりません。

「対策」

ハングアップした NIS+ プロセスを終了させ、ホストやサーバーの rpc.nisd も終了させます。上の 2 つの条件に合わせて、ホスト名を変更します。nisinit を使用してサーバーを初期設定します。ホスト名が正しいことを確認した後もハングアップが発生する場合は、この節の他の考えられる原因をチェックしてください。

NIS+ のシステムリソースの問題

この節では、メモリーやディスク容量のようなシステムリソースが不足したときの問題を取り上げます。

リソースの問題

処理内容に関係する次の表現が含まれているエラーメッセージが表示されます。

メモリーの不足

システムのメモリーやスワップ空間が不足すると、NIS+ の様々な問題やエラーメッセージに遭遇します。一時的な解決策として、不必要なウィンドウやプロセスを終了させることが考えられます。必要に応じて、ウィンドウシステムを終了し、端末のコマンド行を使用します。それでもメモリー不足を知らせるメッセージが表示されるときは、スワップ空間やメモリーを追加するか、十分なスワップ空間やメモリーを持つシステムに切り替えます。

特定の状況では、アプリケーションやプロセスがメモリーを無駄に消費し、使用メモリーサイズが極端に大きくなることがあります。次のコマンドを実行すると、アプリケーションやプロセスの現在のサイズを知ることができます。


ps -el

sz (サイズ) の列には、各プロセスの現在のメモリーサイズが表示されています。必要に応じて、サイズが同程度と思われるアプリケーションやプロセスを比較し、メモリーサイズが極端に大きいものが存在しないかどうか調べます。

ディスク容量の不足

ディスク容量が不足すると、様々なエラーメッセージが表示されます。ディスク領域の不足に共通する原因は、定期的に行われている tmp ファイルの削除やログファイルの切り捨てをしていないことです。切り捨てを行わないと、ログファイルと tmp ファイルは常時増加します。これらのファイルの増大速度はシステムごとに異なり、同じシステムでも状態によって変化します。非効率的なシステムや、名前空間に問題を抱えているシステムでは、ログファイルは非常に急速に増大します。


注 –

多くの問題が発生しているときは、ログファイルと /tmp のファイルを頻繁にチェックします。ディスク容量が不足して他の問題が発生する前に、ログファイルを切り捨て、/tmp ファイルを削除します。また、ルートディレクトリとホームディレクトリで core ファイルを探して削除します。


ログファイルを切り捨てるには、システムのチェックポイントを設けます。チェックポイントのプロセスがある程度の時間を要し、完了するまではシステムの速度を低下させることに注意してください。

システムのチェックポイントを実行するには、nisping -C を実行します。

プロセス数の不足

過度に負荷の大きいマシンでは、マシンの構成の中で指定されている、同時に実行できる最大のプロセス数に達する可能性があります。この結果、「unable to fork」のようなメッセージが表示されます。この問題を解決するために推奨されている方法は、不必要なプロセスを終了させることです。それでも問題が持続する場合は、システムの管理マニュアルの説明に従って、より多くのプロセスを扱えるようにシステムを構成し直してください。

NIS+ のユーザーの問題

この節では、一般ユーザーが遭遇する NIS+ の問題を取り上げます。

ユーザーの問題

ユーザーがログインできない

ユーザーがログインできない原因としては、以下のように様々なものが考えられます。

ユーザーが新しいパスワードを使ったときにログインできない

「症状」

最近パスワードを変更したユーザーが、ログインできません。または、特定のマシンからログインできますが、他のマシンからログインできません。

「考えられる原因」

ユーザーがリモートドメインにログインできない

「症状」

ユーザーが rlogin を使用して、他のドメインへのログインを試みましたが、「Permission denied」メッセージが表示されて、拒絶されました。

「考えられる原因」

他のドメインにリモートログイン (rlogin) するには、ユーザーはそのドメインで LOCAL の資格を持っていなければなりません。

「診断」

そのドメインで、nismatch username. domainname. cred.org_dir を実行し、LOCAL の資格を持っているかどうか調べます。

「対策」

リモートドメインから nisaddcred を使用し、そのドメインでの LOCAL の資格をユーザーに割り当てます。

ユーザーがパスワードを変更できない

原因として最も多いのが、古いパスワードの入力を間違えた (または忘れた) ということです。

他には以下のような原因が考えられます。

NIS+ に関するその他の問題

この節では、上記の問題に当てはまらない問題を取り上げます。

NIS+ の動作

特定のホストが NIS+ を実行しているかどうか知りたい場合があります。NIS+ が動作しているか知るには、スクリプトが必要です。

次のどれかに一致する場合は、NIS+ が動作していると考えられます。

複製サーバーの更新のエラー

「症状」

更新が成功しなかったことを示すエラーメッセージが表示されます。次のメッセージが更新の成功を示すことに注意してください。「replica_update:number updates number errors

「考えられる原因」

次のエラーメッセージのどれかが表示された場合、サーバーがビジーであり、更新を延期すべきことがわかります。

これらのメッセージは、NIS+ のエラーコード定数 NIS_DUMPLATER (ある複製がすでに再同期を実行している) によって、または同時に生成されます。

次のメッセージは、他の問題が起こっていることを示します。

-C (診断チャンネルのオープン) オプションを指定した rpc.nisd が動作している場合は、マスターサーバーか複製サーバーのシステムログに、詳細な情報が記録されることもあります。

これらのメッセージは、次のような潜在的な問題が起こっていることを示しています。

「診断」

複製サーバーとマスターサーバー両方のシステムログから、詳細な情報を探します。情報が記録されている場合でも、詳細の程度は、システムのエラー報告レベルと、-C オプション (診断) を指定して rpc.nisd を実行したかどうかによって異なります。

「対策」

ほとんどの場合、これらのメッセージは、システムが修正することのできる、ソフトウェアの小さな問題が発生したことを意味しています。あるコマンドを実行した結果、これらのメッセージが表示された場合は、しばらく待って、もう一度同じコマンドを実行します。これらのメッセージが頻繁に表示される場合は、/etc/syslog.conf ファイル内のしきい値レベルを変更します。詳細は、syslog.conf のマニュアルページを参照してください。