NIS+ の承認の基本的目的は、各 NIS+ 主体が各 NIS+ オブジェクトとサービスに対して持っているアクセス権を特定することにあります。
一度主体の NIS+ 要求が認証されると、NIS+ は承認クラスを与えます。NIS+ オブジェクトに対して行うことのできる動作を指定するアクセス権は各クラスに与えられます。クラスごとに別のアクセス権が与えられる場合、各承認クラスはそれぞれアクセス権を持つということです。
「承認クラス」には次の 4 つがあります。所有者、グループ、その他、未認証 (詳細は、次の「承認クラス」を参照)。
「アクセス権」には次の 4 つがあります。作成 (CREATE)、削除 (DESTROY)、変更 (MODIFY)、読み取り (READ) (詳細は、「NIS+ のアクセス権について」を参照)。
NIS+ オブジェクトは NIS+ 主体に直接アクセス権を与えずに、主体の 4 つの「クラス」にアクセス権を与えます。
「所有者」
「グループ」
各 NIS+ オブジェクトグループは関連した 1 つのグループを持ちます。オブジェクトグループのメンバーは NIS+ 管理機能が指定します。オブジェクトグループクラスに属している主体がグループクラスの権限を与えられます。この場合の「グループ」とは NIS+ グルーブを表します。UNIX のグループやネットグループのことではありません。
「その他」
その他クラスは、サーバーが認証できるすべての NIS+ 主体を包含するクラスです。所有者とグループクラスを除く、すべての認証されたものを意味します。
「未認証」
NIS+ 要求のすべてについて、システムは要求主体が属しているクラスと、そのクラスが所持しているアクセス権を判定します。
オブジェクトに対するアクセス権は、各クラスで任意の組み合わせが可能です。しかしながら、通常は上位クラスが下位クラスのすべての権限に追加権限を持つように割り当てられます。
たとえば、未認証クラスとその他クラスに読み取り権が与えられていれば、読み取り権と変更権の両方をグループクラスに、そして読み取り権、変更権、作成権、および削除権を所有者クラスに与えます。
4 つのクラスについては、以下に詳述します。
所有者は 1 つの NIS+ 主体です。
NIS+ オブジェクトへのアクセスを要求する主体は、所有者アクセス権を得る前に認証され (有効な DES 資格を提示し) なければなりません。
デフォルトでは、オブジェクト所有者はオブジェクトを作成できる主体です。しかしながら、オブジェクト所有者は 2 つの方法で別の主体に所有権を譲ることができます。
オブジェクトが作成されたときに、主体が別の所有者を指定する方法 ( 「コマンドによるアクセス権の指定」を参照)
オブジェクトの作成後に、主体がオブジェクトの所有権を変更する方法 ( 「オブジェクトとエントリの所有権の変更」を参照)
一度主体が所有権を放棄すると、その主体はオブジェクトに対する所有者のアクセス権すべてを放棄することになり、グループ、その他、未認証のいずれかの所有権を持つことになります。
オブジェクトグループは 1 つの NIS+ グループです。この場合の「グループ」とは、UNIX のグループやネットグループのことではありません。
NIS+ オブジェクトにアクセスを要求する主体は、認証され (有効な DES 資格を提示し) かつグループアクセス権を与えられる前にそのグループに属していなければなりません。
1 つの NIS+ グループは NIS+ 主体の集合であり、名前空間へのアクセス権を与えるのに都合の良いようにまとめられたものです。NIS+ グループに与えられるアクセス権はそのグループのメンバーである主体すべてに適用されます。オブジェクトの所有者が、そのオブジェクトのグループに属している必要はありません。
オブジェクトが作成された時、そのオブジェクトはデフォルトグループに割り当てられます。オブジェクトが作成された時でもその後でも、そのオブジェクトをデフォルト以外のグループに割り当てることができます。オブジェクトグループはいつでも変更できます。
NIS+ グループに関する情報は NIS+ group テーブルに格納されるのではないことに注意してください。NIS+ group テーブルには UNIX グループに関する情報が格納されます。NIS+ グループに関する情報は、適切な groups_dir ディレクトリのオブジェクトに格納されます。
NIS+ グループの情報は、各 NIS+ ドメインの groups_dir サブディレクトリにある、NIS+ グループ「オブジェクト」に格納されます。
NIS+ グループの管理については、第 12 章「NIS+ グループの管理」を参照してください。
その他クラスは、NIS+ によって認証されたすべての NIS+ 主体のクラスです。すなわち、所有者およびグループクラスのすべてと有効な DES 資格を提示したものを加えたものです。
その他に与えられたアクセス権は、認証されたすべての主体に適用されます。
未認証クラスは、正しく認証されなかったものすべてで構成されます。すなわち、有効な DES 資格を提示しなかったものです。
NIS+ オブジェクトと承認クラスには各レベルに適用される階層があります。標準的な NIS+ ディレクトリ階層のデフォルトは次のようになります。
「ディレクトリレベル」
各 NIS+ ドメインには groups_dir と org_dir という 2 つの NIS+ ディレクトリオブジェクトがあります。groups_dir ディレクトリオブジェクトはさまざまなグループで構成されます。各 org_dir ディレクトリオブジェクトには種々のテーブルが含まれます。
「グループレベルまたはテーブルレベル」
グループは個々のエントリやグループで構成されます。テーブルには列 と個々のエントリが含まれます。
「列レベル」
テーブルは 1 つ以上の列で構成されます。
「エントリ (行) レベル」
グループもしくはテーブルは 1 つ以上のエントリを持ちます。
各レベルには 4 つの承認クラスが適用されます。ディレクトリオブジェクトはそれ自身の所有者とグループを持ちます。ディレクトリ内の個々のテーブルは、ディレクトリの所有者およびグループと異なる所有者およびグループを持ちます。テーブル内では、1 エントリ (行) が個々の所有者もしくはグループを持ちます。この所有者もしくはグループは、テーブル全体の所有者やグループとは異なり、またオブジェクト全体の所有者やグループとも異なります。テーブル内の個々の列は、テーブル全体と同じ所有者やグループを持ちます。
NIS+ オブジェクトはオブジェクト定義の一部としてそのアクセス権を指定します。「NIS+ オブジェクトのアクセス権の読み取り」に niscat -o コマンドを使用した場合の説明があります。
NIS+ オブジェクトは、UNIX ファイルが UNIX ユーザーに対するアクセス権を指定するのと同じ方法で、NIS+ 主体に対するアクセス権を指定します。アクセス権は、NIS+ 主体が NIS+ オブジェクトについて実行することが許されている動作の種類を表します。
NIS+ の動作はオブジェクトの種類によって異なりますが、読み取り、変更、作成、および削除の 4 つのクラスに分類されます。
「読み取り」
オブジェクトの読み取り権を持った主体はオブジェクトの内容を読み取ることができます。
「変更」
オブジェクトの変更権を持った主体はオブジェクトの内容を変更することができます
「削除」
オブジェクトの削除権を持った主体はオブジェクトの内容を削除することができます。
「作成」
上位レベルのオブジェクトの作成権を持った主体はそのレベル内で新しいオブジェクトを作成できます。すなわち、NIS+ ディレクトリオブジェクトの作成権を持っていれば、そのディレクトリ内に新しいテーブルを作成できます。NIS+ テーブルの作成権を持っていれば、そのテーブル内に新しい列とエントリを作成できます。
NIS+ クライアントから NIS+ サーバーへのすべての通信は、実際には特定の NIS+ オブジェクトに対してこれらの動作のうちの 1 つを実行してほしいという要求です。たとえば、NIS+ 主体が他のワークステーションの IP アドレスを要求した場合、これは実際には、この種の情報を格納している「hosts」テーブルオブジェクトへの読み取り権を要求しています。主体が NIS+ 名前空間にディレクトリを追加するようサーバーに要求した場合、これは実際には、そのディレクトリの親オブジェクトに対して変更権を要求しています。
これらの権限は、ディレクトリからテーブルへ、さらにテーブルの列およびエントリへと展開することを覚えておいてください。たとえば、新しいテーブルを作成するには、テーブルを格納するディレクトリオブジェクトに対して作成権を持っていなければなりません。テーブルを作成する場合は、ユーザーはそのテーブルのデフォルト所有者になります。所有者として、テーブルに新しいエントリを作成できる作成権を自分自身に割り当てることができます。テーブルに新しいエントリを作成する場合は、ユーザーはそのエントリのデフォルト所有者になります。所有者として、他のユーザーにテーブルレベルの作成権を与えることもできます。たとえば、テーブルのグループクラスにテーブルレベルの作成権を与えることができます。その場合、そのテーブルグループのすべてのメンバーがテーブルに新しいエントリを作成できます。新規のテーブルエントリを作成する個々のグループメンバーはそのエントリのデフォルト所有者になります。