Solaris ネーミングの管理

パート VII 付録

この付録は参考資料を提供します。

付録 A 問題と解決方法

この章では、Solaris 8 リリースの名前空間を管理する際に発生する可能性のある問題のいくつかを説明します。

NIS+ の問題解決

この章は問題のタイプで分類されています。各問題には、一般的な現象、問題の説明、および対策が示されています。この章の他に、NIS+ のさらに一般的なエラーメッセージをアルファベット順に表示した付録があります。エラーメッセージが特定できていれば、最初に付録 B 「エラーメッセージ」 を参照してください。問題が簡単か、または 1 つのエラーメッセージに特定できる場合には、その対策は付録 B 「エラーメッセージ」 に掲載されています。

NIS+ のデバッグオプション

NIS_OPTIONS の環境変数を設定して、NIS+ デバッグオプションを制御できます。

オプションは、二重引用符で囲まれたオプションセットと共にスペースで区切られた NIS_OPTIONS コマンドの後に指定されます。各オプションに name=value のフォーマットがあります。値は、特定のオプションに従って整数、文字列、ファイル名になります。整数値のオプションに対して、値が指定されていない場合には、デフォルト値は 1 になります。

NIS_OPTIONS は次のオプションを認識します。

表 A-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 コマンドによって生成されるのと同じフォーマットで、優先サーバーを指定する (表 15-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. です。siriusdoc.com. のクライアントであり、subdoc.doc.com. のクライアントではないので、sirius.subdoc.doc.com. は間違いであり、エラーになります。

org_dir や groups_dir を削除できない

親ディレクトリを削除する前に、必ず org_dirgroups_dir を削除してください。ドメインの groups_dirorg_dir を削除する前に、nisrmdir を使用してドメインを削除すると、これらの 2 つのサブディレクトリは、どちらも削除できなくなります。

複製の失敗からの NIS+ ディレクトリの削除または分離

複製サーバーからディレクトリを削除または分離する場合には、最初にディレクトリの org_dirgroups_dir のサブディレクトリを削除してから、ディレクトリ自体を削除します。各サブディレクトリが削除された後に、削除しようとするディレクトリの親ディレクトリで nisping を実行する必要があります (「ディレクトリを削除する」を参照)。

nisping の操作に失敗すると、ディレクトリは完全に削除または分離されません。

この状態が発生したら、次の手順を実行して、修正する必要があります。

  1. 複製上の /var/nis/rep/org_dir を削除します。

  2. 複製上の /var/nis/rep/serving_listorg_dir.domain が表示されないことを確認してください。

  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+ データベースの問題

この節では、名前空間のデータベースとテーブルに関連する問題を説明します。一般的な症状には次のようなものがあります。

「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 8 リリース のマシン上で、ユーザーまたはシステム管理者が 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 となります。

/var/nis/var/nis/data といったディレクトリや、その中のファイルは、nisinit などの NIS+ 設定プロシージャーによって作成されますが、名前の変更をしないようにしてください。

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 を使用し、どのアクセス権が割り当てられているか確認します。他のアクセス権も必要な場合は、ユーザー自身、オブジェクトの所有者、システム管理者のうちの誰かが、そのオブジェクトのアクセス権の変更を行うことができます。詳細は、第 10 章「NIS+ のアクセス権の管理」と、第 12 章「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」メッセージの原因としては他に以下のようなものが考えられます。

パスワードについては、第 11 章「パスワードの管理」を参照してください。

パスワードがロック状態、期限切れ、または無効である

Permission denied, password expired」といったタイプのメッセージは、「ユーザーのパスワードが有効期限を過ぎた」、「またはパスワード使用権が無効になった」といった理由で表示されることが最も多くなっています。詳細は第 11 章「パスワードの管理」を参照してください。

資格に関する情報が古くなっている

資格、アクセス権ともに正しいにもかかわらず、クライアントの要求が拒否されるという場合もあります。これはおそらく、名前空間のどこかに古い情報が存在することが原因です。

資格情報の保存と更新

公開鍵など、資格に関する情報は、名前空間内の様々な場所に保存されています。NIS+ は、この情報を保存先のオブジェクトの生存期間の値にもとづいて定期的に更新しますが、更新と更新との間にときおり情報のずれが起こります。その結果、一部の操作が行えなくなります。表 A-2 は、資格に関する情報を保存するオブジェクト、テーブル、ファイルと、そのリセットの方法を示したものです。

表 A-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 コマンドの使用方法の詳細は、第 7 章「NIS+ 資格の管理」を参照)。

鍵の中にはファイルやキャッシュに保存されているものもあるため、nisupdkeys ですべての問題を解決できるわけではありません。鍵を手作業で更新しなければならない場合もあります。この場合は、「サーバーの公開鍵の内容は、公開鍵が作成された後どのように名前空間オブジェクトに伝えられるのか」ということについて理解する必要があります。サーバーの公開鍵の伝播には、一般に以下の 5 つの段階があります。それぞれの詳細について説明します。

1:サーバーの公開鍵が作成される

NIS+ サーバーも初めは NIS+ クライアントなので、公開鍵の作成は他の NIS+ クライアントの公開鍵と同じ方法 (nisaddcred コマンドを使用する) で行います。公開鍵はその後、サーバーが実際にサポートするドメインではなく、サーバーのホームドメインの cred テーブルに保存されます。

2:公開鍵の内容がディレクトリオブジェクトに伝えられる

NIS+ ドメインと NIS+ サーバーの設定後は、サーバーとドメインを関係づけることができます。この「関係づけ」は、nismkdir コマンドで行います。nismkdir コマンドによってサーバーとディレクトリの関係づけが行われる際、サーバーの公開鍵も cred テーブルからドメインのディレクトリオブジェクトにコピーされます。たとえば、サーバーが doc.com. ルートドメインのクライアントで、sales.doc.com. ドメインのマスターサーバーになっているという場合を考えてみましょう。

図 A-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 コマンドによって NIS+ テーブル (cred テーブルを含む) が新しい複製サーバーにダウンロードされます。これによって、元のサーバーの公開鍵も複製サーバーの cred テーブルに保存されます。

5:サーバーの公開鍵が更新された場合の処理

サーバーの DES 資格 (サーバーのルート ID) を変更すると、公開鍵も変更されます。その結果、サーバー用に cred テーブルに保存される公開鍵が、以下の場所に保存されるものと矛盾します。

サーバーの鍵は、ほとんどの場所において数分〜 12 時間で自動的に更新されます。すぐに更新するには、以下のコマンドを使用します。

表 A-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 テーブルより古い場合は、ファイルがあらかじめ存在していたことが考えられます。

「対策」

問題のあるマシンで、ルートとして keylogin -r コマンドを実行し、そのマシンをもう一度クライアントとして設定し直します。

root のパスワードを変更したための問題

「症状」

マシンのルートのパスワードを変更した結果、変更結果が反映されなかったか、スーパーユーザーとしてログインできなくなりました。

「考えられる原因」


注 -

セキュリティ上の理由から、passwd テーブルの中に、UserID 0 という項目を、設けるべきではありません。


ルートのパスワードを変更した際、ルートに対して chkey -p を実行していなかったり、何らかの問題が発生したことにより、変更が正しく行われませんでした。

「対策」

管理特権を持つユーザー (つまり、管理特権が割り当てられているグループに所属するメンバー) としてログインし、passwd を使用して、元のパスワードに戻します。元のパスワードが正しく機能するかどうか確かめてください。正しく機能すれば、passwd を使用してパスワードを変更した後、chkey -p を実行します。


注意 - 注意 -

NIS+ の名前空間の設定が終わり、すでに動作している状態でも、ルートマスターのマシンを使ってルートのパスワードを変更することは可能です。しかし、ルートマスターの鍵は変更しないでください。これらは、サブドメイン内のすべてのクライアント、複製サーバー、サーバーの中のすべてのディレクトリオブジェクトに埋め込まれているからです。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+ の問題を取り上げます。

ユーザーの問題

ユーザーがログインできない

ユーザーがログインできない原因としては、以下のように様々なものが考えられます。

これ以外の設定をすると、ユーザーがログインできなくなります (詳細は、「nsswitch.conf ファイルの必要条件」を参照)。

ユーザーが新しいパスワードを使ったときにログインできない

「症状」

最近パスワードを変更したユーザーが、ログインできません。または、特定のマシンからログインできますが、他のマシンからログインできません。

「考えられる原因」

ユーザーがリモートドメインにログインできない

「症状」

ユーザーが 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(4) のマニュアルページを参照してください。

NIS の問題と対策

この節では、NIS を実行中のネットワーク上で発生する問題の解決方法を説明します。NIS クライアントで見うけられる問題と、NIS サーバーで見うけられるものを説明します。

NIS サーバーやクライアントをデバッグする前に、第 18 章「ネットワーク情報サービス (NIS)」を参照してください。その後で、この節で、問題を適切に解説する項を参照してください。

症状

一般的な NIS バインディングの問題には次のようなものがあります。

1 つのクライアントに影響する NIS の問題

NIS バインディングの問題を示す現象が、1 つ以上のクライアントで発生している場合には、問題はクライアントにあります。多くの NIS クライアントが、プロパティを正確にバインドできない場合には、問題は 1 つ以上の NIS サーバーにある可能性があります。「NIS の問題が多くのクライアントに影響している」を参照してください。

ypbind がクライアントで実行されていない

1 つのクライアントに問題があっても、同じサブネットの他のクライアントが正常に機能しています。問題のあるクライアント上で、ls -l/usr のようなディレクトリで実行します。これは、多くのユーザーが所有するファイルを含み、ここにはクライアント /etc/passwd ファイルにはないものも含まれます。この結果の表示に、ローカルの /etc/passwd には、名前ではなく番号として入ってないファイルの所有者が含まれる場合には、NIS サービスがクライアントで機能していないことを示します。

通常これらの現象は、クライアント ypbind プロセスが実行していないこと示します。ps -e を実行して、ypbind をチェックします。ypbind が見つからなければ、スーパーユーザーとしてログインし、次のように入力して、ypbind を起動します。


client# /usr/lib/netsvc/yp/ypstart

ドメイン名がないか不正確である

あるクライアントに問題があり、他のクライアントは正常に機能していますが、ypbind は問題のあるクライアント上で実行しています。クライアントのドメインの設定が不正確な可能性があります。

クライアントで domainname コマンドを実行して、どのドメイン名が設定されているのかを調べます。


Client#7 domainname neverland.com

NIS のマスターサーバー上の /var/yp 内の実際のドメイン名と、出力を比較します。実際の NIS ドメインは、/var/yp ディレクトリ内のサブディレクトリとして表示されます。


Client#7 ls /var/yp...
-rwxr-xr-x 1 root Makefile
drwxr-xr-x 2 root binding
drwx------ 2 root doc.com
...

マシン上での domainname の実行によって得たドメイン名が、/var/yp 内のディレクトリとして示されたサーバードメインと同じではない場合には、マシンの /etc/defaultdomain ファイルで指定されたドメイン名が間違っています。スーパーユーザーとしてログインして、マシンの /etc/defaultdomain ファイル内のクライアントのドメイン名を修正します。これによって、マシンを起動するたびに、ドメイン名が正しいかどうかが確認されます。ここでマシンを再起動しましょう。


注 -

ドメイン名では大文字と小文字を区別します。


クライアントがサーバーにバインドされない

ドメイン名が正しく設定されて、ypbind が実行中でも、コマンドがまだハングする場合には、ypbind コマンドを実行することによって、クライアントがサーバーにバインドされていることを確認してください。ypbind を起動したばかりの時は、ypwhich を数回実行します。特に最初のものは、ドメインがバインドされていないことを通知して、2 番目のものは成功します。

サーバーを使用できない

ドメイン名が正しく設定されていて、ypbind が実行中で、クライアントがサーバーと通信できないというメッセージを受け取った場合には、いくつかの問題があります。


注 -

セキュリティと管理の意味から、クライアントにブロードキャストを使ってサーバーを検索させるのではなく、クライアントの ypservers ファイルでクライアントのバインド先のサーバーを指定してください。ブロードキャストは、ネットワークを結合して、クライアントの速度を落とします。異なるクライアントに対して、異なるサーバーをリストすることによって、サーバー負荷の均衡がとれなくなります。


ypwhich の表示に一貫性がない

ypwhich を同じクライアントで数回使うと、NIS サーバーが変わるので結果の表示が異なります。これは正常な状態です。NIS クライアントから NIS サーバーへのバインディングは、ネットワークや NIS サーバーを使用中の場合は時間の経過に伴って変化します。ネットワークは、すべてのクライアントが受け入れ可能な応答を NIS サーバーから受信した時点で安定します。クライアントのマシンが NIS サービスを得ているかぎりは、サービスの供給元は問題にはなりません。たとえば、NIS サーバーマシンがそれ自体の NIS サービスを、ネットワーク上の別の NIS サーバーから受けることがあります。

サーバーのバインディングが不可能な場合

サーバーのバインディングが不可能な場合には、ypset コマンドを使えます。別のネットワークまたはサブネットの別のサーバーが使用可能な場合には、そのサーバーへのバインディングが一時的に可能になります。ただし、-ypset オプションを使用するためには、ypbind-ypset または -ypsetme オプションのどちらかを指定して、実行する必要があります。


注 -

セキュリティの目的のために、-ypset-ypsetme のオプションの使用は、制御された状態でのデバッグだけに限定してください。-ypset-ypsetme のオプションの使用によって、セキュリティが侵害される恐れがあります。これらを実行中は、サーバーのバインディングをだれでも変更でき、他のユーザーを妨害したり、重要なデータへの未承認のアクセスが認められるためです。これらのオプションで ypbind を起動する場合には、いったん問題を確定したら、ypbind を消去して、これらのオプションを指定しないで再起動してください。


ypbind のクラッシュ

ypbind が、起動するたびに、すぐにクラッシュする場合には、システムの他の部分で問題を調べてください。以下を入力して、rpcbind デーモンの存在をチェックします。


% ps -ef | grep rpcbind

rpcbind が存在しないか、または安定せず、動作に異常がある場合には、RPC のマニュアルを参照してください。

正常に機能しているマシンから、問題のあるクライアント上の rpcbind と通信ができる場合があります。稼動中のマシンから、以下を入力します。


% rpcinfo client

問題のあるクライアント上の rpcbind に問題がない場合には、rpcinfo によって次の出力がされます。


program version netid address service owner
...
100007 2 udp 0.0.0.0.2.219 ypbind superuser
100007 1 udp 0.0.0.0.2.219 ypbind superuser
100007 1 tcp 0.0.0.0.2.220 ypbind superuser
100007 2 tcp 0.0.0.0.128.4 ypbind superuser
100007 2 ticotsord ¥000¥000¥020H ypbind superuser
100007 2 ticots ¥000¥000¥020K ypbind superuser ...

マシンは異なるアドレスを持ちます。それらが表示されない場合には、そのサービスを ypbind が登録できていません。マシンを再起動して、再度 rpcinfo を実行します。ypbind プロセスがある場合には /usr/lib/netsvc/yp/ypbind を再起動しようとするたびに変更します。

NIS の問題が多くのクライアントに影響している

1 つ以上のクライアントで、NIS バインディングの問題を示す現象が発生している場合には、それらクライアントに問題がある可能性があります (「1 つのクライアントに影響する NIS の問題」を参照)。多くのクライアントが正確にバインドできなくなっている場合には、1 つ以上の NIS サーバーに問題がある可能性があります。

ネットワークまたはサーバーが過負荷

ネットワークまたは NIS サーバーが過負荷状態で、クライアント ypbind プロセスに ypserv が時間以内に応答を戻せない場合には、NIS がハングする場合があります。

こういった状態では、ネットワーク上のすべてのクライアントで同じまたは類似した問題が発生します。ほとんどの場合に、この状態は一時的です。NIS サーバーが再起動して ypserv を再起動するか、または NIS サーバーまたはネットワーク自体の負荷が減少すると、通常、メッセージは消えます。

サーバーの誤動作

サーバーが起動して実行中であることを確認してください。サーバーが物理的に近くにない場合には、ping コマンドを使ってください。

NIS デーモンを実行していない

サーバーが起動して実行中である場合には、クライアントマシンが正常に動作していることを調べて、ypwhich コマンドを実行します。ypwhich が応答しない場合には、それを消去します。NIS サーバーにスーパーユーザーになってログインし、次のように入力して NIS ypbind プロセスが実行中かどうかをチェックします。


# ps -e | grep yp

注 -

-f オプションは ps と共に使わないでください。このオプションはユーザー ID を名前に変換しようとするため、より多くのネームサービスの検索が失敗するようになります。


ypbind または ypserv デーモンのどちらかが実行されていない場合には、それらを消去してから、次のように入力して再起動します。


# /usr/lib/netsvc/yp/ypstop
# /usr/lib/netsvc/yp/ypstart

ypbind または ypserv プロセスの両方が NIS サーバーで実行中の場合には、次のように入力します。


# ypwhich

ypwhich が応答しない場合には、ypserv がハングしていて、再起動が必要な状態である可能性があります。サーバーに root でログインして、ypserv を消去し、次のように入力して再起動します。


# /usr/lib/netsvc/yp/ypstop
# /usr/lib/netsvc/yp/ypstart

サーバーに別のバージョンの NIS マップが存在する

NIS はマップをサーバー間で伝播するので、ネットワーク上に異なる NIS サーバーに、同じマップの異なるバージョンが存在することがあります。相違点が長時間継続しない場合には、このバージョンの違いは、許容可能です。

マップの不一致のもっとも一般的な原因は、マップの正常な伝播を妨げる何かが存在するためです。たとえば、NIS サーバーまたはルーターが、NIS サーバー間でダウンしている場合です。すべての NIS サーバーとそれらの間に存在するルーターが実行中の場合には、ypxfr は成功します。

サーバーとルーターが正常に機能している場合には、以下をチェックします。

ypxfr 出力のログ

特定のスレーブサーバーで、マップの更新に問題がある場合には、そのサーバーにログインして、ypxfr を対話形式で実行します。ypxfr が失敗すると、ypxfr がその失敗を通知するので、問題の修正が可能になります。ypxfr が成功しても、時々失敗するような場合には、メッセージのログを取るためにログファイルを作成します。ログファイルを作成するには、次のように入力します。


ypslave# cd /var/yp
ypslave# touch ypxfr.log

これによって、ypxfr からのすべての出力を保存する ypxfr.log ファイルが作成されます。

対話形式で実行中の出力 ypxfr の表示に出力は類似しますが、ログファイルの各行にタイムスタンプが押されます。タイムスタンプは、通常とは異なる順番になりますが、問題はありません。タイムスタンプは、ypxfr が実行し始めたことを示します。ypxfr のコピーが同時に実行しても、作業時間が異なる場合には、起動元とは異なる順番でサマリーステータス行をログファイルに記述していることがあります。任意の型の失敗が、断続的にログに示されます。


注 -

問題を解決したら、ログファイルを削除してログを停止します。削除しないと、ログは制限なく大きくなります。


crontab ファイルと ypxfr シェルスクリプトをチェックする

root の crontab ファイルを調べて、それが起動した ypxfr シェルスクリプトをチェックします。これらファイルにタイプミスがあると、伝播の問題が発生します。/var/spool/cron/crontabs/root ファイル内でシェルスクリプトを参照できないか、または任意のシェルスクリプト内でマップを参照できない場合にも、エラーが発生します。

ypservers マップをチェックする

NIS スレーブサーバーが、ドメインに対するマスターサーバー上の ypservers マップにリストされていることも確認してください。リストされていない場合には、スレーブサーバーはサーバーとして正しく機能しますが、yppush はマップの変更をスレーブサーバーに伝播しません。

対策

NIS スレーブサーバーの問題が明白ではない場合には、その問題を回避できます。その一方で、rcp または ftp を使ってデバッグし、一貫性のないマップの最新バージョンを問題のない NIS サーバーからコピーできます。たとえば、次のように問題のあるマップを転送します。


ypslave# rcp ypmaster:/var/yp/ mydomain/map.¥* /var/yp/ mydomain

この場合 * の文字は、コマンド行でエスケープされて、ypslave でローカルにではなく、ypmaster で拡張されます。

ypserv のクラッシュ

ypserv プロセスがほとんど即座にクラッシュして、何度再起動しても安定しないときは、デバッグプロセスは、「ypbind のクラッシュ」で説明するものと実質的に同じです。rpcbind デーモンの存在を次のようにチェックしてください。


ypserver% ps -e | grep rpcbind

デーモンが見つからない場合にはサーバーを再起動します。そうでない場合には、デーモンが実行中でないなら、以下を入力して、同様の出力を検索します。


% rpcinfo -p ypserver
program vers proto port service
1000004 tcp 111 portmapper
1000003 tcp 111 portmapper
1000682 udp 32813 cmsd
...
1000071 tcp 34900 ypbind
1000042 udp 731 ypserv
1000041 udp 731 ypserv
1000041 tcp 732 ypserv
1000042 tcp 32772 ypserv

マシンに異なるポート番号がある場合があります。ypserv プロセスを表わす 4 つのエントリは次のとおりです。


100004   2   udp   731   ypserv
100004   1   udp   731   ypserv
100004   1   tcp   732   ypserv
100004   2   tcp   32772   ypserv

このエントリがなく、ypserv がそのサービスを rpcbind で登録できない場合には、マシンを再起動してください。これらのエントリがある場合には、rpcbind からサービスの登録を解除してから、ypserv を再起動します。rpcbind からサービスの登録を解除するには、サーバーで次のように入力します。


# rpcinfo -d number 1
# rpcinfo -d number 2

この場合 number は、rpcinfo によって通知される ID 番号です (前述の例では、100004)。

DNS の問題と対策

この節では、一般的な DNS の問題とその対策を説明します。

クライアントはマシンを見つけられるが、サーバーはできない

「症状」

DNS クライアントは、IP アドレスかホスト名でマシンを見つけられますが、サーバーは IP アドレスでしか見つかりません。

「考えられる原因と対策」

サーバーの nsswitch.conf ファイルの hosts 行から DNS を省略したために発生する可能性があります。たとえば、不完全な hosts 行は、次のようになります。


host:files

DNS を使用中には、次のどちらかのように、すべてのマシンの nsswitch.conf ファイルの hosts レコード内に dns を含む必要があります。


hosts: dns nisplus [NOTFOUND=return] files

hosts: nisplus dns [NOTFOUND=return] files

変更に効果がないか不安定になる

「症状」

マシンまたはサーバーを追加または削除しても、変更が認識されず、その効果が現れません。またはある時は変更が認識され、別の時にはその効果が現れません。

「考えられる原因」

考えられる原因は、主マスターサーバー上の SOA のシリアル番号を増やすのを忘れた場合です。新しい SOA 番号がないので、主サーバーのものと一致させるためのデータ更新を副サーバーは行いません。このため、古い未変更のデータファイルで作業を行なっています。

この他に考えられる原因は、1 つ以上の主要なデータファイルの SOA のシリアル番号が、副サーバー上の対応するシリアル番号よりも小さい値に設定されたということです。たとえば、この状態は、主サーバー上のファイルを削除してから、ある種の入力ファイルを使って最初からそれを作成し直した場合に発生します。

考えられる 3 番目の原因は、主サーバーのデータファイルへの変更を行なった後に、HUP 信号を主サーバーに送信し忘れた場合です。

「診断と対策」

最初に、変更したデータファイルの SOA のシリアル番号と副サーバー上の対応するファイルをチェックします。

DNS クライアントが短縮名を検索できない

「症状」

クライアントは完全指定名は検索できますが、短縮名は検索できません。

「考えられる原因と現象」

クライアントの /etc/resolv.conf ファイルで、ドメイン名の最後にスペースがないかをチェックします。スペースやタブはドメイン名の最後では許可されません。

リバースドメインデータが正確に副サーバーに転送されない

「症状」

ゾーンのドメイン名の付いたデータは、ゾーンの主マスターサーバーからゾーンの副サーバーに正確に転送される一方で、リバースドメインデータは転送されません。つまり、副サーバーの host.rev ファイルが主サーバーから正確に更新されていません。

「考えられる原因」

副サーバーのブートファイルの構文エラー

「診断と対策」

副サーバーのブートファイルをチェックします。主サーバーのブートファイルの IP アドレスが、ホストデータに対するのと同じようにリバースゾーンエントリに対してリストされていることを確認してください。

たとえば、主サーバーの IP アドレスが、secondary in-addr.arpa レコードからなくなっているので、次のブートファイルは正しくありません。


;
; /etc/named.boot file for dnssecondary
directory /var/named
secondary   doc.com   129.146.168.119        dnshosts.bakup
secondary   168.146.129.in-addr.arpa  doc.rev.bakup

正しいファイルは次のようになります。


;
; /etc/named.boot file for dnssecondary
directory /var/named
secondary   doc.com   129.146.168.119        dnshosts.bakup
secondary   168.146.129.in-addr.arpa   129.146.168.119  doc.rev.bakup

サーバーが失敗してゾーンが問題を期限切れにした

副サーバーがそのマスターから更新を得られないときは、「master unreachable」のメッセージをログに記録します。問題が修正されない場合には、副サーバーはゾーンを期限切れにして、クライアントからの要求への応答を停止します。これが発生すると、「server failed」のメッセージが表示されるようになります。

「症状」

問題が副サーバーにある場合には、一部のユーザーは、マスターから DNS 情報を獲得でき、問題なく操作できます。

「考えられる原因」

これらの問題に対して考えられる主な 2 つの原因は、副サーバーのブートファイル内のマスターに対する誤った IP アドレスとネットワーク障害があります。

「診断と対策」

マスターの IP アドレスが、hosts ファイルで指定されたマスターに対するアドレスとマスターの実際の IP アドレスと一致することを確認してください。IP アドレスが誤っている場合には、それを修正してから副サーバーを再起動します。


% ping 129.146.168.119 -n 10

rlogin、rsh、ftp の問題

「症状」

「考えられる原因」

「診断と対策」

適切な hosts.rev ファイルをチェックして、ユーザーのマシンに対して PTR レコードがあることを確認します。たとえば、129.146.168.46 の IP アドレスを持つマシン altair.doc.com で、ユーザーが作業をしている場合には、doc.com の主マスターサーバーの doc.rev ファイルは、次のようなエントリを持つ必要があります。


46 	IN	 PTR 	altair.doc.com.

レコードがない場合には、それを hosts.rev ファイルに追加してから、サーバーを再起動するか、「in.named に DNS データを強制的に再読み込みさせる」で説明するとおりにデータを再ロードします。

hosts.rev ファイルの NS エントリをチェック、および修正してからサーバーを再起動するか、「in.named に DNS データを強制的に再読み込みさせる」で説明するとおりに、そのデータを再ロードします。

その他の DNS 構文エラー

「症状」

次のような言い回しを伴ったコンソールまたは syslog のエラーメッセージは、たいてい DNS データとブートファイルの構文エラーによって発生します。

関連ファイルでスペルと構文のエラーをチェックしてください。

一般的な構文エラーは、ドメイン名で後ろに付く点 (ドット) の誤用 (禁じられている場合に使い、必要な場合に使わないなど) に起因します。「ドメイン名の終わりにつけるドット」を参照してください。

FNS の問題と対策

この節では、問題と共に、考えられる原因、診断、対策を示します。

FNS エラーについての一般的な情報については、「FNS エラーメッセージ」付録 B 「エラーメッセージ」 を参照してください。

初期コンテキストが取得できない

「症状」

Cannot obtain initial context」というメッセージが表示されます。

「考えられる原因」

インストール時の問題により発生します。

「診断」

/usr/lib/fn/fn_ctx_initial.so というファイルを検索し、FNS が正しくインストールされているかどうかを確認します。

「対策」

fn_ctx_initial.so ライブラリをインストールします。

初期コンテキストが空になっている

「症状」

fnlist を実行して初期コンテキストの内容を確認すると何も表示されないという状態です。

「考えられる原因」

NIS+ の設定によって起こる問題です。fn* コマンドを実行するユーザーやマシンに関連した組織に、ctx_dir ディレクトリがないことが原因です。

「診断」

nisls コマンドを使用して ctx_dir ディレクトリの有無を確認します。

「対策」

診断の結果 ctx_dir ディレクトリがなければ、fncreate -t org/nis+_domain_name/ を実行して作成します。

「no permission」というメッセージが表示される (FNS)

「症状」

no permission」というメッセージが表示されます。

「考えられる原因」

このメッセージは、「コマンドを実行しようとしたが、アクセス権がない」ということを意味します。

「診断」

適切な NIS+ コマンドを使用してアクセス権を確認します (「FNS と NIS+ の詳細情報」を参照)。NIS+ 主体名は、nisdefaults コマンドで知ることができます。

また、使用している名前が正しいかどうかも確認する必要があります。たとえば、ルート組織のコンテキスト名は、org// を使用して決定します。ルート組織を操作する権限があるかどうか確認してください。myorgunit/ を指定する場合もあります。

「対策」

アクセス権が正しく設定されているにもかかわらずこのメッセージが表示される場合は、適切な資格が与えられていない可能性があります。

これには以下の原因が考えられます。

fnlist で下位組織のリストが表示されない

「症状」

fnlist に組織名を指定して実行しても何も表示されません。

「考えられる原因」

NIS+ の設定によって発生する問題です。下位組織は NIS+ ドメインでなければなりません。NIS+ ドメインには、org_dir というサブディレクトリが必要です。

「診断」

nisls コマンドを使用して、どんなサブディレクトリが存在するかを調べます。nisls をサブディレクトリごとに実行すれば、どのサブディレクトリに org_dir があるかを確かめることができます。org_dir のあるサブディレクトリが下位組織になります。

「対策」

NIS+ ドメインに、org_dir というサブディレクトリを作成します。

ホストコンテキストまたはユーザーコンテキストが作成できない

「症状」

fncreate -t を、user (または username)、または host (または hostname) を指定して実行しても何も起こりません。

「考えられる原因」

NIS_GROUP 環境変数が設定されていません。ユーザーコンテキストあるいはホストコンテキストを作成した際、所有権が名前空間を設定した管理者ではなく、ホストまたはユーザーにあったようです。したがって、fncreate を実行するには、NIS_GROUP 変数を設定して、グループ内の管理者によってコンテキストの操作が行えるようにする必要があります。

「診断」

NIS_GROUP 環境変数をチェックします。

「対策」

NIS_GROUP 環境変数に、コンテキストの管理者のグループ名を設定します。

作成したコンテキストを削除できない

「症状」

ホストコンテキストまたはユーザーコンテキストに対して fndestroy を実行しても、コンテキストが削除されません。

「考えられる原因」

ホストコンテキストまたはユーザーコンテキストの所有権を持っていないことです。ユーザーコンテキストあるいはホストコンテキストを作成した際、所有権が名前空間を設定した管理者ではなく、ホストまたはユーザーにあったようです。

「診断」

NIS_GROUP 環境変数をチェックします。

「対策」

NIS_GROUP 環境変数に、コンテキストの管理者のグループ名を設定します。

fnunbind を実行すると「name in use」というメッセージが表示される

「症状」

バインデイングを削除しようとすると、「name in use」というメッセージが表示されます。指定する名前によってコマンドが正しく実行される場合と、そうでない場合があります。

「考えられる原因」

コンテキストの名前のバインドを解除できません。この制限は、名前のないコンテキスト (orphaned context) が残るような場合に適用されます。

「診断」

fnlist コマンドを実行し、fnunbind に指定しようとする名前がコンテキストのものかどうか確認します。

「対策」

名前がコンテキストのものであれば、fndestroy コマンドを使用してコンテキストを削除します。

fnbind/fncreate -s を実行すると「name in use」というメッセージが表示される

「症状」

-s オプションをつけて fnbind および fncreate を実行すると、指定する名前によっては「name in use」というメッセージが表示されます。

「考えられる原因」

fnbind -s、および fncreate -s を実行すると、既存のバインディングは上書きされます。ただしそれによって orphaned context ができるような場合、「name in use」というエラーメッセージが表示され、この操作は失敗します。

「診断」

fnlist コマンドを実行して、fnbindfncreate に指定しようとする名前がコンテキストのものかどうか確認します。

「対策」

fndestroy コマンドを実行してコンテキストを削除してから、fnbind または fncreate を (先にエラーになった場合と同じ名前を指定して) 実行します。

実体のない名前を指定して fndestroy / fnunbind を実行しても「Operation Failed」が返らない

「症状」

実体のない名前を指定して fndestroyfnunbind を実行しても、操作が失敗したことがまったく知らされない。

「考えられる原因」

fndestroyfnunbind のセマンティクスが、「端末名がバインドされていなくても、操作が success を返す」というようになっているためだと考えられます。

「診断」

問題が発生した場合と同じ名前を指定して fnlookup コマンドを実行します。「name not found」というメッセージが表示されるはずです。

「対策」

考えられる現象を参照。

付録 B エラーメッセージ

この節では、一般的な NIS+ のエラーメッセージをアルファベット順に説明します。メッセージごとに説明を行い、該当するものがある場合は、解決策や、このマニュアルの他の部分の参照箇所を示します。

付録 A 「問題と解決方法」 は、様々な種類の問題と解決策を示しています。この付録の中のエラーメッセージで該当するものがある場合は、付録 A 「問題と解決方法」 の参照箇所を示しています。

エラーメッセージについて

この付録の中で説明されているエラーメッセージのいくつかは、該当するマニュアルページで詳細に説明されています。

この章で説明したエラーメッセージの一部は、マニュアルページでさらに詳しく説明します。

エラーメッセージの内容

エラーメッセージは、ポップアップウィンドウ、シェルツールのコマンド行、ユーザーコンソールウィンドウや、各種のログファイルに表示または記録されます。/etc/syslog.conf ファイルに指定されているエラーの重大度の基準を上げたり下げたりすることもできます。

ほとんどの場合、入力したコマンドか、コマンドが送られたコンテナオブジェクト (ファイル、マップ、テーブル、またはディレクトリ) によって、エラーメッセージが生成されます。しかし時には、コマンドに応答したサーバーによって、エラーメッセージが生成されることもあります (メッセージは通常、syslog に記録される)。たとえば、「permission denied」メッセージは、ほとんどの場合ユーザーかマシンが原因となって発生しますが、コマンドやマシンから要求された機能を実行するのに必要なアクセス権を、サーバー上のソフトウェアが持っていない場合に発生することもあります。

同様に、一部のコマンドは、非常に多くの種類のオブジェクトに対して検索や照会を行います。オブジェクトによっては、原因が明確であるとは限りません。オブジェクトのアクセス権 (読み取り専用の状態、利用できないなどの状態) が原因で、エラーメッセージが返されることがあります。このような場合は、どのオブジェクトが原因となって問題が起こったのか、メッセージからわかる場合もあれば、わからない場合もあります。

通常の操作では、ネーミングなどのソフトウェアとサーバーは、関数ルーチン呼び出しを行います。時として、これらの呼び出しが障害を起こし、エラーメッセージが生成されることがあります。また、ユーザーが入力したコマンドをクライアントやサーバーが処理する前に、それ以外のコマンドによる呼び出しが障害を起こし、エラーメッセージが生成されることもあります。そのようなエラーメッセージは、あたかも今入力したコマンドに対する応答のように見えるかもしれませんが、実際はそれまでの操作に対する応答です。


注 -

名前空間で作業を行なっているときに、遠隔手続き呼び出し (RPC) によってエラーメッセージが生成される可能性もあります。これらの RPC エラーメッセージは、このマニュアルでは説明していません。ご使用のシステムのマニュアルを参照してください。


状況によって異なる意味

NIS+ のソフトウェアのどの部分がエラーメッセージを生成したかにより、同じエラーメッセージがやや異なる意味を持つことがあります。たとえば、nisls コマンドが「Not Found」というメッセージを生成した場合、指定された名前の NIS+ のオブジェクトが存在しないことを意味します。しかし、nismatch コマンドが同じメッセージを表示した場合、検索基準に一致するテーブル項目が見つからなかったことを意味します。

エラーメッセージのアルファベット順ソート規則

この付録のエラーメッセージは、次の規則に従ってアルファベット順に示します。

エラーメッセージ内の番号

FNS エラーメッセージ

FNS エラーメッセージは、FN_status_t オブジェクトにステータスコードとしてカプセル化されます。対応するステータスコードについては、FN_status_t(3N) のマニュアルページを参照してください。

エラーが発生すると、FNS コマンドは、操作が失敗した名前の残りの部分を表示します。表示されなかった名前の部分の処理は成功しています。

たとえば、ユーザーが、org//service/trading/bb に対するコンテキストの作成を試みたとします。名前 org//service/ の解決には成功しましたが、tradingorg//service/ によって名前を付けられたコンテキストで見つかりませんでした。このため trading/bb は、操作が失敗したときに残る名前の一部として表示されます。


Error in creating 'org//service/trading/bb': Name Not Found: 'trading/bb'

別の例では、ユーザーがコンテキスト org//service/dictionary/english の削除を試みましたが、名前を付けられたコンテキストが空であったので、操作を実行できませんでした。引用符 ('') の組み合わせは、与えられた完全な名前を FNS は解決できましたが、要求されたとおりに操作を完了できなかったことを示します。


Error in destroying 'org//service/dictionary/english': Context Not Empty: ''

NIS+、FNS に共通するエラーメッセージ


abort_transaction: Failed to action NIS+ objectname

abort_transaction ルーチンが、サーバーのクラッシュや他の回復不可能なエラーにより、不完全なトランザクションから抜けることに失敗しました。詳細は、「NIS+ データベースの問題」を参照してください。


abort_transaction: Internal database error abort_transaction: Internal error, log entry corrupt NIS+ objectname

これら 2 つのメッセージは、名前空間のデータベースやログが壊れていることを意味します。詳細は、「NIS+ データベースの問題」を参照してください。


add_cleanup: Cant allocate more rags.

このメッセージは、システムで使用できるメモリーが不足していることを示しています。


add_pingitem: Couldn't add directoryname to pinglist (no memory)

(メモリー不足が原因となる問題の詳細は、「メモリーの不足」を参照してください。)


add_update: Attempt add transaction from read only child. add_update Warning: attempt add transaction from read only child

読み取り専用の子プロセス rpc.nisd が、ログに項目を追加しようとしました。ログの中にときどきこのメッセージが記録されても、重大な問題ではありません。しかし、頻繁に記録される場合は、ご購入先にご連絡ください。


Attempting to free a free rag!

このメッセージは、rpc.nisd にソフトウェア上の問題が起こったことを意味します。rpc.nisd は、異常終了したはずです。ps -ef | grep rpc.nisd を実行して、rpc.nisd が現在も動作しているかどうか確認します。まだ動作している場合は、rpc.nisd を終了させ、前回と同じオプションを指定して再起動します。動作していない場合は、前回と同じオプションで再起動します。/var/nis をチェックして、core ファイルのダンプが行われていないか確認します。core ファイルが存在する場合は、削除してください。


注 -

-YB オプションを指定して rpc.nisd を起動した場合は、rpc.nisd_reply デーモンも終了しなければなりません。



Attempt to remove a non-empty table

nistbladm が,まだエントリを含んでいる NIS+ テーブルを削除しようとしました。または、nisrmdir が、ファイルあるいはサブディレクトリを含むディレクトリを削除しようとしました。

  • テーブルを削除する場合には、niscat を使ってテーブルの内容をチェックし、nistbladm を使って既存の内容を削除します。

  • ディレクトリを削除する場合には、nisls -l -R を使って既存のファイルまたはサブディレクトリをチェックして、それらを最初に削除します。

  • nisrmdir -s を使って、ドメインから複製を分離するときに、複製がダウンしているか、またはマスターとの通信不能の状態にある場合に、このエラーメッセージが表示されます。このような場合には、nisrmdir -f -s replicaname をマスターで実行して、分離を強制できます。しかし、nisrmdir -f -s replicaname を使って通信不能な複製を分離する場合には、複製がオンライン状態に戻ったらすぐに、nisrmdir -f -s replicaname を再実行して、複製の /var/nis ファイルシステムを消去する必要があります。nisrmdir -f -s replicaname を再実行しないと、複製がサービスを再開した時に複製上に残された古い情報によって問題が発生します。

このメッセージは、NIS+ のエラーコード定数 NIS_NOTEMPTY によって生成されます (詳細な情報は、nis_tables(3N) のマニュアルページを参照)。


attribute no permission

FNS のエラーメッセージです。「呼び出し側が属性に対して何らかの操作をしようとしたが、アクセス権がないため実行できなかった」ということを意味します。


attribute value required

FNS のエラーメッセージです。「値を指定しないで属性の作成が試みられたが、ネーミングシステムがそれを許可しなかった」ということを意味します。


authdes_marshal: DES encryption failure

認証データの DES 暗号化に失敗しました。考えられる原因は次のとおりです。

  • ライブラリ関数か引数が壊れている

  • DES 暗号化チップを使用している場合、そのチップに問題がある

ご購入先にご連絡ください。


authdes_refresh: keyserv is unable to encrypt session key

keyserv プロセスは、公開鍵を使用してセッション鍵の暗号化を行うことができませんでした (詳細は、「Keyserv のエラー」を参照)。


authdes_refresh: unable to encrypt conversation key

keyserv プロセスは、公開鍵を使用してセッション鍵の暗号化を行うことができませんでした。このメッセージが表示された場合、通常はユーザーの側で何らかの操作を行う必要があります。考えられる原因は次のとおりです。

  • keyserv プロセスが終了しているか、応答しません。ps -ef を使用して、keyserv プロセスが keyserv のホスト上で動作しているかどうかチェックします。動作していない場合は、keyserv を起動し、keylogin を実行します。

  • クライアントが keylogin を実行していません。クライアント側で keylogin を実行し、問題が解決できるかどうか調べます。

  • クライアントのホストに、資格が割り当てられていません。クライアントのホームドメインの cred テーブルに対して nismatch を使用して、クライアントのホストに適切な資格が割り当てられているかどうか調べます。資格がない場合は作成します。

  • DES の暗号化に失敗しました (エラーメッセージ「authdes_marshal: DES encryption failure」を参照)。

セキュリティ鍵の問題の詳細は、「NIS+ のセキュリティの問題」を参照してください。


authdes_refresh: unable to synchronize clock

このエラーメッセージは、クライアントとサーバーそれぞれのクロックが同期していないことを示しています。通常は、この問題は自動的に訂正されます。しかし、このメッセージの後に、タイムスタンプに関係したエラーが発生した場合は、手作業でクロックを同期させなければなりません。この問題が再度発生した場合は、rpcbind が正しく機能しているかどうかチェックします。


authdes_refresh: unable to synch up w/server

クライアントとサーバーそれぞれのクロックを同期させることに失敗しました。サーバー上の rpcbind プロセスが応答しなかったことが原因となった可能性もあります。サーバー上で ps -ef を実行し、rpcbind が動作しているかどうか調べます。動作していない場合は、rpcbind を再度起動します。このメッセージの後に、タイムスタンプに関係したエラーが発生した場合は、rdate servername を使用して、クライアントのクロックを手作業でサーバーのクロックに同期させなければなりません。


authdes_seccreate: keyserv is unable to generate session key

このエラーメッセージは、keyserv がこのセッション用のランダムな DES キーを生成できなかったことを示しています。このメッセージが表示された場合、ユーザーの側で何らかの操作を行う必要があります。

  • keyserv が正しく動作しているかどうかチェックします。動作していない場合は、automountdrpc.nisdsendmail などのように、secure RPC を使用したり NIS+ のコールを行う、長時間にわたって動作するプロセスとともに、keyserv を再度起動します。次に、keylogin を実行します。

  • keyserv が起動されていて正しく動作している場合は、このエラーをログに記録したプロセスをもう一度起動します。


authdes_seccreate: no public key found for servername

クライアント側で、サーバー名 servername の DES の資格を取得できませんでした。このメッセージが表示された場合、ユーザーの側で何らかの操作を行う必要があります。

  • servername に DES の資格が割り当てられているかどうかチェックします。割り当てられていない場合は、DES の資格を作成します。

  • スイッチ構成ファイルをチェックして、指定されているネームサービスを調べ、そのサービスが応答するかどうか確認します。応答しない場合は、ネームサービスを再度起動します。


authdes_seccreate: out of memory

メモリー不足が原因となる問題の詳細は、「NIS+ のシステムリソースの問題」を参照してください。


authdes_seccreate: unable to gen conversation key

keyserv プロセスは、ランダムな DES キーを生成できませんでした。最も可能性の高い原因は、keyserv プロセスが停止しているか、応答しないことです。ps -ef を使用して、keyserv プロセスが keyserv のホストで動作しているかどうかチェックします。動作していない場合は、keyserv を起動し、次に keylogin を実行します。

keyserv を起動し直しても問題が解決しない場合は、secure RPC を使用したり NIS+ をコールするプロセス (たとえば、automountdrpc.nisdsendmail) が動作していない可能性があります。これらのプロセスが動作しているかどうかチェックし、動作していない場合は再度起動します。

(セキュリティ鍵の問題に関する詳細は、「NIS+ のセキュリティの問題」を参照してください。)


authdes_validate: DES decryption failure

「authdes_marshal: DES encryption failure」を参照してください。


authdes_validate: verifier mismatch

クライアントがサーバーに送ったタイムスタンプが、サーバーから受け取ったタイムスタンプに一致していません (Secure RPC セッションの中で回復できません) 。考えられる原因は次のとおりです。

  • クライアントかサーバーのキャッシュに格納されているセッション鍵またはタイムスタンプのデータが壊れています。

  • サーバーがキャッシュから、まだ有効なセッションのセッション鍵を削除しました。

  • ネットワークデータが壊れています。

コマンドを再度実行してください。


authentication failure

FNS のエラーメッセージです。「要求を作成した主体が、関連するネームサービスによって認証されなかったため、操作が完了しなかった」ということを意味します。NIS+ サービスを使用している場合は、(コマンド nisdefaults を使用して)「ユーザーが正しい主体として認識されているかどうか」を確認し、また「公開鍵のソースが、マシンに正しく指定されているか」を確認します (/etc/nsswitch.conf ファイルに "publickey: nisplus" というエントリがあるかどうかを確認する)。


bad reference

FNS のエラーメッセージです。「FNS がリファレンスの内容を理解できなかった」ということを意味します。「リファレンスの内容が壊れている」、「FNS のものであるとされているリファレンスが、FNS で復号化できない」といった場合に発生します。


CacheBind: xdr_directory_obj failed.

このエラーメッセージが表示された場合、最も可能性のある原因は次のとおりです。

  • xdr_directory_obj ルーチンに渡されたパラメータが不適切です。直前に入力したコマンドの構文が正確かどうかチェックしてください。

  • システムへのメモリー割り当てに失敗しました。メモリーの問題の詳細は、「メモリーの不足」を参照してください。

  • コマンドの構文は正確で、システムもメモリー不足を起こしていないという場合は、ご購入先にご連絡ください。


Cache expired

オブジェクトのキャッシュから返されたエントリが、有効期限を過ぎています。つまり、持続時間の値が 0 になり、エントリが変更された可能性があることを示しています。フラグ -NO_CACHE が検索用関数に渡された場合は、その検索関数は動作を繰り返し行い、有効期限を過ぎていないオブジェクトのコピーの取得を試みます。

このメッセージは、NIS+ のエラーコード定数 NIS_CACHEEXPIRED によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


Callback: - select failed message nnnn

内部システムコールがエラーを起こしました。ほとんどの場合、この問題は自動的に修正されます。自動的に修正されない場合は、rpc.nisd が異常終了していないかどうか確認します。異常終了している場合は、再度起動します。この問題が頻繁に発生する場合は、ご購入先にご連絡ください。


CALLBACK_SVC: bad argument

内部システムコールがエラーを起こしました。ほとんどの場合、この問題は自動的に修正されます。自動的に修正されない場合は、rpc.nisd が異常終了していないかどうか確認します。異常終了している場合は、再度起動します。この問題が頻繁に発生する場合は、ご購入先にご連絡ください。


Cannot grow transaction log error string

システムは、ログファイルへの追加を行うことができません。理由は string が示すとおりです。最もよく考えられる原因は、ディスク容量の不足です (「ディスク容量の不足」を参照)。


Cannot obtain Initial Context

FNS のエラーメッセージです。インストールに問題があることを示します (「初期コンテキストが取得できない」を参照)。


Cannot truncate transaction log file

ログにチェックポイントを実行しようとしましたが、rpc.nisd デーモンは、チェックポイントを設定したエントリをログから削除した後で、ログファイルを圧縮しようとしました。様々な要因が、このルーチンに障害を引き起こす可能性がありますが、詳細は ftruncate(3C) のマニュアルページを参照してください (「NIS+ データベースの問題」も参照)。


Cannot write one character to transaction log, errormessage

rpc.nisd デーモンは、現在のトランザクションを使用して、トランザクションログに更新部分を追加しようとしましたが失敗しました。原因は、関数が返した message の中に示されています。書き込みルーチンのマニュアルページの中に詳細が記されていることもあります。


Can't compile regular expression variable

keypat 内の正規表現が不適切だったために、nisgrep コマンドによってエラーメッセージが返されました。


Can't get any map parameter information.

「NIS の問題と対策」を参照してください。


Can't find name service for passwd

nsswitch.conf ファイルがない」、「nsswitch.conf ファイルに passwd のエントリがない」、「passwd のエントリが意味をなさない」、「passwd のエントリの形式が正しくない」のいずれかを意味するエラーメッセージです。


Can't find name 's secret key

考えられる原因は次のとおりです。

  • パスワードの入力ミス

  • cred テーブルの中に、name のエントリがない

  • NIS+ が鍵を復号化できなかった (エントリが壊れている可能性がある)

  • nsswitch.conf ファイルが、cred テーブルの中に記録されている NIS+ パスワードとは異なるパスワードを使って、/etc/passwd ファイルの中に格納されているローカルパスワードの照会を行なっている

このタイプの問題の診断と解決に関する情報は、「NIS+ のセキュリティの問題」を参照してください。


*** servername.domainname can't find machinename; Server failed.

DNS のエラーメッセージです。「サーバーが失敗してゾーンが問題を期限切れにした」と、「その他の DNS 構文エラー」を参照してください。


Can't find server name for address 127.0.0.1; server failed.

DNS のエラーメッセージです。通常このメッセージは、主マスターサーバーが不正な情報を持つ古くなった named.ca ファイルを使用していることを示します。ネットワークがインターネットに接続されている場合には、最上位のドメイン (たとえば、.com) を管理する当局から現在の named.ca ファイルを得る必要があります。.com.edu.gov.mil.org などに対する当局は、InterNIC です。ネットワークがインターネットに接続されていない場合には、named.ca ファイルのエラーをチェックしてください。


checkpoint_log: Called from read only child ignored.

このメッセージは、読み取り専用プロセスが、親プロセスに限定されている操作を試みて、その操作が異常終了したことを示す状態メッセージです。何か動作を行う必要はありません。


checkpoint_log: Unable to checkpoint, log unstable.

安定した状態にないログに対して、チェックポイントを実行しようとしました。つまり、ログは再同期、更新、チェックポイント、どれかの状態にありました。ログが安定した状態になるまで待って、nisping コマンドを再度実行します。


check_updaters: Starting resync.

システムの状態メッセージです。何か動作を行う必要はありません。


Child process requested to checkpoint!

このメッセージは、システムが修正することのできる、ソフトウェアの小さな問題が発生したことを意味しています。これらのメッセージが頻繁に表示される場合は、/etc/syslog.conf ファイル内の基準を変更できます。詳細は、syslog.conf(4) のマニュアルページを参照してください。


Column not found: columnname

指定した列名は、指定したテーブルの中に存在しません。


communication failure

FNS のエラーメッセージです。「FNS がネームサービスとコミュニケーションできず、操作を完了できなかった」ということを意味します。


configuration error

構成上の問題により発生するエラーです。以下に例を示します。

(1) バインディングテーブルが削除されました (FNS の問題ではありません)。

(2) ホストは NIS+ ホストディレクトリオブジェクトの中に存在しますが、ホストに対応する FNS ホストコンテキストがありません。


context not empty

FNS のエラーメッセージです。「中にバインディングの残っているコンテキストを削除しようとした」ということを意味します。


continue operation using status values

FNS のエラーメッセージです。「ステータスオブジェクトの中に残っている名前、名前との対応づけのできたリファレンスを使用して動作を続行する」ということを意味します。


Could not find string 's secret key

考えられる原因は次のとおりです。

  • 正しくないパスワードを入力しました。

  • cred テーブルの中に、name のエントリがありません。

  • NIS+ が鍵を復号化できませんでした (おそらく、エントリが壊れています)。

  • nsswitch.conf ファイルで公開鍵の指定方法を間違えています。cred テーブルの中に登録されている NIS+ パスワードとは異なるパスワードを使用して、/etc/passwd ファイルの中に格納されているローカル公開鍵の照会を行なっています。

このタイプの問題の診断と解決に関する情報は、「NIS+ のセキュリティの問題」を参照してください。


Could not generate netname

keyloginを実行する際、Secure RPC のソフトウェアが、ユーザーの UID に対応する Secure RPC のネット名を生成できませんでした。考えられる原因は次のとおりです。

  • マシンのホームドメインにある NIS+ の cred テーブルで、LOCAL の資格が割り当てられていません。

  • /etc/passwd ファイル内にあるローカルエントリの UID が、NIS+ の passwd テーブル内にある UID と違っています。


string: could not get secret key for 'string

考えられる原因は次のとおりです。

  • 正しくないパスワードを入力しました。

  • cred テーブルの中に、name のエントリがありません。

  • NIS+ が鍵を復号できませんでした (エントリが壊れている可能性があります)。

  • nsswitch.conf ファイルで、公開鍵の指定方法を間違えています。cred テーブルの中に登録されている NIS+ パスワードとは異なるパスワードを使用して、/etc/passwd ファイルの中に格納されているローカル公開鍵の照会を行なっています。

このタイプの問題の診断と解決に関する情報は、「NIS+ のセキュリティの問題」を参照してください。


Couldn't fork a process!

サーバーは、コールバックの要求を満たす子プロセスをフォークできませんでした。おそらく、システムが最大のプロセス数に達したためです。不必要なプロセスのいくつかを終了させるか、システムが扱える最大プロセス数を増やすことができます (詳細は、「プロセス数の不足」を参照)。


Couldn't parse access rights for column string

このメッセージは、通常 nistbladm -u コマンドで、演算子として + (プラス記号)、- (マイナス記号)、= (等号) 以外の記号を入力したときに返されます。他に考えられる原因として、列の権利をコンマで区切っていないことや、アクセス権の種類として rdcm のどれでもない文字を指定したことが挙げられます。エントリのタイプによるエラーの場合は、構文をチェックしてください。入力が正しくてもエラーが発生する場合は、テーブルが壊れていることも考えられます。


Database for table does not exist

テーブルの参照に失敗しました。考えられる原因については、「NIS+ オブジェクトが見つからない問題」を参照してください。

このメッセージは、NIS+ のエラーコード定数 NIS_NOSUCHTABLE によって生成されます (詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照)。


_db_add: child process attempting to add/modify _db_addib: non-parent process attempting an add

これらのメッセージは、読み取り専用プロセスや、親プロセス以外のプロセスが、データベース内のオブジェクトを追加または変更しようとしたことを示します。ほとんどの場合、なんらかの操作を行う必要はありません。この問題が頻繁に発生する場合は、ご購入先にご連絡ください。


db_checkpoint: Unable to checkpoint string

このメッセージは、なんらかの理由で、NIS+ がディレクトリにチェックポイントを実行できなかったことを示します。最も可能性の高い原因は、ディスク容量の不足です (「ディスク容量の不足」を参照)。


_db_remib: non-parent process attempting an remove _db_remove: non-parent process attempting a remove

これらのメッセージは、読み取り専用プロセスや、親プロセス以外のプロセスが、テーブルエントリを削除しようとしたことを示します。ほとんどの場合、なんらかの操作を行う必要はありません。この問題が頻繁に発生する場合は、ご購入先にご連絡ください。


Do you want to see more information on this command?

このメッセージは、スクリプトのコマンド行の中に、なんらかの構文エラーかスペルミスがあることを示します。


Entry/Table type mismatch

テーブルでエントリを追加または変更しようとして、他のタイプのテーブルからエントリを引き渡した場合に、このメッセージが表示されます。たとえば、列数が等しくないことが考えられます。更新に使っているテーブルのタイプが正確に一致しているかどうかチェックします。

このメッセージは、NIS+ のエラーコード定数 NIS_TYPEMISMATCH によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


error

FNS のエラーメッセージです。「要求処理中に、ここまでにとりあげたどのエラーにも該当しない状況が発生した」ということを意味します。関連のあるネームサービスの状態をチェックし、特殊な問題が発生していないことを確認します。


**ERROR: chkey failed again. Please contact your network administrator to verify your network password.

このメッセージは、ネットワークのパスワードの入力ミスを示します。

  • マシンを初めて初期設定するときは、ネットワーク管理者に連絡を取り、ネットワークのパスワードを確認します。

  • このマシンが、同じドメインの中で NIS+ のクライアントとして初期設定されたことがある場合は、Secure RPC のパスワードプロンプトで、root のログインパスワードを入力してみます。

  • このマシンが現在 NIS+ のクライアントであり、他のドメインのクライアントに変更したい場合は、/etc/.rootkey ファイルを削除し、ネットワーク管理者から受け取ったパスワード (または nispopulate スクリプトから生成したパスワード) を使用して、nisclient スクリプトを再度実行します。


Error: Could not create a valid NIS+ coldstart file

このメッセージは、NIS+ の初期設定ルーチン nisinit によって生成されます。この後に、「lookup:..」で始まるメッセージが表示されます。2 番目のメッセージは、NIS+ の有効なコールドスタートファイルが作成できなかった理由を示します。


**ERROR: could not restore file filename

このメッセージは、NIS+ が、filename.no_nisplusfilename に変更できなかったことを示します。

システムコンソールを使用して、システムエラーメッセージの有無をチェックします。

  • システムエラーメッセージがある場合は、そのエラーメッセージの示す問題を解決し、nisclient -i を再度実行します。

  • システムエラーメッセージがない場合は、そのファイルを手作業で名前を変更し、nisclient -i を再度実行します。


**ERROR: Couldn't get the server NIS+_server's address.

このスクリプトは、指定されたドメインのサーバーの IP アドレスを取り出すことができませんでした。/etc/hosts ファイル内のサーバー NIS+_server に、手作業で IP アドレスを追加し、nisclient -i を再度実行します。


**ERROR: directory directory-path does not exist.

このメッセージは、正しくないディレクトリパス名を入力したことを示します。正しいディレクトリパス名を入力します。


**ERROR: domainname does not exist.

このメッセージは、存在しないドメインを複製しようとしたことを示します。

  • domainname のスペルが正しくない場合は、正しいドメイン名を指定して、このスクリプトをもう一度実行します。

  • domainname のドメインが存在しない場合は、そのドメインを作成します。次に、複製を行うことができます。


**ERROR: parent-domain does not exist.

このメッセージは、コマンド行で指定されたドメインの親ドメインが存在しないことを示します。このメッセージは、ルートマスター以外のサーバーの設定を行なっているときにだけ表示されるはずです。

  • ドメイン名のスペルが正しくない場合は、正しいドメイン名を指定して、もう一度このスクリプトを実行します。

  • このドメインの親ドメインが存在しない場合は、最初に親ドメインを作成し、次にこのドメインを作成します。


**ERROR: Don't know about the domain "domainname". Please check your domainname.

このメッセージは、認識できないドメイン名が入力されたことを示します。正しいドメイン名を指定して、もう一度このスクリプトを実行します。


**ERROR: failed dumping tablename table.

このスクリプトは、指定されたテーブルのダンプに失敗したため、cred テーブルを生成できませんでした。

  • niscat tablename .org_dir の実行に失敗した場合は、すべてのサーバーが動作しているかどうか確認し、もう一度このスクリプトを実行して、tablename テーブルを生成します。

  • niscat tablename .org_dir が実行できる場合は、NIS+ のサーバーが一時的にビジーだったために、エラーが発生した可能性があります。もう一度このスクリプトを実行して、tablename テーブルを生成します。


**ERROR: host hostname is not a valid NIS+ principal in domain domainname. This host name must be defined in the credential table in domain domainname. Use nisclient -c to create the host credential

あるマシンを NIS+ のサーバーにする前に、そのマシンを NIS+ のクライアントとし、適切な資格を割り当てる必要があります。マシンを NIS+ のルート複製サーバーに変換するには、最初にそのマシンをルートドメインの NIS+ クライアントにする必要があります。ドメインに新しいクライアントを追加するための指示に従い、nisserver -R を再度実行します。

マシンを NIS+ のルート以外のマスターサーバーや複製サーバーに変換するには、そのマシンを、サービスを提供するドメインの親ドメインの NIS+ クライアントにしておかなければなりません。ドメインに新しいクライアントを追加するための指示に従い、nisserver -Mnisserver -R を再度実行します。

ルートマスターサーバーを設定するときは、この問題は発生しないはずです。


Error in accessing NIS+ cold start file is NIS+ installed?

このメッセージは、NIS+ がマシンにインストールされていない場合や、何らかの理由で /var/nis/NIS_COLD_START ファイルが見つからないかアクセスできない場合に発生します。/var/nis/NIS_COLD_START ファイルが存在しているかどうかチェックします。ファイルが存在している場合は、パスが正しく設定されているかどうか、また NIS_COLD_START に正しいアクセス権が割り当てられているかどうか確認します。次に、古いコールドスタートファイル名の変更か削除を行い、nisclient スクリプトをもう一度実行して、NIS+ をマシンにインストールします。

このメッセージは、NIS+ のエラーコード定数 NIS_COLDSTART_ERR を送信するキャッシュマネージャによって生成されます (ファイルがアクセスできない理由の詳細は、write(1)open(2) のマニュアルページを参照)。


Error in RPC subsystem

これは致命的なエラーで、RPC サブシステムになんらかの障害が発生したことを示します。通常は、クライアント側かサーバー側に、RPC 要求が失敗した理由を示す syslog メッセージがあります。

このメッセージは、NIS+ のエラーコード定数 NIS_RPCERROR によって生成されます。詳細は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


**ERROR: it failed to add the credential for root.

NIS+ のコマンド nisaddcred は、ルートマスターサーバーの設定を行なっているときに、root の資格を作成できませんでした。システムコンソールを使用して、システムエラーメッセージの有無をチェックします。

  • システムエラーメッセージが発生している場合は、そのエラーメッセージの示す問題を解決し、nisserver を再度実行します。

  • システムエラーメッセージが発生していない場合は、rpc.nisd プロセスが動作しているかどうかチェックします。動作していない場合は、rpc.nisd をもう一度起動し、nisserver を再度実行します。


**ERROR: it failed to create the tables.

NIS+ のコマンド nissetup は、ディレクトリやテーブルを作成できませんでした。システムコンソールを使用して、システムエラーメッセージの有無をチェックします。

  • システムエラーメッセージが発生している場合は、そのエラーメッセージの示す問題を解決し、nisserver を再度実行します。

  • システムエラーメッセージが発生していない場合は、rpc.nisd プロセスが動作しているかどうかチェックします。動作していない場合は、rpc.nisd をもう一度起動し、nisserver を再度実行します。


**ERROR: it failed to initialize the root server.

NIS+ のコマンド nisinit -r は、ルートマスターサーバーの初期設定に失敗しました。システムコンソールを使用して、システムエラーメッセージの有無をチェックします。システムエラーメッセージが発生している場合は、そのエラーメッセージの示す問題を解決し、nisserver を再度実行します。


**ERROR: it failed to make the domainname directory

nisserver を実行して、ルート以外のマスターを作成しているときに、NIS+ のコマンド nismkdir は、domainname という新しいディレクトリの作成に失敗しました。親ドメインに、新しいドメインを作成するためのアクセス権が割り当てられていません。

  • そのドメインの所有者ではなく、親ドメインのグループメンバーでもない場合は、所有者か親ドメインのグループメンバーとして、そのスクリプトをもう一度実行します。

  • rpc.nisd が、作成中のドメインのサーバーとなるマシンで動作していない場合は、rpc.nisd をもう一度起動します。


**ERROR: it failed to promote new master for the domainname directory

nisserver スクリプトを使ってルート以外のマスターを作成しているときに、NIS+ のコマンド nismkdir は、ディレクトリ domainname の新しいマスターの変換に失敗しました。

  • このドメインの親ドメインで変更権を割り当てられていない場合は、親ドメインの所有者かグループメンバーとして、そのスクリプトをもう一度実行します。

  • rpc.nisd が、変換先のドメインのサーバーで動作していない場合は、これらのサーバー上で rpc.nisd をもう一度起動し、nisserver を再度実行します。


**ERROR: it failed to replicate the directory-name directory

NIS+ のコマンド nismkdir は、ディレクトリ directory-name の新しい複製サーバーを作成できませんでした。

  • rpc.nisd が、複製サーバーを作成したいドメインのマスターサーバー上で動作していない場合は、マスターサーバーで rpc.nisd をもう一度起動し、nisserver を再度実行します。

  • rpc.nisd が、新しい複製サーバー上で動作していない場合は、新しい複製サーバーで rpc.nisd をもう一度起動し、nisserver を再度実行します。


**ERROR: invalid group name. It must be a group in the root-domain domain.

このメッセージは、ルートマスターサーバーを構成しているときに、不適切なグループ名が使用されたことを示します。root-domain の適切なグループ名を指定して、nisserver -r をもう一度実行します。


**ERROR: invalid name "client-name" It is neither an host nor an user name.

このメッセージは、不適切な client-name が入力されたことを示します。

  • client-name のスペルが正しくない場合は、正しい client-name を指定して、nisclient -c をもう一度実行します。

  • client-name のスペルは正しくても、適切なテーブルの中に存在していない場合は、テーブルの中に client-name を記述して、nisclient -c をもう一度実行します。たとえば、ユーザーのクライアントは passwd テーブルの中に存在し、ホストのクライアントは hosts テーブルの中に存在します。


**ERROR: hostname is a master server for this domain. You cannot demote a master server to replica. If you really want to demote this master, you should promote a replica server to master using nisserver with the M option.

同じドメインの中で、マスターサーバーを直接複製サーバーに変換することはできません。しかし、複製サーバーのホスト名を指定して nisserver -M を実行することにより、複製サーバーを新しいマスターサーバーに変換できます。同時に、元のマスターは自動的に複製サーバーに変換されます。


**ERROR: missing hostnames or usernames.

このメッセージは、コマンド行でクライアント名が入力されなかったことを示します。クライアント名を指定して、nisclient -c をもう一度実行します。


**ERROR: NIS+ group name must end with a "."

このメッセージは、ピリオドで終わる完全指定のグループ名が指定されなかったことを示します。完全指定のグループ名を使用して、このスクリプトをもう一度実行します。


**ERROR: NIS+ server is not running on remote-host. You must do the following before becoming a NIS+ server: 1. become a NIS+ client of the parent domain or any domain above the domain which you plan to serve. (nisclient) 2. start the NIS+ server. (rpc.nisd)

このメッセージは、NIS+ に変換しようとしているリモートマシン上で、rpc.nisd が動作していないことを示します。nisclient スクリプトを使用して、そのマシンを、サービスを提供したいドメインの親ドメイン、またはそれより上位のドメインの NIS+ クライアントにします。次に、remote-host 上で、rpc.nisd を起動します。


**ERROR: nisinit failed.

nisinit は、NIS_COLD_START ファイルを作成できませんでした。

次のことをチェックします。

  • -H オプションで指定した NIS+ サーバーが動作しているかどうか (ping を使用して確認する)

  • 正しいドメイン名を入力したかどうか

  • rpc.nisd がサーバー上で動作しているかどうか

  • 未認証クラスに、そのドメインでの読み取り権が割り当てられているかどうか


**ERROR: NIS map transfer failed. tablename table will not be loaded.

NIS+ は、このテーブルの NIS マップを、NIS+ データベースに転送できませんでした。

  • NIS サーバーのホストが動作している場合は、もう一度このスクリプトを実行します。一時的な障害が原因で、エラーが発生した可能性があります。

  • すべてのテーブルでこのエラーが発生した場合は、他の NIS サーバーを使用して、このスクリプトをもう一度実行します。


**ERROR: no permission to create directory domainname

親ドメインに、新しいドメインを作成するために必要な作成権が割り当てられていません。そのドメインの所有者ではなく、親ドメインのグループメンバーでもない場合は、所有者か親ドメインのグループメンバーとして、そのスクリプトをもう一度実行します。


**ERROR: no permission to replicate directory domainname.

このメッセージは、ドメインを複製するためのアクセス権が割り当てられていないことを示します。このドメインの所有者かグループメンバーとして、スクリプトをもう一度実行します。


error receiving zone transfer

DNS のエラーメッセージです。通常これは、主サーバーの DNS ファイルの 1 つの構文エラーを示します。「その他の DNS 構文エラー」を参照してください。


**ERROR: table tablename .org_dir.domainname does not exist." tablename table will not be loaded."

スクリプトは、NIS+ のテーブル tablename を見つけることができませんでした。

  • tablename のスペルが正しくない場合は、正しいテーブル名を指定して、スクリプトをもう一度実行します。

  • tablename が NIS+ の標準テーブルの 1 つであり、かつ tablename テーブルが存在しない場合は、nissetup を使用して、そのテーブルを作成します。tablename が NIS+ の標準テーブルではなく、また存在しない場合は、nistbladm を使用して、独自のテーブル tablename を作成します。次に、スクリプトを再度実行して、このテーブルを生成します。

  • tablename テーブルが存在する場合は、NIS+ のサーバーが一時的にビジーであったためにエラーが発生した可能性があります。このスクリプトをもう一度実行して、tabelname テーブルを生成します。


**ERROR: this name "clientname" is in both the passwd and hosts tables. You cannot have an username same as the host name.

client-name が、passwd テーブルと hosts テーブルの両方に記述されています。両方のテーブルに、共通の名前を記述することは認められていません。passwdhosts どちらかのテーブルから、手作業でこのエントリを削除します。次に、nisclient -c を再度実行します。


**ERROR: You cannot use the -u option as a root user.

このメッセージは、スーパーユーザーが nisclient -u を実行しようとしたことを示します。-u オプションは、普通のユーザーだけを初期設定するためのものです。NIS+ クライアントとは異なり、スーパーユーザーは初期設定を行う必要がありません。


**ERROR: You have specified the Z option after having selected the X option. Please select only one of these options [list]. Do you want to see more information on this command?

いま実行しているスクリプトでは、リスト表示されているオプションのうち、どれか 1 つしか使用できません。

  • y と入力すると、詳細な情報が表示されます。

  • n と入力すると、スクリプトは停止して、元のプロンプトに戻ります。

スクリプトを終了した後で、オプションを 1 つだけ指定して、もう一度実行します。


**ERROR: you must specify a fully qualified groupname.

このメッセージは、ピリオドで終わる完全指定のグループ名が指定されなかったことを示します。完全指定のグループ名を使用して、このスクリプトをもう一度実行します。


**ERROR: you must specify both the NIS domainname (-y) and the NIS server host name (-h).

このメッセージは、NIS のドメイン名と NIS サーバーのホスト名の一方または両方を指定しなかったことを示します。プロンプトかコマンド行で、NIS のドメイン名と NIS サーバーのホスト名を入力します。


**ERROR: you must specify one of these options: -c, -i, -u, -r.

このメッセージは、これらのオプション -c-i-u-r のどれかがコマンド行に指定されていなかったことを示します。正しいオプションを指定して、スクリプトをもう一度実行します。


**ERROR: you must specify one of these options: -r, -M or -R"

このメッセージは、-r-M-R のどのオプションも指定されなかったことを示します。正しいオプションを指定して、スクリプトをもう一度実行します。


**ERROR: you must specify one of these options: -C, -F, or -Y

このメッセージは、-Y-F どちらのオプションも入力しなかったことを示します。正しいオプションを指定して、スクリプトをもう一度実行します。


**ERROR: You must be root to use -i option.

このメッセージは、普通のユーザーが nisclient -i を実行しようとしたことを示します。nisclient -i を実行できるアクセス権を割り当てられているのは、スーパーユーザーだけです。


Error while talking to callback proc

サーバーがクライアントからコールバックされているときに、サーバー上で RPC エラーが発生しました。この時点でトランザクションは異常終了し、まだ送信されていないデータは破棄されます。サーバー上の syslog で詳細をチェックします。

このメッセージは、NIS+ のエラーコード定数 NIS_CBERROR によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


First/Next chain broken

このメッセージは、コールバックルーチンが結果を返しているときに、クライアントとサーバーの接続が解除されたことを示します。プロセスの実行中にサーバーが終了すると、このようなメッセージが発生することがあります。

このメッセージは、NIS+ のエラーコード定数 NIS_CHAINBROKEN によって生成されます。


getzone: print_update failed

DNS のエラーメッセージです。通常これは、主サーバーのDNS ファイルの 1 つの構文エラーを示します。「その他の DNS 構文エラー」を参照してください。


Generic system error

要求をしているときに、何らかの一般的なシステムエラーが発生しました。システムの syslog の記録をチェックし、サーバーから返されたエラーメッセージを探します。

このメッセージは通常、サーバーがクラッシュしたか、データベースが壊れたことを示します。サーバーや複製サーバーは、自らサービスを提供するドメインより上位にあるドメインのクライアントとなっていますが、サービスを提供するドメインに所属しているかのように、これらのサーバーや複製サーバーの名前を指定すると、このメッセージが生成されます (詳細は、「ドメイン名の混同」を参照してください)。

このメッセージは、NIS+ のエラーコード定数 NIS_SYSTEMERROR によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


illegal name

FNS のエラーメッセージです。指定された名前が正しくないことを示します。


Illegal object type for operation

このタイプの問題の詳細は、「無効なオブジェクトの問題」を参照してください。

このメッセージは、NIS+ のエラーコード定数 DB_BADOBJECT によって生成されます。


incompatible code sets

FNS のエラーメッセージです。「操作中、互換性のないコードセットの文字列が使用された」、あるいは「サポートされていないコードセットが提供されている」ということを意味します。


in.named [nnnn]: lame server on hostname

DNS のエラーメッセージです。不完全な委託とは、親ドメインのサーバーの hosts ファイルにある NS レコードでは別のサーバーがサブドメインのゾーンに対して権限を持つとされているのに、実際にはそのサーバーはそのゾーンに対する権限を持っていないことをいいます。親のホストファイルの NS レコードは、委託されたすべてのサブゾーンについて、権限をもつサーバーを全部含んだスーパーセットである必要があります。


insufficient permission to update credentials.

このメッセージは、動作に必要なアクセス権が割り当てられていない状態で、nisaddcred コマンドを実行したときに発生します。テーブル、列、エントリどれかのレベルでアクセス権が不足している可能性があります。niscat -o cred.org_dir を使用して、cred テーブルでどのようなアクセス権が割り当てられているを確認します。他のアクセス権も必要な場合は、ユーザー自身、またはシステム管理者のどちらかが、そのオブジェクトのアクセス権の変更を行うことができます。詳細は、第 10 章「NIS+ のアクセス権の管理」第 12 章「NIS+ グループの管理」を参照してください。

アクセス権の問題の詳細は、「NIS+ の所有権とアクセス権の問題」を参照してください。


insufficient resources

FNS のエラーメッセージです。「FNS が使用するネームサービスに十分なリソースがなく、要求された動作を実行できない」ということを意味します。ネームサービスのメモリーおよびディスク容量をチェックします。


invalid attribute identifier

FNS のエラーメッセージです。「属性識別子が、ネーミングシステムで使用できない形式になっている」、あるいは「属性識別子の内容が、指定された形式において有効なものではない」ということを意味します。


invalid attribute value

FNS のエラーメッセージです。「指定された属性の値の形式が正しくない」ということを意味します。


invalid enumeration handle

FNS のエラーメッセージです。「提供されている列挙ハンドルが正しくない」ということを意味します。「処理中に更新が発生した」などの理由が考えられます。


Invalid Object for operation

  • 「Name context」

    関数に渡された名前は、NIS+ の有効な名前ではありません。

  • 「Table context」

    指定されたオブジェクトは、このテーブルにとって有効な NIS+ エントリのオブジェクトではありません。列数が一致しない場合や、テーブルの中で関連する列とデータ型 (たとえば、バイナリかテキストか) が異なる場合に、このメッセージが発生する可能性があります。

このメッセージは、NIS+ のエラーコード定数 NIS_INVALIDOBJ によって生成されます (詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください)。


invalid syntax attributes

FNS のエラーメッセージです。「指定された構文属性が正しくないために、構文を完全に決定できない」ということを意味します。


invalid usecs Routine_name: invalid usecs

このメッセージは、struct time stamp タイプの変数フィールド tv_usecs の値が、1 秒未満マイクロ秒単位の値より大きいときに発生します。通常は、何らかのタイプのソフトウェアエラーが原因です。


tablename is not a table

tablename という名前を持つオブジェクトは、テーブルオブジェクトではありません。たとえば、nisgrepnismatch のコマンド行で、テーブルオブジェクト以外のオブジェクトを指定すると、このメッセージが発生します。


link error

FNS のエラーメッセージです。指定された名前を使用して XFN リンクを作成する際に発生するエラーです。


link loop limit reached

FNS のエラーメッセージです。「複数の名前を結びつける際、XFN リンクが原因で完了しないループが検出された」、または「一回の操作における XFN のリンクの数が、実装で定義された上限を超えた」ということを意味します。


Link Points to illegal name

渡された名前を LINK タイプのオブジェクトとして解決しましたが、そのオブジェクトの内容が不適切な名前を指しています。

テーブルエントリをリンクさせることができません。このエラーメッセージはエントリレベルでリンクを作成しようとすると発生します。

このメッセージは、NIS+ のエラーコード定数 NIS_LINKNAMEERROR によって生成されます (詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照)。


Load limit of number reached!

サーバー上で子プロセスの数が既に上限に達しているときに、子プロセスを作成しようとしました。このメッセージは、メッセージをログに記録する基準のレベルが LOG_WARNING を含む場合に、サーバーのシステムログに記録されます。


login and keylogin passwords differ.

nispasswd を使用してパスワードを変更し、システムはパスワードを変更しましたが、cred テーブル内の資格のエントリを新しいパスワードに更新できず、さらに、passwd テーブルの中で元のパスワードに復元もできない場合に、このメッセージが発生します。このメッセージの後に、次の指示が表示されます。


Use NEW password for login and OLD password for
keylogin. Use "chkey -p" to reencrypt the credentials with
the new login password. You must keylogin explicitly after
your next login.

この指示の後に、なぜ元のパスワードに復元することができなかったのか、理由を示す状態メッセージが表示されます。これらのメッセージが表示された場合は、その指示に従ってください。


Login incorrect

このメッセージの原因として最も多いのは、パスワードのタイプミスです。もう一度入力し直してください。また覚えているパスワードが正しいかどうかも確認してください。特に、大文字と小文字、アルファベットの o と数字の 0、アルファベットの l と数字の 1 を間違えないよう注意してください。

このメッセージの原因については、「「Login Incorrect」というメッセージが表示された」にも例が挙げられています。


log_resync: Cannot truncate transaction log file

ログにチェックポイントを実行しようとしましたが、rpc.nisd デーモンは、チェックポイントが設定されたエントリをログから削除した後で、ログファイルの圧縮を試みました。様々な要因が、このルーチンに障害を引き起こす可能性がありますが、詳細は、ftruncate(3C) のマニュアルページを参照してください (「NIS+ データベースの問題」も参照)。


malformed link

FNS のエラーメッセージです。「fn_ctx_lookup_link() の動作中に、不正なリンク参照が検出された」ということを意味します。指定された名前が、リンクされていないリファレンスに結びつけられたということです。


Malformed Name or illegal name

関数に渡された名前は、NIS+ の有効な名前ではありません。

考えられる理由の一つは、誰かがドメイン名を変更したことです。既存のドメイン名は変更すべきではありません (「ドメイン名が変更されている」を参照)。

このメッセージは、NIS+ のエラーコード定数 NIS_BADNAME によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照。


_map_addr: RPC timed out.

プロセスやアプリケーションが、必要なデータの取得や NIS+ からのホスト名の解決を行うデフォルト時間内に、NIS+ と通信できませんでした。ほとんどの場合、短時間待つと、この問題は自動的に回復します (性能低下の問題に関する詳細な情報は、「NIS+ の性能の低下とシステムのハングアップの問題」を参照してください)。


Master server busy full dump rescheduled

このメッセージは、マスターサーバーがビジーであったため、複製サーバーがマスターサーバーから得られたフルダンプを使って自らを更新することができなかったことを示します。詳細な情報は、「複製サーバーの更新のエラー」を参照してください。


String Missing or malformed attribute

属性の名前が、テーブル内の指定された列に一致していません。または、属性に値が割り当てられていません。

コマンドの構文エラーが原因となっている可能性があります。string から、何が間違っているのか推測できます。一般的な原因は、スペルミス、等号 (=) を不適切な場所に置いたこと、列名やテーブル名の間違いなどです。

このメッセージは、NIS+ のエラーコード定数 NIS_BADATTRIBUTE によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


Modification failed

コマンドを実行しているときに、誰かがグループ名を変更したため、nisgrpadm がこのメッセージを返しました。誰かがグループの操作を行なっているかどうかチェックします。次に、このコマンドを再度実行します。

このメッセージは、NIS+ のエラーコード定数 NIS_IBMODERROR によって生成されます。


Modify operation failed

試みた変更が、何らかの理由で失敗しました。

このメッセージは、NIS+ のエラーコード定数 NIS_MODFAIL によって生成されます (詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください)。


servername named [nnnn]: directory directoryname: No such file or directory.

DNS のエラーメッセージです。通常これは、DNS のブートまたはデータファイルの構文またはスペルのエラーを示します。


servername named [nnnn]: /etc/named.boot: line n unknown field `name'

DNS のエラーメッセージです。たいていこれは、DNS named.boot ファイルのスペルエラーを示します。たとえば、「primary」または「secondary」のスペルが間違っている場合があります。


servername named [nnnn]: servername has CNAME and other data (illegal)

DNSのエラーメッセージです。たいていこれは、machine servername に対する CNAME レコードの構文エラーまたは誤用を示します。


servername named [nnnn]: domainname Line n: Database format error (n.n.n.n)

DNS のエラーメッセージです。IP アドレスが n.n.n.n になっているドメイン name1 内のマシンに対するリソースレコードで、型がない (通常は IN) か、その他の構文エラーがあります。


servername named [nnnn]: Line n Unknown type: n.n.n.n.

DNS のエラーメッセージです。IP アドレスが n.n.n.n になっているマシンに対する DNS のホストファイルリソースレコードが、型 (通常は IN) を含んでいません。


servername named [nnnn]: secondary zone zonename expired.

DNS のエラーメッセージです。「サーバーが失敗してゾーンが問題を期限切れにした」を参照してください。


servername named [nnnn]: zoneref: Masters for secondary zone zonename unreachable

DNSのエラーメッセージです。「サーバーが失敗してゾーンが問題を期限切れにした」を参照してください。


name in use

FNS のエラーメッセージです。「指定された名前が、コンテキスト中ですでに使用されている」ということを意味します。


name not found

FNS のエラーメッセージです。指定された名前が見つからないということを意味します。


Name not served by this server

指定された名前へのサービスを提供していないサーバーに、要求を行いました。通常、このメッセージは発生しないはずです。しかし、内蔵のサーバー検索メカニズムを使用しない場合は、独自のメカニズムが壊れた結果、発生する可能性もあります。

他に考えられる原因は次のとおりです。

  • コールドスタートファイルが壊れています。/var/nis/NIS_COLD_START を削除して、再起動します。

  • ローカルキャッシュの期限切れのような、キャッシュの問題。nis_cachemgr/var/nis/NIS_SHARED_DIRCACHE のプロセスを終了し、次に再起動します。ルートディレクトリ以外の場所で問題が発生した場合は、単純にドメインのキャッシュマネージャのプロセスを終了し、コマンドをもう一度実行します。

  • 誰かが複製サーバーから、このディレクトリを削除しました。

このメッセージは、NIS+ のエラーコード定数 NIS_NOT_ME によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


Named object is not searchable

テーブル名を NIS+ のオブジェクトとして解決しましたが、オブジェクトが検索できませんでした。

このメッセージは、NIS+ のエラーコード定数 NIS_NOTSEARCHABLE によって生成されます (詳細な情報は、nis_tables(3N) のマニュアルページを参照)。


Name/entry isn't unique

複数のエントリを返す特定の検索基準に基づく動作が要求されました。たとえば、nistbladm -r を使用して、passwd テーブルからユーザーを削除しようとしました。しかし、このテーブルには、そのユーザーに対応するエントリが 2 つ存在したため、次のメッセージが表示されます。


mymachine# nistbladm -r [name=arnold],passwd.org_dir
Can't remove entry: Name/entry isn't unique

-r ではなく -R オプションを使用すると、コマンドを複数のエントリに適用できます。たとえば、arnold に対応するすべてのエントリを削除するには、次のように入力します。


mymachine#  nistbladm -R [name=arnold],passwd.org_dir

NIS make terminated

問題によって、操作が完了する前に、NIS の make 操作が中断しました。NIS の make ファイルで問題と構文エラーをチェックしてください。


NIS: server not responding for domain domainname. Still trying

「NIS の問題と対策」を参照してください。


NIS+ error

「NIS+ サーバーがエラーを返したが、passwd コマンドがエラーの種類を特定できなかった」という場合に使用されるエラーメッセージです。


NisDirCacheEntry:write: xdr_directory_obj failed

最も可能性のある原因は次のとおりです。システムへのメモリー割り当てに失敗しました。メモリーの問題の詳細は、「メモリーの不足」を参照してください。システムがメモリー不足を起こしていないと思われる場合は、ご購入先にご連絡ください。


NIS+ operation failed

この一般的なエラーメッセージは、めったに発生しないはずです。通常はシステムが修正することのできる、ソフトウェアの小さな問題が発生したことを意味しています。これらのメッセージが頻繁に表示される場合や、システムにより修正されないと思われる場合は、ご購入先にご連絡ください。

このメッセージは、NIS+ のエラーコード定数 NIS_FAIL によって生成されます。


string: NIS+ server busy try again later.

考えられる原因については、「NIS+ の性能の低下とシステムのハングアップの問題」を参照してください。


NIS+ server busy try again later.

サーバーは現在ビジーです。後でコマンドをもう一度実行してください。

考えられる原因については、「NIS+ の性能の低下とシステムのハングアップの問題」を参照してください。


NIS+ server for string not responding still trying

考えられる原因については、「NIS+ の性能の低下とシステムのハングアップの問題」を参照してください。


NIS+ server not responding

考えられる原因については、「NIS+ の性能の低下とシステムのハングアップの問題」を参照してください。


NIS+ server needs to be checkpointed. Use nisping -Cdomainname


注意 - 注意 -

すぐにチェックポイントを設定してください。


サーバーのシステムログが LOG_CRIT のレベルにある場合は、このメッセージが生成されます。これは、ログが大きくなりすぎたことを示します。nisping -C domainname を使用してチェックポイントを実行し、ログを切り捨てます。

ログのサイズに関する詳細な情報は、「ログが大きくなりすぎた」を参照してください。


NIS+ servers unreachable

このソフトエラーは、指定したテーブルオブジェクトが置かれているディレクトリにサービスを提供するサーバーに到達できなかったことを示します。ネットワークの障害やサーバーのクラッシュが起こった場合に、このメッセージが発生する可能性があります。もう一度実行するだけで、成功する可能性もあります。nis_tables(3N)nis_names(3N) のマニュアルページの -HARD_LOOKUP フラグの説明を参照してください。

このメッセージは、NIS+ のエラーコード定数 NIS_NaMEUNREACHABLE によって生成されます。


NIS+ service is unavailable or not installed

NIS+ のサービスが利用できないか、インストールされていません。このメッセージは、NIS+ のエラーコード定数 NIS_UNAVAIL によって生成されます。


NIS+: write ColdStart File: xdr_directory_obj failed

最も可能性のある原因は次のとおりです。

  • パラメータが正しくありません。直前に入力したコマンドの構文が正確かどうかチェックします。

  • システムへのメモリーの割り当てに失敗しました。メモリーの問題の詳細は、「メモリーの不足」を参照してください。

  • コマンドの構文が正確で、システムもメモリー不足を起こしていないと思われる場合は、ご購入先にご連絡ください。


nis_checkpoint_svc: readonly child instructed to checkpoint ignored.

このメッセージは、読み取り専用プロセスが、親プロセスに限定されている操作を試みて、その操作が異常終了したことを示す状態メッセージです。何か操作を行う必要はありません。


nis_dumplog_svc: readonly child called to dump log, ignore

このメッセージは、読み取り専用プロセスが、親プロセスに限定されている操作を試みて、その操作が異常終了したことを示す状態メッセージです。何か操作を行う必要はありません。


nis_dump_svc: load limit reached.

システムで許可されている子プロセスの最大数に達しました。


nis_dump_svc: one replica is already resyncing.

マスターとの同期を実行できる複製は、1 度に 1 つだけです。後でコマンドをもう 1 度実行します。

nis_dump で始まる、これら 3 つのメッセージに関する詳細な情報は、「複製サーバーの更新のエラー」を参照してください。


nis_dump_svc: Unable to fork a process.

フォークを行うシステムコールが障害を起こしました。考えられる原因については、fork(2) のマニュアルページを参照してください。


nis_mkdir_svc: readonly child called to mkdir, ignored

このメッセージは、読み取り専用プロセスが、親プロセスに限定されている操作を試みて、その操作が異常終了したことを示す状態メッセージです。なんらかの操作を行う必要はありません。


nis_ping_svc: readonly child was pung ignored.

このメッセージは、読み取り専用プロセスが、親プロセスに限定されている操作を試みて、その操作が異常終了したことを示す状態メッセージです。なんらかの操作を行う必要はありません。


nis_rmdir_svc: readonly child called to rmdir, ignored

このメッセージは、読み取り専用プロセスが、親プロセスに限定されている操作を試みて、その操作が異常終了したことを示す状態メッセージです。なんらかの操作を行う必要はありません。


nisaddcred: no password entry for uid userid nisaddcred: unable to create credential.

これら 2 つのメッセージが発生するのは、nispopulate スクリプトを実行しているときです。NIS+ のコマンド nisaddcred は、リモートドメイン上で、ユーザー ID userid に LOCAL の資格を割り当てることに失敗しました 。このメッセージは、リモートドメインで passwd テーブルを生成しているときにだけ発生します。

問題を解決するには、ローカルの passwd テーブルに、次のテーブルパスを追加します。


# nistbladm -u -p passwd.org_dir.  remote-domain passwd.org_dir

remote-domain は、nispopulate を実行したときに -d オプションで指定したドメインと同じものでなければなりません。このスクリプトをもう一度実行して、passwd テーブルを生成します。


No file space on server

サーバーにファイル領域がありません。

このメッセージは、NIS+ のエラーコード定数 NIS_NOFILESPACE によって生成されます。


No match

最も可能性の高い原因は、インデックスつきの名前を指定するために角括弧を使用し、そのためにシェルが解釈できなくなったことです。たとえば、インデックスつきの名前の両側を角括弧で囲む場合は、全体をさらに引用符で囲まない限り、シェルは角括弧を解釈することができません。そのため、次のメッセージが表示されます。


# nistbladm -m shell=/bin/csh [name=miyoko],passwd.org_dir 
 No match

正しい構文は次のとおりです。


# nistbladm -m shell=/bin/csh `[name=miyoko],passwd.org_dir` 

No memory

システムのメモリーが不足しているため、指定された操作を行うことができません。メモリー不足が原因となる問題の詳細は、「NIS+ のシステムリソースの問題」を参照してください。


Non NIS+ namespace encountered

名前を完全に解決できませんでした。通常は、関数に渡された名前を解決した結果、NIS+ のネームツリーの中にない名前空間が得られたことを示します。つまり、この名前は登録されていないディレクトリの中にあります。このメッセージが発生した場合、エラーとともに、DIRECTORY タイプの NIS+ オブジェクトが返されます。

このメッセージは、NIS+ のエラーコード定数 NIS_FOREIGNNS によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


No password entry for uid userid No password entry found for uid userid

これらのメッセージは両方とも、ユーザーの資格の作成や追加を試みたときに、passwd テーブルの中にそのユーザーが見つからなかったことを示します。資格の作成や追加を行う前に、passwd テーブルの中にユーザーを追加しておかなければなりません。

  • 最も可能性のある原因は、コマンド行でユーザーの userid のスペルミスをしたことです。コマンド行の構文が正確か、またミススペルがないかチェックします。

  • 正しいドメインにいるか、またはコマンド行で正しいドメインを指定しているかチェックします。

  • コマンド行が正しい場合は、passwd テーブルをチェックして、入力した userid のユーザーが存在するかどうか確認します。次のように nismatch を使用します。


mymachine# nismatch uid=userid passwd.org_dir. 

passwd テーブルの中にユーザーが含まれていない場合は、資格を作成する前に、nistbladmnisaddent を使用して、passwd テーブルにユーザーを追加します。


no permission

FNS のエラーメッセージです。アクセス制御の問題により、動作が失敗したことを意味します。「「no permission」というメッセージが表示される (FNS)」、および 「アクセス権がない」を参照してください。


No shadow password information

「制御に必要な情報が欠けているため、パスワードの有効期間の設定が行えなかった」ということを意味します。


no such attribute

FNS のエラーメッセージです。オブジェクトが、指定の属性を持たないことを意味します。


no supported address

FNS のエラーメッセージです。「/usr/lib/fn ディレクトリに、(FNS の名前に結びつけられたリファレンス中にはいくつかのタイプのアドレスがあるが) どのタイプの共用ライブラリも存在しない」ということを意味します。共用ライブラリの名前は、fn_ctx_address_type.so という形になります。address_type の部分はアドレスのタイプによって異なります。リンクは通常、「fn_ctx_address_type.so から fn_ctx_address_type.so.1 へ」という形で行われます。

たとえば、リファレンスのアドレスのタイプが onc_fn_nisplus だとすると、共用ライブラリの存在するパスは /usr/lib/fn/fn_ctx_onc_fn_nisplus.so ということになります。


not a context

FNS のエラーメッセージです。「リファレンスが、正しいコンテキストに対応していない」ということを意味します。


Not found String Not found

Names context - 名前空間の中に、指定された名前が存在しません。

Table context - 検索基準に一致するエントリが、テーブルの中に存在しません。検索基準が null (すべてのエントリを返す) の場合は、このテーブルが空であり、安全に削除できることを意味します。

-FOLLOW_PATH フラグが設定されている場合にこのエラーが発生するのは、検索基準に一致するエントリが、パス内のどのテーブルにも含まれていないことを意味します。

このメッセージは、NIS+ のエラーコード定数 NIS_NOTFOUND によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。

このタイプの問題に関する一般的な情報は、「NIS+ オブジェクトが見つからない問題」を参照してください。


Not Found no such name

このエラーメッセージは、テーブルオブジェクトが置かれているはずの、指定されたディレクトリが存在しないことを示します。サーバーは、自らサービスを提供するテーブルの親サーバーであるはずですが、このテーブルがどのディレクトリに置かれているか認識していません。

このメッセージは、NIS+ のエラーコード定数 NIS_NOSUCHNAME によって生成されます (詳細な情報は、nis_names(3N)nis_names(3N) のマニュアルページを参照してください)。

このタイプの問題に関する一般的な情報は、「NIS+ オブジェクトが見つからない問題」を参照してください。


Not master server for this domain

このメッセージは、複製サーバー上のデータベースを直接更新しようとしたことを意味します。

また、ネームサービスを提供するサーバーに変更の要求が行われたものの、そのサーバーがマスターサーバーでなかったことを意味することもあります。ディレクトリオブジェクトが変更され、その結果新しいマスターサーバーが指定された場合に、これが発生します。/var/nis/NIS_SHARED_DIRCACHE ファイル内に、ディレクトリオブジェクトのキャッシュ済みコピーを保持しているクライアントは、ps を実行して nis_cachemgr のプロセス ID を確認し、nis_cachemgr のプロセスを終了させ、/var/nis/NIS_SHARED_DICACHE ファイルを削除して、nis_cachemgr を再度起動します。

このメッセージは、NIS+ のエラーコード定数 NIS_NOTMASTER によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


Not owner

オブジェクトの所有者だけに認められている操作を試みましたが、あなたは所有者ではありません。

このメッセージは、NIS+ のエラーコード定数 NIS_NOTOWNER によって生成されます。


operation not supported

FNS のエラーメッセージです。「行われた操作が、コンテキストによってサポートされていない」ということを意味します。サポートされていない操作の例としては、組織の破壊などがあります。


Object with same name exists

既に存在する名前を追加しようとしました。この名前を追加するには、最初に既存の名前を削除して新しい名前を追加するか、既存のオブジェクトの名前を変更します。

このメッセージは、NIS+ のエラーコード定数 NIS_NAMEEXISTS によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


parse error: string (key variable)

nisaddent コマンドが /etc ディレクトリ内のデータベースファイルを使用しているときに、ファイルのエントリにエラーが見つかると、このメッセージが表示されます。最初の string は問題について説明し、key の右側の variable は、障害のあるエントリを示します。/etc/passwd ファイルで問題が起こった場合は、/usr/sbin/pwck を使用して、このファイルをチェックします。


partial result returned

FNS のエラーメッセージです。操作によって得られた結果が不完全であることを意味します。


Partial Success

「要求の受信は正しく行われたが、対応するエントリがなかった」という点を除き、NIS_NOTFOUND とほぼ同じです。

このエラーが発生すると、サーバーは、エントリではなくテーブルオブジェクトのコピーを返します。パスの処理や、その他のローカルポリシーの実装をクライアントが行えるようにするためです。

このエラーメッセージは、NIS+ のエラーコード定数 NIS_PARTIAL によって生成されます。詳細は、nis_tables(3N) のマニュアルページを参照してください。


Passed object is not the same object on server

「オブジェクトを名前空間から削除しようとしたが、削除の対象となるオブジェクトとは別のオブジェクトが要求の中で渡されたために処理が異常終了した」ということを意味します。

このエラーメッセージは、NIS+ のエラーコード定数 NIS_NOTSAMEOBJ によって生成されます。詳細は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


Password does not decrypt secret key for name

考えられる原因は次のとおりです。

  • 正しくないパスワードを入力しました。

  • cred テーブルの中に、name のエントリがありません。

  • NIS+ が鍵を復号できませんでした (エントリが壊れている可能性があります)。

  • Secure RPC パスワードとログインパスワードが一致していません。

  • nsswitch.conf ファイルが、cred テーブルの中に記録されている NIS+ パスワードとは異なるパスワードを使用して、/etc/passwd ファイルの中に格納されているローカルパスワードの照会を行なっています。実際に暗号化されているパスワードは、ローカルの /etc/shadow ファイルに格納されています。

このタイプの問題の診断と解決に関する情報は、「NIS+ のセキュリティの問題」を参照してください。


Password has not aged enough

「パスワードが新しすぎるため、変更ができない」ということを意味します。パスワードは、作成されてから一定の日数 (N 日) が経過するまでは変更ができません。詳細は、「パスワードの変更」を参照してください。


Permission denied

ある操作を試みましたが、必要なアクセス権が割り当てられていなかったため、このエラーが発生しました。アクセス権の問題に関する詳細は、「NIS+ の所有権とアクセス権の問題」を参照してください。

このエラーメッセージは、ログイン、パスワードの問題、あるいは NIS+ のセキュリティの問題に関係があります。発生原因として最も一般的なのは、「ユーザーのパスワードが管理者によってロックされている」あるいは「ユーザーのアカウントが終了している」ということです。第 11 章「パスワードの管理」、および付録 A 「問題と解決方法」 を参照してください。


Permissions on the password database may be too restrictive

「NIS+ テーブル中のパスワードフィールドの内容を参照する (あるいは使用する) 権限を、ユーザーが持っていない」ということを意味します。詳細は第 10 章「NIS+ のアクセス権の管理」を参照してください。


Please notify your System Administrator

passwd コマンドでパスワード情報を更新しようとして表示された場合は、「何らかの理由 (数多く考えられる) で成功しなかった」ということを意味します。成功しない理由としては、「サービスが利用できない」、「必要なサーバーが停止している」、「アクセス権がないといった類の問題がある」などがあげられます。セキュリティの問題については、「NIS+ のセキュリティの問題」に様々なタイプの例があげられています。


Please check your /etc/nsswitch.conf file

nsswitch.conf ファイルで、パスワード更新についてサポートされていない設定が行われている」ということを意味します。どのような設定がサポートされているかは、「nsswitch.conf ファイルの必要条件」を参照してください。


Probable success

Name context - 要求は成功しました。しかし、返されたオブジェクトはオブジェクトキャッシュからのものであり、サーバーから直接返されたものではありません。オブジェクトキャッシュからオブジェクトを取り出したくない場合は、検索用関数をコールするときに、-NO_CACHE フラグを指定しなければなりません。

Table context - 要求は成功しました。しかし、検索パスの中でテーブルを見つけることができなかったので、テーブルがアクセス可能だった場合と比べると、得られた結果は違っている可能性があります。

このメッセージは、NIS+ のエラーコード定数 NIS_S_SUCCESS によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


Probably not found

指定されたエントリは、このテーブルの中に存在しません。しかし、パス内のすべてのテーブルが検索されたわけではないので、それらのテーブルの中に、このエントリが含まれている可能性もあります。

このメッセージは、NIS+ のエラーコード定数 NIS_S_NOTFOUND によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


Query illegal for named table

要求された構造体をクライアントのライブラリに渡すときに、問題が検出されました。

このメッセージは、NIS+ のエラーコード定数 NIS_BADREQUEST によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


Reason: can't communicate with ypbind.

「NIS の問題と対策」を参照してください。


replica_update: Child process attempting update, aborted

このメッセージは、読み取り専用プロセスが更新を試みて、それが失敗したことを示す状態メッセージです。


replica_update: error result was string

このメッセージは、複製サーバーへのダンプを行う際に問題が起こったことを示します (string は理由を示します)。詳細な情報は、「複製サーバーの更新のエラー」を参照してください。


replica_update: error result was Master server busy, full dump rescheduled replica_update: master server busy rescheduling the resync. replica_update: master server is busy will try later. replica_update: nis dump result Master server busy, full dump rescheduled

これらのメッセージはどれも、サーバーがビジーなので、ダンプが後で行われることを示します。


replica_update: nis dump result nis_perror errorstring

このメッセージは、複製サーバーへのダンプを行う際に問題が起こったことを示します (error string は理由を示します)。詳細な情報は、「複製サーバーの更新のエラー」を参照してください。


replica_update: nnnn updates nnnn errors

更新に成功したことを示す状態メッセージです。


replica_update: WARNING: last_update (directoryname) returned 0!

NIS+ のプロセスは、このディレクトリに対応するトランザクションログが最後に更新されたタイムスタンプを見つけることができませんでした。この結果、システムは、問題の起こったディレクトリについて完全な同期を実行しなければなりません。


Results Sent to callback proc

これは状態メッセージです。なんらかの操作を行う必要はありません。

このメッセージは、NIS+ のエラーコード定数 NIS_CBRESULTS によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


root_replica_update: update failed string: could not fetch object from master.

このメッセージは、複製サーバーへのダンプを行う際に問題が起こったことを示します。詳細な情報は、「複製サーバーの更新のエラー」を参照してください。


RPC failure: "RPC failure on yp operation.

このメッセージは、NIS クライアントの nsswitch.conf ファイルが、nis ではなく files に設定され、サーバーが /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルに含まれていないときに、ypcat によって戻されます。


Security exception on local system. UNABLE TO MAKE REQUEST.

ユーザーのログイン ID がマシン名と重複したときに、このメッセージが表示されることがあります。詳細な情報は、「ユーザーのログインがマシン名と同じ」を参照してください。


date: hostname: sendmail (nnnn) : gethostbyaddr failed

この問題の一般的な原因の 1 つに、0 を前に付けた状態での NIS+、NIS、ファイル、DNS データセットの IP アドレスへの入力があります。たとえば、151.029.066.001 のような IP アドレスは入力しないでください。このアドレスの正確な入力方法は、151.29.66.1 です。


Server busy, try again

サーバーがビジーのため、要求をすぐに処理できません。

  • 追加、削除、変更の操作を行なったときにこのメッセージが返されるのは、あるディレクトリのサービスを提供しているマスターサーバーが使用できないか、データベースのチェックポイントが実行中であることを意味します。

  • サーバーが内部の状態を更新しているときに、このメッセージが返されることもあります。

  • nis_list を実行した場合、クライアントがコールバックを指定し、サーバーがリソース不足でコールバックを行えないことも考えられます。

サーバーが使用可能になるのを待って、コマンドをもう一度実行します。

このメッセージは、NIS+ のエラーコード定数 NIS_TRYAGAIN によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


Server out of memory

ほとんどの場合、このメッセージは致命的な結果が発生したことを示します。サーバーがヒープ領域を使い果たしたことを意味します。

このメッセージは、NIS+ のエラーコード定数 NIS_NOMEMORY によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


Sorry

ログイン、またはパスワードの変更が拒否されたときに表示されるメッセージです。拒否の理由が表示されないのは、「表示された理由を読むことで、権利のない人がシステムに不正にアクセスできるようになる可能性がある」というセキュリティ上の理由からです。


Sorry: less than nn days since the last change

「パスワードが新しすぎるため、変更ができない」ということを意味します。パスワードは、作成されてから一定の日数 (N 日) が経過するまでは変更ができません。詳細は、「パスワードの変更」を参照してください。


Success

(1) 要求は成功しました。このメッセージは、NIS+ のエラーコード定数 NIS_SUCCESS によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。

(2) FNS のエラーメッセージ。操作が成功しました。


_svcauth_des: bad nickname

クライアントから受け取ったニックネームが不適切か、壊れています。原因は、おそらくネットワークの混雑です。このメッセージの重大度は、有効にしているセキュリティのレベルに依存します。セキュリティレベルが低い場合は、このメッセージは情報を示すだけです。レベルが高い場合は、このコマンドをもう一度実行しなければならない可能性があります。


_svcauth_des: corrupted window from principalname

送信されたウィンドウが、ベリファイアによって送信されたウィンドウと一致しません。

このメッセージの重要度は、有効にしているセキュリティのレベルに依存します。セキュリティレベルが低い場合は、このメッセージは主に情報を示すために表示されます。レベルが高い場合は、このコマンドをもう一度実行しなければならない可能性もありますし、次の説明に従って、問題を解決するための操作をしてください。

考えられる原因は次のとおりです。

  • サーバーの鍵の組が変更されています。クライアントはサーバーの古い公開鍵を使いましたが、サーバーは keyserv によってキャッシュされている新しい秘密鍵を使いました。クライアントとサーバーの両方で keylogin を実行してください。

  • クライアントの鍵の組が変更されています。クライアントシステム上で keylogin が実行されていないので、システムは依然としてクライアントの古い秘密鍵をサーバーに送信しています。しかし、サーバーはクライアントの新しい公開鍵を使っています。その結果、2 つの鍵は一致しません。クライアントとサーバーの両方で、keylogin をもう一度実行してください。

  • ネットワークでデータが壊れました。コマンドをもう一度実行します。それでも問題が解決しない場合は、snoop コマンドを使用して、ネットワークに関係する問題の調査と解決を行います。次に、クライアントとサーバーの両方で、keylogin をもう一度実行します。


_svcauth_des: decryption failure

特定の認証データの DES 復号に失敗しました。考えられる原因は次のとおりです。

  • ライブラリ関数か引数が壊れています。

  • DES 暗号化チップを使用している場合、そのチップに問題があります。

このメッセージの重要度は、有効にしているセキュリティのレベルに依存します。セキュリティレベルが低い場合は、このメッセージは単に情報を示すために表示されます。レベルが高い場合は、ご購入先にご連絡ください。DES 暗号化チップに問題があると思われる場合も、ご購入先にご連絡ください。


_svcauth_des: corrupted window from principalname

送られたウィンドウが、ベリファイアで送られたものと一致しません。

このメッセージの重要度は、実行しているセキュリティのレベルによって異なります。低いセキュリティレベルでは、このメッセージは主に参考のための情報です。高いセキュリティレベルでは、しばらくたってからコマンドを再実行するか、もしくは次に説明するような修正作業を行う必要があります。

考えられる原因

  • サーバーの鍵の組が変更されています。クライアントが、サーバーの古い公開鍵を使って、その一方でサーバーが keyserv でキャッシュされた新しい非公開鍵を持っています。keylogin をクライアントとサーバーの両方で実行してください。

  • クライアントの鍵の組が変更されて、クライアントがクライアントシステムで keylogin を実行していません。このためシステムはまだ、クライアントの古い非公開鍵をサーバーに送付しており、そのサーバーはクライアントの新しい公開鍵を使用しています。このため、2 つの鍵は一致しません。keylogin を再度クライアントとサーバーの両方で実行してください。

  • ネットワークでデータが壊れました。コマンドをもう一度実行してください。これで機能しない場合には、snoop コマンドを使って、ネットワークの問題を調査、修正してください。その後で、再度クライアントとサーバーの両方で keylogin を実行してください。


_svcauth_des: decryption failure for principalname

特定の認証データの DES 復号化に失敗しました。考えられる原因は次のとおりです。

  • ライブラリ関数か引数が壊れています。

  • DES 暗号化チップを使用している場合、そのチップに問題があります。

このメッセージの重大度は、有効にしているセキュリティのレベルに依存します。セキュリティレベルが低い場合は、このメッセージは単に情報を示すために表示されます。レベルが高い場合は、ご購入先にご連絡ください。問題が、DES 暗号化チップに関連するように思われる場合は、ご購入先に連絡してください。


_svcauth_des: invalid timestamp received from principalname

クライアントから受け取ったタイムスタンプが壊れています。または、サーバーが間違った鍵を使って、復号しようとしています。考えられる原因は次のとおりです。

  • ネットワークの混雑。コマンドをもう一度実行します。

  • サーバーのキャッシュから、このクライアント用のエントリが削除されました。ネットワークの負荷をチェックします。


_svcauth_des: key_decryptsessionkey failed for principalname

keyserv プロセスは、特定の公開鍵を使用してセッションキーを復号化することに失敗しました。考えられる原因は次のとおりです。

  • keyserv プロセスが終了しているか、応答しません。ps -ef を使用して、ホスト上で keyserv プロセスが動作しているかどうか確認します。動作していない場合は、keyserv を再度起動し、keylogin を実行します。

  • サーバー主体のキーログインが行われていません。サーバー主体のキーログインを実行します。

  • サーバー主体 (ホスト) に資格が割り当てられていません。クライアントのホームドメインにある cred テーブルを対象にして、nismatch hostname.domainname. cred.org_dir を実行します。必要に応じて、新しい資格を作成します。

  • keyserv は再度起動されているようですが、長時間にわたって動作するアプリケーション rpc.nisdsendmailautomountd なども再度起動する必要があります。

  • DES 暗号化に失敗しました。ご購入先にご連絡ください。


_svcauth_des: no public key for principalname

サーバーがクライアントの公開鍵を取得できません。考えられる原因は次のとおりです。

  • 主体に公開鍵がありません。主体のホームドメインにある cred テーブルを対象に、niscat を実行します。テーブルの中で、この主体に DES の資格が割り当てられていない場合は、nisaddcred を使用して資格を作成し、その主体で keylogin を実行します。

  • nsswitch.conf ファイルで指定されたネームサービスが応答しません。


_svcauth_des: replayed credential from principalname

サーバーは要求を受け取り、キャッシュの中でそのクライアント名に一致するエントリを見つけましたが、受け取った要求の会話鍵のタイムスタンプが、キャッシュの中に格納されているタイムスタンプより古いものでした。

このメッセージの重大度は、有効にしているセキュリティのレベルに依存します。セキュリティレベルが低い場合は、このメッセージは主に情報を示すために表示されます。レベルが高い場合は、次の説明に従って問題を解決するための操作を行なってください。

考えられる原因は次のとおりです。

  • クライアントとサーバーそれぞれのクロックが同期していません。rdate を使用して、クライアントのクロックをサーバーのクロックに同期させます。

  • サーバーがランダムな順序で要求を受け取っています。マルチスレッドアプリケーションを使用している場合に、これが発生します。アプリケーションが tcp をサポートしている場合、/etc/netconfig (または NETPATH 環境変数) を tcp に設定します。


_svcauth_des: timestamp is earlier than the one previously seen from principalname

クライアントからいくつかのコールを受け取りましたが、後から受け取ったコールが、最初のコールより古いタイムスタンプを示しています。このメッセージの重大度は、有効にしているセキュリティのレベルに依存します。セキュリティレベルが低い場合は、このメッセージは主に情報を示すために表示されます。レベルが高い場合は、次の説明に従って問題を解決するための操作を行なってください。

考えられる原因は次のとおりです。

  • クライアントとサーバーそれぞれのクロックが同期していません。rdate を使用して、クライアントのクロックをサーバーのクロックに同期させます。

  • サーバーのキャッシュから、このクライアント用のエントリが削除されました。サーバーはキャッシュの中に、現在のクライアントの情報を維持しています。キャッシュのサイズは、64 個のクライアントに相当します。


_svcauth_des: timestamp expired for principalname

ウィンドウを受信する際、デフォルトでは 35 秒以内の間隔が規定されていますが、クライアントから受け取ったタイムスタンプが、この範囲に収まっていません。このメッセージの重大度は、有効にしているセキュリティのレベルに依存します。セキュリティレベルが低い場合は、このメッセージは主に情報を示すために表示されます。レベルが高い場合は、次の説明に従って問題を解決するための操作を行なってください。

考えられる原因は次のとおりです。

  • サーバーやネットワークが低速なので、35 秒のウィンドウでは間隔が不足しています。

  • クライアントとサーバーそれぞれのクロックがかなりずれているため、ウィンドウの間隔に収まりません。rdate を使用して、クライアントのクロックをサーバーのクロックに同期させます。

  • サーバーのキャッシュから、このクライアント用のエントリが削除されました。操作をもう一度実行します。


syntax not supported

FNS のエラーメッセージです。「サポートされていないタイプの構文が使用された」ということを意味します。


Too Many Attributes

サーバーに渡された検索基準が、検索可能なテーブルの列より多くの属性を持っています。

このメッセージは、NIS+ のエラーコード定数 NIS_TOOMANYATTRS によって生成されます。詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


too many attribute values

FNS のエラーメッセージです。「 1 つの属性に、ネーミングシステムでサポートされている範囲を超える数の値を持たせようとした」ということを意味します。


Too many failures - try later


Too many tries; try again later

どちらもログインあるいはパスワードの変更に関連するメッセージです。「ログイン、またはパスワードの変更のやり直しの回数が多すぎる、あるいは時間がかかりすぎる」ということを意味します。詳細は、「Login incorrect メッセージ」または、「パスワード変更の失敗」を参照してください。


Unable to authenticate NIS+ client

サーバーがクライアントのコールバック要求を実行したときに、RPC の clnt_call() から RPC_AUTHERR という状態を受け取ると、このメッセージが生成されます。通常これは、古い認証情報が原因となっています。システムが、更新されていないキャッシュから取り出したデータを使用した場合や、認証情報が最近変更され、その変更結果がサーバーに伝わっていない場合に、このような古い認証情報が発生します。ほとんどの場合、この問題は短時間のうちに自動的に解決されます。

この問題が自動的に解決されない場合は、次のいずれかの問題があると考えられます。

  • /var/nis/NIS_SHARED_DIRCACHE ファイルが壊れています。キャッシュマネージャのプロセスを終了させ、このファイルを削除し、キャッシュマネージャを再度起動します。

  • /var/nis/NIS_COLD_START ファイルが壊れています。このファイルを削除し、nisinit を実行して、このファイルを再度作成します。

  • /etc/.rootkey ファイルが壊れています。keylogin -r を実行します。

このメッセージは、NIS+ のエラーコード定数 NIS_CLNTAUTH によって生成されます。


Unable to authenticate NIS+ server

ほとんどの場合、システムが容易に修正することのできる、ソフトウェアの小さなエラーが発生したことを意味しています。サーバーが RPCclnt_call から RPC_AUTHERR という状態を受け取ると、このメッセージが生成されます。

この問題が自動的に解決されない場合は、/var/nis/NIS_COLD_START ファイル、/var/nis/NIS_SHARED_DIRCACHE ファイル、/etc/.rootkey ファイルのどれかが壊れていることが考えられます。

このメッセージは、NIS+ のエラーコード定数 NIS_SRVAUTH によって生成されます。


Unable to bind to master server for name 'string'

このタイプの問題に関する情報は、「NIS+ オブジェクトが見つからない問題」の「オブジェクトが見つからない問題」を参照してください。この特別なメッセージは、/etc/defaultdomain ファイルの中にあるサーバーのドメイン名の右端にピリオドを追加したときに発生することがあります。


Unable to create callback.

サーバーは、ユーザーのマシンのコールバックサービスと通信できませんでした。この結果、データを返すことができませんでした。

詳細な情報は、nis_tables(3N) のマニュアルページを参照してください。


Unable to create process on server

NIS+ のサービスルーチンが、サポートしていない手続き番号を指定する要求を受け取ると、このエラーが生成されます。

このメッセージは、NIS+ のエラーコード定数 NIS_NOPROC によって生成されます。


string: Unable to decrypt secret key for string.

考えられる原因は次のとおりです。

  • 正しくないパスワードを入力しました。

  • cred テーブルの中に、name のエントリがありません。

  • NIS+ が鍵を復号化できませんでした。おそらく、エントリが壊れている可能性があります。

  • nsswitch.conf ファイルが、cred テーブルの中に記録されている NIS+ パスワードとは異なるパスワードを使用して、/etc/passwd ファイルの中に格納されているローカルパスワードの照会を行なっています。

このタイプの問題の診断と解決に関する情報は、「NIS+ のセキュリティの問題」を参照してください。


unavailable

FNS のエラーメッセージです。操作に必要なネームサービスが利用できないということを意味します。


Unknown error

NIS+ のエラー処理ルーチンが、未登録のタイプのエラーを受け取ったときに、このメッセージが表示されます。


Unknown object

返されたオブジェクトのタイプが、未登録のタイプです。

このメッセージは、NIS+ のエラーコード定数 NIS_UNKNOWNOBJ によって生成されます。詳細な情報は、nis_tables(3N)nis_names(3N) のマニュアルページを参照してください。


update_directory: nnnn objects still running.

複製を更新するときに、サーバーがディレクトリを更新している間、表示されるメッセージです。なんらかの操作を行う必要はありません。


User principalname needs Secure RPC credentials to login but has none.

キーログインが成功しなかったことを示します。この問題は一般に、/etc/shadow とリモートの NIS+ パスワードテーブルとで記憶しているパスワードが異なっているために発生します。


Warning: couldn't reencrypt secret key for principalname

この問題の原因として最も可能性が高いのは「Secure RPC パスワードがログインパスワードと異なっていて (またはローカルの /etc/shadow とリモートの NIS+ パスワードテーブルとで記憶しているパスワードが異なっていて)、まだ明示的に keylogin を実行していない」ということです。詳細は、「/etc/passwd ファイルの中にある NIS+ のパスワードとログインパスワード 」、および、「Secure RPC パスワードとログインパスワードが異なる」を参照してください。


WARNING: db::checkpoint: could not dump database: No such file or directory

このメッセージは、チェックポイント実行の際に、システムがデータベースファイルをオープンできなかったことを示しています。

考えられる原因は次のとおりです。

  • データベースファイルが削除されています。

  • サーバーがファイル記述子を使い果たしました。

  • ディスクに問題があります。

  • ユーザーまたはホストに、必要なアクセス権が割り当てられていません。


WARNING: db_dictionary::add_table: could not initialize database from scheme

データベーステーブルを初期設定できませんでした。考えられる原因は次のとおりです。

  • システムのリソースに問題があります。「NIS+ のシステムリソースの問題」を参照してください。

  • コマンド構文での新しいテーブルの指定が正しくありませんでした。

  • データベースが壊れています。


WARNING: db_query::db_query:bad index

ほとんどの場合、このメッセージは、インデックス付きの名前の指定が正しくないことを示しています。指定されたテーブルの中に、インデックス付きの名前が存在するかどうか確認します。コマンドのスペルと構文にエラーがないかチェックします。


**WARNING: domain domainname already exists.

このメッセージは、作成しようとしたドメインがすでに存在することを意味しています。

  • ルート以外のマスターサーバーを新しく変換しようとしている場合や、直前に起こった nisserver の問題を回復しようとしている場合は、このスクリプトを続けて実行します。

  • domainname のスペルが正しくない場合は、正しいドメイン名を指定して、このスクリプトをもう一度実行します。


**WARNING: failed to add new member NIS+_principle into the groupname group. You will need to add this member manually: 1. /usr/sbin/nisgrpadm -a groupname NIS+_principal

NIS+ のコマンド nisgrpadm が、NIS+ のグループ groupname に新しいメンバーを追加することに失敗しました。次のように入力して、NIS+ のこの主体を追加します。


# /usr/sbin/nisgrpadm -a    groupname NIS+_principal

**WARNING: failed to populate tablename table.

nisaddent コマンドは、NIS+ の tablename テーブルをロードできませんでした。通常、この警告メッセージの前に、詳細なエラーメッセージが表示されます。


**WARNING: hostname specified will not be used. It will use the local hostname instead.

このメッセージは、-H オプションを指定して、リモートホスト名を入力したことを示します。nisserver -r スクリプトを使って、ルートマスターサーバーと同様の方法でリモートマシンを構成できません。

  • ローカルマシンを NIS+ のルートマスターサーバーに変換したい場合は、別に操作を行う必要はありません。nisserver -r スクリプトは、入力されたホスト名を無視します。

  • リモートホスト (ローカルマシンではなく) を NIS+ のルートマスターサーバーに変換したい場合は、このスクリプトを終了します。リモートホストを対象にして、nisserver -r を再度実行します。


**WARNING: hostname is already a server for this domain. If you choose to continue with the script, it will try to replicate the groups_dir and org_dir directories for this domain.

このメッセージは、複製サーバーを作成しようとしたドメインの中で、すでに hostname が複製サーバーとなっていることを警告します。

  • nisserver によって以前に発生した問題を解決するためにこのスクリプトを実行している場合は、スクリプトを続けて実行します。

  • hostname を間違って入力した場合は、正しいホスト名を指定して、このスクリプトをもう一度実行します。


**WARNING: alias-hostname is an alias name for host canonical_hostname. You cannot create credential for host alias.

このメッセージは、nisclient -c の名前リストに、ホストの別名を入力したことを示します。ホストの別名に資格を作成すべきではないので、標準的なホスト名にその資格を作成するかどうか、スクリプトが尋ねています。


**WARNING: file directory-path/tablename does not exist! tablename table will not be loaded.

このスクリプトは、tablename の入力ファイルを見つけることができませんでした。

  • directory-path/tablename が間違って入力されている場合は、正しいテーブル名を指定して、このスクリプトをもう一度実行します。

  • directory-path/tablename が存在しない場合は、適切なデータを使ってファイルを作成し更新します。次に、このスクリプトを再度実行して、このテーブルを生成します。


**WARNING: NIS auto.master map conversion failed. auto.master table will not be loaded.

auto.master テーブル内のすべてのピリオドを下線に変換しているときに、auto.master マップの変換に失敗しました。別の NIS サーバーを使って、このスクリプトをもう一度実行します。


**WARNING: NIS netgroup map conversion failed. netgroup table will not be loaded.

netgroup マップの中で NIS のドメイン名を NIS+ のドメイン名に変換しているときに、netgroup マップの変換に失敗しました。別の NIS サーバーを使って、このスクリプトをもう一度実行します。


**WARNING: nisupdkeys failed on directory domainname. This script will not be able to continue. Please remove the domainname directory using `nisrmdir'.

NIS+ のコマンド nisupdkeys は、リスト指定されたディレクトリオブジェクト内の鍵を更新することに失敗しました。新しいドメインにサービスを提供することになっている新しいマスターサーバー上で rpc.nisd が動作していない場合は、rpc.nisd を再度起動します。次に、nisrmdir を使用して、domainname ディレクトリを削除します。最後に、nisserver を再度実行します。


WARNING: nisupdkeys failed on directory directory-name You will need to run nisupdkeys manually: 1. /usr/lib/nis/nisupdkeys directory-name

NIS+ のコマンド nisupdkeys は、リスト指定されたディレクトリオブジェクト内の鍵を更新することに失敗しました。次のように入力して、ディレクトリオブジェクト内の鍵を手作業で更新します。


# /usr/lib/nis/nisupdkeys    directory-name

**WARNING: once this script is executed, you will not be able to restore the existing NIS+ server environment. However, you can restore your NIS+ client environment using "nisclient -r" with the proper domainname and server information. Use "nisclient -r" to restore your NIS+ client environment.

少なくとも 1 台の NIS+ サーバーを設定する前にこのスクリプトを実行すると、これらのメッセージが表示されます。これらのメッセージは、スクリプトの実行を続行すると、NIS+ に関係したファイルが削除され、必要に応じて再度作成されることを示しています。

  • NIS+ のファイルを削除してもよい場合は、このスクリプトを続けて実行します。

  • NIS+ のファイルを保存するには、Do you want to continue? プロンプトで n と入力し、このスクリプトを終了します。次に、NIS+ のファイルを別のディレクトリに保存し、このスクリプトをもう一度実行します。


**WARNING: this script removes directories and files related to NIS+ under /var/nis directory with the exception of the NIS_COLD_START and NIS_SHARED_DIRCACHE files which will be renamed to <file>.no_nisplus. If you want to save these files, you should abort from this script now to save these files first.

すぐ上の「WARNING: once this script is executed,...」のメッセージを参照してください。


**WARNING: you must specify the NIS domainname.

このメッセージは、プロンプトで NIS のドメイン名を入力しなかったことを示しています。プロンプトで、NIS サーバーのドメイン名を入力します。


**WARNING: you must specify the NIS server hostname. Please try again.

このメッセージは、プロンプトで NIS のサーバーのホスト名を入力しなかったことを示しています。プロンプトで、NIS サーバーのホスト名を入力します。


Window verifier mismatch

これは、_svcauth_des コードによって生成されたデバッグ用メッセージです。鍵がキャッシュから削除されたため、ベリファイアが無効になっている可能性があります。このメッセージが生成されると、_svcauth_des は、AUTH_BADCRED の状態を返します。


You (string) do not have Secure RPC credentials in NIS+ domain 'string'

コマンドを実行するために必要とされる資格が割り当てられていないサーバーで nispasswd を実行すると、このメッセージが生成されることがあります。セキュリティレベル 0 で動作しているサーバーは、資格の作成や維持を行わないことに注意してください。

資格、所有権、アクセス権の問題に関する詳細は、「NIS+ の所有権とアクセス権の問題」を参照してください。


You may not change this password

パスワードの変更が管理者によって禁止されていることを意味します。


You may not use nisplus repository

「コマンド行で -r nisplus が使用されたが、NIS+ パスワードテーブルに適切なエントリがない」ということを意味します。パスワードテーブルに必要なエントリがあるかどうか確認してください。また nsswitch.conf ファイルに nisplus というエントリを追加してみてください。


Your password has been expired for too long


Your password is expired

どちらもパスワードが作成されてからの時間に関連のあるメッセージです。「パスワードが古すぎるので、すぐに変更する必要がある」ということを意味します。詳細は、「password expired メッセージ」を参照してください。


Your password will expire in nn days


Your password will expire within 24 hours

どちらもパスワードが作成されてからの時間に関連のあるメッセージです。「パスワードがまもなく無効になるので、すぐに変更する必要がある」ということを意味します。詳細は、「will expire メッセージ」を参照してください。


Your specified repository is not defined in the nsswitch file!

-r オプションでリポジトリのパスワード情報を更新しようとしたが、該当するパスワードのリポジトリが nsswitch.conf ファイルのパスワードエントリにない」という意味の警告メッセージです。使用したコマンド自体は機能し、-r フラグで指定したリポジトリへの変更はすべて行われます。しかし変更の対象となっているリポジトリが nsswitch.conf ファイルで指定されているものではないため、該当するリポジトリを nsswitch.conf ファイルで指定するまでこの変更の影響はまったく表れません。

たとえば nsswitch.conf ファイルのパスワードエントリに files nis という指定があるとき、以下のコマンドを実行してパスワードの有効期限を決定するとします。


passwd -r nisplus

この場合は、files nis という指定のある nsswitch.conf ファイルを使用している限り、コマンドによる影響はまったく表れません。


verify_table_exists: cannot create table for string nis_perror message.

テーブルを対象にして操作を行う場合、NIS+ は最初にテーブルが存在するかどうかを確認します。テーブルが存在しない場合は、NIS+ はそのテーブルを作成しようとします。作成できない場合は、このエラーメッセージを返します。string は、検索や作成ができなかったテーブルを示します。nis_perror message の部分は、問題の原因に関係する情報を示します。メッセージのこの部分を、独立したメッセージと考えて、この付録にある説明を参照できます。このタイプの問題の考えられる原因は次のとおりです。

  • サーバーはディレクトリの複製として追加されるだけであり、ディレクトリオブジェクトを持つことはできません。nisping -C により、チェックポイントを実行します。

  • ディスク容量を使い果たしました。「ディスク容量の不足」を参照してください。

  • データベースが壊れています。

  • その他のタイプのソフトウェアエラー。ご購入先にご連絡ください。


ypcat: can't bind to NIS server for domain domainname. Reason: can't communicate with ypbind.

「NIS の問題と対策」を参照してください。


yppoll: can't get any map parameter.

「NIS の問題と対策」を参照してください。

付録 C NIS+ テーブルの情報

この付録には Solaris 8 リリース内のデフォルトの NIS+ テーブルに格納されている情報がまとめられています。NIS+ テーブルとそれを管理するコマンドの概要については第 14 章「NIS+ テーブルの管理」を参照してください。

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 テーブルにすることができます。これらをスイッチファイルで指定する順番によって、異なるソースから情報が組み合わされる方法が決まります。スイッチファイルの詳細は 第 2 章「ネームサービススイッチ」を参照してください。

NIS+ テーブル入力ファイルフォーマット

これらテーブルのどれかに対して入力ファイルを作成している場合、ほとんどのテーブルは、次の 2 つのフォーマットの条件を共有します。

特定のテーブルに、異なるまたは追加のフォーマットの条件がある場合には、「入力ファイルフォーマット」の項で説明します。

auto_home テーブル

auto_home テーブルは間接オートマウンタマップです。このマップによって NIS+ クライアントは、ドメイン内の任意のユーザーのホームディレクトリをマウントできます。このテーブルは、各ユーザーのホームディレクトリのマウントポイント、各ホームディレクトリの位置と、マウントオプションがあればそれを指定してマウントします。これは間接マップであるため、マウントポイントの最初の部分は auto_master テーブルに指定され、デフォルトでは /home となります。マウントポイントの 2 番目の部分 (つまり、/home の下にあるサブディレクトリ) は auto_home マップ内のエントリによって指定され、ユーザーごとに異なります。

auto_home テーブルには 2 つの列があります。

表 C-1 auto_home テーブル

列 

内容 

説明 

キー 

マウント先 

ドメイン内のユーザーのログイン名 

値 

 

オプションと位置 

ユーザーごとのマウントオプションがあればそれと、ユーザーのホームディレクトリの位置 

たとえば、次のようになります。


costas barcelona:/export/partition2/costas

ユーザー costas のホームディレクトリは、サーバー barcelona 上にあり、ディレクトリ /export/partition2/costas 内にあります。またこのホームディレクトリは、クライアントの /home/costas ディレクトリの下にマウントされます。このエントリにはマウントオプションはありません。

auto_master テーブル

auto_master テーブルは、ドメイン内のすべてのオートマウンタマップを含みます。直接マップの場合、auto_master テーブルは、単にマップ名を提供するだけです。間接マップの場合、このテーブルは、そのマウントポイントの先頭ディレクトリとマップ名の両方を提供します。auto_master テーブルには次の 2 つの列があります。

表 C-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 つの列しかありませんが、列を使用して、次に示す情報を提供します。

表 C-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 つの列があります。

表 C-4 cred テーブル

NIS+ 主体名 

認証タイプ 

認証名 

公開データ 

 

非公開データ 

 

主体ユーザー名 

LOCAL 

UID 

グループ ID リスト 

 

主体ユーザー名またはワークステーション名 

DES 

Secure RPC ネット名 

公開鍵 

暗号化非公開鍵 

2 番目の「認証タイプ」という列の値により、他の 4 つの列の値のタイプが決定されます。

資格および cred テーブルの詳細は、第 7 章「NIS+ 資格の管理」を参照してください。

ethers テーブル

ethers テーブルは、インターネット上のワークステーションの 48 ビット Ethernet アドレスに関する情報を格納しています。次の 3 列があります。

表 C-5 ethers テーブル

列 

内容 

説明 

アドレス 

Ethernet アドレス 

ワークステーションの 48 ビット Ethernet アドレス 

名前 

公式なホスト名 

ワークステーションの名前、hosts テーブルで指定

コメント 

コメント 

エントリに関するコメント (必要に応じて) 

Ethernet アドレスの形式は次のとおりです。

n:n:n:n:n:n hostname

ここで n は 0 〜 FF の 16 進数で、1 バイトを表します。このアドレスのバイト列は常に最上位のバイトから始まるネットワーク順になっています。

group テーブル

group テーブルは、UNIX ユーザーグループについての情報を格納します。group テーブルには 4 つの列があります。

表 C-6 group テーブル

列 

説明 

名前 

グループ名 

パスワード 

グループのパスワード 

グループ ID 

グループの数値 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 つの列があります。

表 C-7 hosts テーブル

列 

説明 

アドレス 

ワークステーションの IP アドレス (ネットワーク番号とワークステーションの ID 番号) 

正式名 

ワークステーションの正式名 

名前 

ワークステーションを識別するために、ホスト名の代わりに使われる任意の名前 

コメント 

エントリに関するコメント (必要に応じて) 

mail_aliases テーブル

mail_aliasesテーブルは、sendmail によって認識されるドメインのメール別名を含んでいます。これには 4 つの列があります。

表 C-8 mail_aliases テーブル

列 

説明 

別名 

別名の名前 

メンバーリスト 

この別名に送信されたメールを受信するメンバーが収められているリスト。メンバーはユーザー、ワークステーション、またはほかの別名とすることができる 

コメント 

エントリに関するコメント (必要に応じて) 

オプション 

(マニュアルページを参照) 

「入力ファイルのフォーマット」

各エントリのフォーマットは次のとおりです。


alias-name:member[, member]...

1 つのエントリが複数の行にまたがるときには、バックスラッシュを使用します。

netgroup テーブル

netgroup テーブルは、リモートマウント、ログインとシェルのアクセス権をチェックするために使用される、ネットワーク全域にわたるグループを定義します。リモートマウントに使用されるネットグループのメンバーはワークステーションです。リモートログインとシェルの場合、これらのメンバーはユーザーです。


注 -

サービスを提供している NIS+ サーバーが互換モードで動作している場合、クライアントマシンのユーザーは netgroup テーブルに対して ypcat を実行できません。実行すると、エントリの有無に関わらず「テーブルが空である」という結果が出ます。


netgroup テーブルには 6 つの列があります。

表 C-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 つの列があります。

表 C-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) で管理される公式のネットワークテーブルから作成されるのが普通ですが、これにローカルネットワークを追加しなければならないこともあります。このテーブルには 3 つの列があります。

表 C-11 networks テーブル

列 

説明 

正式名 

ネットワークの正式名、インターネットが提供 

アドレス 

ネットワークの公式 IP 番号 

名前 

ネットワークの非公式名 

コメント 

エントリに関するコメント (必要に応じて) 

passwd テーブル

passwd テーブルには、ドメイン内のユーザーのアカウントに関する情報が入っています。これらのユーザーは、一般的には NIS+ 主体ですが、必ずしもその必要はありません。ただし、ユーザーが NIS+ 主体である場合、それらの資格はここには収められず、ドメインの cred テーブルに格納されることに注意してください。passwd テーブルは、その他 (または未認証) に対して通常読み取り権を与えます。


注 -

スーパーユーザー (ユーザー ID = 0) のエントリをこのテーブルに入れることはできません。ルートのパスワード情報は、/etc ディレクトリ上のファイルに格納してください。


passwd テーブル内の情報は、ユーザーのアカウントが作成されたときに追加されます。

passwd テーブルには次の列があります。

表 C-12 passwd テーブル

列 

説明 

名前 

ユーザーのログイン名であり、ユーザーのアカウントが作成されたときに割り当てられる。この名前は大文字を含む必要はない。最大 8 文字まで 

パスワード 

ユーザーの暗号化されたパスワード 

ユーザー ID 

ユーザーの ID 番号であり、ユーザーのアカウントが作成されたときに割り当てられる 

グループ ID 

ユーザーのデフォルトグループの ID 番号 

GCOS 

ユーザーの実名と、ユーザーがメールメッセージ見出しの「From:」フィールドに入れたい情報。この列が「&」の場合、単にユーザーのログイン名を使用する 

ホーム 

ユーザーのホームディレクトリのパス名 

シェル 

ユーザーの初期シェルプログラム。デフォルトは B シェル :/usr/bin/sh

シャドウ 

(表 C-13 を参照)

passwd テーブルには、さらにシャドウ列があります。この列には、ユーザーアカウントに関して、次に示すような制限情報が格納されています。

表 C-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 つの列があります。

表 C-14 protocols テーブル

列 

説明 

正式名 

プロトコル名 

名前 

プロトコルの識別に使われる非公式な別名 

番号 

プロトコルの番号 

コメント 

プロトコルに関するコメント 

rpc テーブル

rpc テーブルには、RPC プログラム名が含まれます。これには 4 つの列があります。

表 C-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 つの列があります。

表 C-16 services テーブル

列 

説明 

正式名 

サービスの公式インターネット名 

名前 

サービスを要求できる代替名のリスト 

プロトコル 

サービスを提供するためのプロトコル (たとえば 512/tcp) 

ポート 

ポート番号 

コメント 

サービスに関するコメント 

timezone テーブル

timezone テーブルは、ドメイン内の全ワークステーションのデフォルトの時間帯を含んでいます。デフォルトの時間帯はインストール中に使用されますが、インストーラがこれを無効にすることができます。このテーブルには 3 つの列があります。

表 C-17 timezone テーブル

列 

説明 

ドメイン名 

ドメイン名 

タイムゾーン名 

時間帯の名前 (たとえば US/Pacific) 

コメント 

時間帯に関するコメント 

付録 D FNS リファレンスの書式と構文

この付録では、XFN リファレンスにおける、DNS 文書 (TXT) レコードと X.500 属性の使用方法についての補足情報を述べます。

XFN リファレンス用 DNS 文書レコードの書式

Solaris の環境は、DNS 内で広域ネーミングシステムをフェデレートさせるための XFN 規格に準拠しています。DNS でネーミングシステムをフェデレートさせるには、DNS TXT リソースレコードに情報を入力する必要があります。この情報は、従属ネーミングシステム用に XFN リファレンスを作成するために使用されます。この付録では、これらの DNS TXT レコードの書式について説明します。

XFN リファレンスのリファレンスタイプは、XFNREF というタグで始まる TXT レコードから作成します。書式は以下の通りです。


TXT "XFNREF rformat  reftype"

TXT の後に続く文字列の中にスペースが存在する場合、そのスペースを削除するか、文字列全体を引用符 (" ") で囲む必要があります。XFNREFrformatreftype という 3 つのフィールドは、スペース (スペースとタブ) で区切ります。rformat は、リファレンスタイプの識別子の書式を指定します。種類は次のとおりです。

reftype は、リファレンスタイプの識別子の内容を指定します。

XFNREF レコードが存在しない場合、リファレンスタイプはデフォルト設定により FN_ID_STRING を持つ XFN_SERVICE 識別子になります。2 つ以上の XFNREF TXT レコードが存在する場合、どのレコードが処理されるかは不定です。以下の TXT レコードはデフォルト設定の XFNREF と同じ働きをします。


TXT "XFNREF STRING XFN_SERVICE"

XFN リファレンスのアドレス情報は、XFN 文字列を接頭語にしたタグを持つ TXT レコードを使用して作成します。1 つのリファレンスに複数のアドレスを指定することもできます。同じタグを持つレコードはグループにまとめられ、グループごとにハンドラに渡されます。各ハンドラは渡された TXT レコードからアドレス (複数あるいは、ない場合もある) を作成し、リファレンスに付加します。XFNREF タグの場合は特別で、リファレンスタイプを作成するためにだけ使用されるため、アドレス作成の過程からは除外されます。

TXT レコードのアドレスを指定する構文は次のとおりです。


XFNaddress_type_tag   address_specific_data

XFN_address_type_tagaddress_specific_data という 2 つのフィールドは、スペース (スペースとタブ) で区切ります。address_type_tag は、address_specific_data に使用するハンドラを指定します。

TXT レコードには 1 レコードにつき 2 K バイトという文字の制限があります。特定のアドレスのデータが長すぎて 1 つの TXT レコードに格納できない場合は、以下のように複数の TXT レコードを使用できます。


TXT "XFNaddress_type_tag address_specific_data1"
TXT "XFNaddress_type_tag address_specific_data2"  

特定のタグのハンドラが呼び出され、両方のデータが渡されます。ハンドラはこれら 2 行を解釈する順番を決定します。

TXT レコードの順番はあまり重要ではありません。異なるタグを持つ行がある場合、特定のタグのハンドラが呼び出される前に、同じタグを持つ行はグループにまとめられます。以下の例では、tag1 のハンドラは 2 つの文書行で呼び出され、tag2 のハンドラは 3 つの文書行で呼出されます。


TXT "XFNtag1 address_specific_data1"
TXT "XFNtag2 address_specific_data2"
TXT "XFNtag1 address_specific_data3"
TXT "XFNtag2 address_specific_data4"
TXT "XFNtag2 address_specific_data5"

XFN リファレンスに使用できる TXT レコードの例を以下に示します。

「例 1」


TXT "XFNREF STRING XFN_SERVICE"
TXT "XFNNISPLUS doc.com. nismaster 129.144.40.23"

「例 2」


TXT "XFNREF OID 1.3.22.1.6.1.3"
TXT "XFNDCE (1 fd33328c4-2a4b-11ca-af85-09002b1c89bb...)"

以下は、従属ネーミングシステムがバインドされた DNS テーブルの例です。


$ORIGIN test.doc.com
@      IN SOA foo root.eng.doc.com          (
                    100    ;; Serial
                    3600   ;; Refresh
                    3600   ;; Retry
                    3600   ;; Expire
                    3600   ;; Minimum
            )
         NS    nshost
         TXT   "XFNREF STRING XFN_SERVICE"
         TXT   "XFNNISPLUS doc.com. nismaster 129.144.40.23"
nshost IN  A 129.144.40.21

XFN リファレンス用 X.500 属性の構文

この節では、XFN リファレンス用の X.500 属性の使用についての補足情報を述べます。XFN リファレンスを X.500 における属性として保存できるようにするためには、ディレクトリスキーマを、この付録で定義されているオブジェクトクラスと属性をサポートするように変更する必要があります。

オブジェクトクラス

XFN リファレンスをサポートするために、XFN と XFN 補助の 2 つの新しいオブジェクトクラスが導入されています。XFN オブジェクトクラスは FNS に適切ではありません。これは、米国 Sun Microsystems, Inc. の X.500 ディレクトリ製品が、新しく導入された複合 ASN.1 構文をサポートしていないためです。その代わりに、FNS では XFN 補助オブジェクトクラスを使用します。

ASN.1 では、次のような 2 つの新しいオブジェクトクラスが定義されています。


xFN OBJECT-CLASS ::= {
         SUBCLASS OF         { top }
         KIND              auxiliary
         MAY CONTAIN       { objectReferenceId |
                             objectReference |
                             nNSReferenceId |
                             nNSReference }
          ID                 id-oc-xFN
     }
     id-oc-xFN OBJECT IDENTIFIER ::= {
        iso(1) member-body(2) ansi(840) sun(113536)
        ds-oc-xFN(24)
     }
xFNSupplement OBJECT-CLASS ::= {
         SUBCLASS OF           { top }
         KIND                  auxiliary
         MAY CONTAIN           { objectReferenceString |
                               nNSReferenceString }
            ID                 id-oc-xFNSupplement
      }
      id-oc-xFNSupplement OBJECT IDENTIFIER ::= {
          iso(1) member-body(2) ansi(840) sun(113536)
          ds-oc-xFNSupplement(25)
      } 

XFN 補助オブジェクトクラスは、補助オブジェクトクラスとして定義されているため、X.500 のオブジェクトクラスすべてに引き継がれる可能性があります。XFN 補助オブジェクトクラスは、以下の 2 つの任意属性によって定義されます。

ASN.1 では、この 2 つの属性を以下のように定義しています。


        objectReferenceString ATTRIBUTE ::= {
            WITH SYNTAX             OCTET STRING
            EQUALITY MATCHING RULE  octetStringMatch
            SINGLE VALUE            TRUE
            ID                      { id-at-objectReferenceString }
        }
        id-at-objectReferenceString OBJECT IDENTIFIER ::= {
            iso(1) member-body(2) ansi(840) sun(113536)
            ds-at-objectReferenceString(30)
        }
        nNSReferenceString ATTRIBUTE ::= {
            WITH SYNTAX             OCTET STRING
            EQUALITY MATCHING RULE  octetStringMatch
            SINGLE VALUE            TRUE
            ID                      { id-at-nNSReferenceString }
        }
        id-at-nNSReferenceString OBJECT IDENTIFIER ::= {
            iso(1) member-body(2) ansi(840) sun(113536)
            ds-at-nNSReferenceString(31)
        }

objectReferenceStringnNSReferenceString は、共に XFN リファレンスを文字列形式で保存します。それぞれのオクテット列構文は、さらに以下の BNF 定義に準拠するように制約を加えられます。


     <ref>          ::= <id> '$' <ref-addr-set>
     <ref-addr-set> ::= <ref-addr> | <ref-addr> '$' <ref-addr-set>
     <ref-addr>     ::= <id> '$' <addr-set>
     <addr>         ::= <hex-string>
     <id>           ::= 'id'   '$' <string> |
                        'uuid' '$' <uuid-string> |
                        'oid'  '$' <oid-string>
     <string>       ::= <char> | <char> <string>
     <char>         ::= <PCS> | '¥' <PCS>
     <PCS>          ::= // Portable Character Set:
                        // !"#$%&'()*+,-./0123456789:;<=>?
                        // @ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_
                        // `abcdefghijklmnopqrstuvwxyz{|}‾
     <uuid-string>  ::= <uuid-char>  | <uuid-char> <uuid-string>
     <uuid-char>    ::= <hex-digit> | '-'
     <oid-string>   ::= <oid-char>  | <oid-char> <oid-string>
     <oid-char>     ::= <digit> | '.'
     <hex-string>   ::= <hex-octet> | <hex-octet> <hex-string>
     <hex-octet>    ::= <hex-digit> <hex-digit>
     <hex-digit>    ::= <digit> |
                        'a' | 'b' | 'c' | 'd' | 'e' | 'f' |
                        'A' | 'B' | 'C' | 'D' | 'E' | 'F'
     <digit>        ::= '0' | '1' | '2' | '3' | '4' | '5' |
                        '6' | '7' | '8' | '9'

以下は、文字列形式の XFN リファレンスの例です。


id$onc_fn_enterprise$id$onc_fn_nisplus_root$0000000f77697a2e636fd2e2062696762696700 

この例では、onc_fn_enterprise というタイプの XFN リファレンスを使用しています。この中には、onc_fn_nisplus_root というアドレスタイプと 1 つのアドレス値があります。アドレス値は XDR によって符号化された文字列で、ドメイン名、doc.com の後にホスト名 cygnus が続く形で構成されています。

XFN リファレンスは、fnattr という FNS コマンドを使用して X.500 のエントリに加えることができます。この例では、次のように入力すると、c=us/o=doc という新しいエントリが作成され、オブジェクトクラスの属性と最上位、組織、XFN 補助の値が加えられます。


# fnattr -a .../c=us/o=doc object-class top organization xfn-supplement

fnbind という FNS コマンドは、NIS+ リファレンスを命名されたエントリにバインドし、X.500 を NIS+ 名前空間のルートにリンクします。fnbind の名前因数内の文字の後にスラッシュ (/) が使用されていることに注意してください。


# fnbind -r .../c=us/o=doc/ onc_fn_enterprise onc_fn_nisplus_root "doc.com. cygnus"