Solaris ネーミングの管理

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

承認とアクセス権が NIS+ 資格および認証とどのように関連して NIS+ 名前空間のセキュリティを維持しているかについては、「NIS+ の承認とアクセス - 紹介」および第 6 章「セキュリティの概要」を参照してください。

承認クラス - 復習

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

アクセス権 - 復習

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

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

アクセス権の連鎖

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

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

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

NIS+ オブジェクトを作成した時、NIS+ はそのオブジェクトに所有者クラスとグループクラスのアクセス権のデフォルトセットを与えます。デフォルトでは、所有者はそのオブジェクトを作成した NIS+ 主体です。デフォルトのグループは NIS_GROUP の環境変数で指定されたグループになります (詳細は、「デフォルトのアクセス権」を参照)。

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

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

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

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

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

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

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

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

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

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

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

表 10-1 テーブル、列、エントリの例 1

 

未認証 

所有者 

グループ 

その他 

テーブルのアクセス権 

---- 

r---

---- 

---- 

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

表 10-2 テーブル、列、エントリの例 2

 

未認証 

所有者 

グループ 

その他 

テーブルのアクセス権 

----

r---

----

---- 

エントリ 2 のアクセス権 

----

----

r---

---- 

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

表 10-3 テーブル、列、エントリの例 3

 

未認証 

所有者 

グループ 

その他 

テーブルのアクセス権 

----

r---

----

----

エントリ 2 のアクセス権 

----

----

r---

----

列 1 のアクセス権 

----

----

----

r---

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

表 10-4 テーブル、列、エントリの例 4

 

列 1 

列 2 

列 2 

エントリ 1 

読み取り 

*NP*

*NP*

エントリ 2 

読み取り 

読み取り 

読み取り 

エントリ 3 

読み取り 

*NP*

*NP*

エントリ 4 

読み取り 

*NP*

*NP*

エントリ 5 

読み取り 

*NP*

*NP*

異なるレベルの権限

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

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

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

 

ディレクトリ 

テーブル 

列 

エントリ 

読み取り 

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

テーブル内容の読み取り 

列内容の読み取り 

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

作成 

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

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

列に新規のデータを入力 

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

変更 

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

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

列内のデータを変更 

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

削除 

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

エントリ (行) の削除 

列内のデータの削除 

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

読み取り権

作成権

変更権

削除権

アクセス権の格納場所

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

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

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


niscat -o objectname

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

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

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


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

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

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

図 10-1 アクセス権の表示

Graphic


注 -

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


デフォルトのアクセス権

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

表 10-6 デフォルトのアクセス権

未認証 

所有者 

グループ 

その他 

読み取り 

読み取り 

読み取り 

変更 

作成 

削除 

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

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

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


注 -

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


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