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

FNS の問題と対策

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

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

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

「症状」

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/ を指定する場合もあります。

「対策」

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

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

/etc/nsswitch.conf ファイルに publickey: nisplus エントリがあるかどうか確認するこれはおそらく認証エラーとなる

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

「症状」

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

「考えられる原因」

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

「診断」

nisls コマンドを使用して、どんなサブディレクトリが存在するかを調べます。nisls をサブディレクトリごとに実行すれば、どのサブディレクトリに org_dir があるかを確かめることができます。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 コマンドを実行して、fnbindfncreate に指定しようとする名前がコンテキストのものかどうか確認します。

「対策」

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

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

「症状」

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

「考えられる原因」

fnbind、および fncreate-s オプションをつけて実行すると、既存の割り当ては上書きされます。ただしそれによって名前のないコンテキストができるような場合、「name in use」というエラーメッセージが表示され、この操作は失敗します。このエラーは、名前のないコンテキストを回避するために発生します。

「診断」

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

「対策」

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

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

「症状」

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

「考えられる原因」

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

「診断」

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

「対策」

「考えられる原因」を参照してください。

その他の一般的なエラーメッセージ


attribute no permission

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


attribute value required

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


authentication failure

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


bad reference

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


Cannot obtain Initial Context

インストールに問題があることを示します (初期コンテキストが取得できないを参照)。


communication failure

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


configuration error

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

(1) 割り当てテーブルが削除されました (FNS の問題ではありません)。

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


context not empty

「割り当てを含んでいるコンテキストを削除しようとした」ということを意味します。


continue operation using status values

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


error

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


illegal name

指定された名前が正しくないことを示します。


incompatible code sets

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


invalid enumeration handle

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


invalid syntax attributes

「指定された構文属性が正しくないために、構文を完全に決定できない」ということを意味します。


link error

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


malformed link

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


name in use

「指定された名前が、コンテキスト中ですでに使用されている」ということを意味します。


name not found

指定された名前が見つからないということを意味します。


no permission

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


no such attribute

オブジェクトが、指定の属性を持たないことを意味します。


no supported address

/usr/lib/fn ディレクトリに、(FNS の名前に結びつけられたリファレンス中にはいくつかのタイプのアドレスがあるが) どのタイプの共用ライブラリも存在しない」ということを意味します。共用ライブラリの名前は、fn_ctx_ address_type.so という形になります。 リンクは通常、「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

「リファレンスが、正しいコンテキストに対応していない」ということを意味します。


partial result returned

操作によって得られた結果が不完全であることを意味します。


Success

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

(2) 操作が成功しました。


syntax not supported

「サポートされていないタイプの構文が使用された」ということを意味します。


too many attribute values

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


unavailable

操作に必要なネームサービスが利用できないということを意味します。


link loop limit reached

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