この章では、NIS+ アクセス権とその管理方法について説明します。
NIS+ セキュリティタスクには、Solaris 管理コンソール ツールがあればより簡単に実行できるものがあります。
NIS+ は、将来のリリースではサポートされなくなる可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 リリース以降で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。
NIS+ アクセス権によって、NIS+ ユーザーが実行できる操作とアクセス可能な情報が決定されます。この章では、NIS+ セキュリティシステム全体と、特にシステムでアクセス権が果たす役割について、十分理解しているユーザーを想定しています。詳しくは、第 11 章「NIS+ のセキュリティの概要」を参照してください。
NIS+ アクセス関連のコマンドとその構文、オプションについては、nis+(1) のマニュアルページを参照してください。
NIS+ 名前空間のセキュリティは、承認、アクセス権、および NIS+ 資格と認証の相互作用によって確保されています。これらの詳細については、「NIS+ の承認とアクセス - 紹介」を参照してください。
「承認クラス」に説明があるように、NIS+ のアクセス権は各クラスに与えられるものです。4 つの NIS+ クラスが用意されています。
「所有者」。所有者クラスは 1 つの NIS+ 主体です。デフォルトではオブジェクトの所有者は、オブジェクトを作成した主体になります。しかし、オブジェクトの所有者は所有権を別の主体に譲ることで所有者を変更できます。
「グループ」。グループクラスは 1 つ以上の NIS+ 主体の集まりです。1 つの NIS+ オブジェクトは 1 つだけの NIS+ グループを持つことができます。
「その他」。その他クラスには、NIS+ に認証された NIS+ 主体のすべて (すべての所有者クラスとグループクラス、および有効な DES 資格を提示したものすべて) が含まれます。
「未認証」。未認証クラスは、すべての適切な認証を受けられなかったもので構成されます。すなわち、有効な DES 資格を提示できなかったすべてのものです。
「NIS+ アクセス権について」で詳述したように、NIS+ には 4 種類のアクセス権があります。
「読み取り」。オブジェクトの読み取り権を持った主体はオブジェクトの内容を読み取ることができます。
「作成」。上位レベルのオブジェクトに対する作成権を持った主体が、そのレベルの下位に新規のオブジェクトを作成できます。すなわち、NIS+ ディレクトリオブジェクトの作成権を持っていれば、そのディレクトリ内に新しいテーブルを作成できます。NIS+ テーブルの作成権を持っていれば、そのテーブル内に新しい列とエントリを作成できます。
これらの権限は論理的には、ディレクトリ、テーブル、列とエントリのように下位に展開するものであることを銘記してください。たとえば、新規にテーブルを作成するには、そのテーブルを格納する NIS+ ディレクトリオブジェクトに対する作成権が必要です。そのテーブルを作成した場合、そのデフォルト所有者になります。所有者として、自分自身にそのテーブルに対する作成権を与え、テーブルに新規のエントリを作成できます。テーブル内に新規のエントリを作成した場合、それらのエントリの所有者になります。テーブルの所有者として、テーブルレベルの作成権をほかの人に与えることもできます。たとえば、自身のテーブルのグループクラスのテーブルレベルの作成権を与えることができます。その場合、テーブルのグループのすべてのメンバーがテーブル内に新規のエントリを作成できます。新規のテーブルエントリを作成した、グループの個々のメンバーはそのエントリのデフォルト所有者になります。
承認クラスは連鎖の関係にあります。つまり、上位クラスは通常下位クラスにも属しており、自動的に下位クラスの権利を得ることになります。次のように機能します。
「所有者クラス」。オブジェクトの所有者はそのオブジェクトのグループに所属していても、いなくてもかまいません。所有者があるグループに属していると、そのグループに与えられている権利をすべて得ることになります。オブジェクトの所有者が自動的に、その他と未認証のクラスにも属することになり、自動的にこれら 2 つのクラスに与えられている権利を獲得することになります。
「グループクラス」。オブジェクトのグループメンバーは自動的にその他と未認証クラスに所属します。したがって、グループメンバーは自動的にその他クラスと未認証クラスのメンバーがそのオブジェクトに持っている権利を獲得します。
「その他クラス」。その他クラスは自動的に、未認証クラスがオブジェクトに対して持っている権利と同じ権利を持つことになります。
この基本原則は、下位クラスのアクセス権は自動的に上位クラスに与えられるということです。つまり、上位クラスは下位クラスよりも多くの権利を持つことができ、権利が少なくなることはないということです。この原則の例外は、所有者がグループのメンバーでない場合に、所有者の持っていない権利をグループクラスに与えることができることです。
NIS+ オブジェクトを作成した時、NIS+ はそのオブジェクトに所有者クラスとグループクラスのアクセス権のデフォルトセットを与えます。デフォルトでは、所有者はそのオブジェクトを作成した NIS+ 主体です。デフォルトのグループは、環境変数 NIS_GROUP
の中で名前をつけられたグループです。
NIS+ は NIS+ オブジェクトが作成された時に自動的に付与されたデフォルト権利を変更する 2 つの異なった方法を提供しています。
NIS_DEFAULTS
環境変数。NIS_DEFAULTS
はセキュリティに関するデフォルト値を保管し、その 1 つはアクセス権です。このデフォルトアクセス権は、オブジェクトが作成された時にオブジェクトに自動的に付与されるものです (詳細については、「NIS+ デフォルトの表示 - nisdefaults コマンド」 を参照してください)。
NIS_DEFAULTS
環境変数の値を変更すると、変更後に作成されたオブジェクトに新規の値が与えられます。しかし、以前に作成されたオブジェクトは影響を受けません。
-D オプションはいくつかの NIS+ コマンドに用いられます。NIS+ オブジェクトを作成するコマンドに -D オプションを使用すると、NIS_DEFAULTS
環境変数が指定したデフォルト権利を上書きします (詳細は、「デフォルトを無効にする」を参照してください)。
NIS+ オブジェクトを作成する場合、既存のデフォルトアクセス権 (NIS_DEFAULTS
環境変数か -D オプションの指定かのいずれかによる) に対処する必要があります。デフォルト権利を変更するコマンドは次のとおりです。
NIS+ テーブルに対するアクセス権を指定する方法には、次の 3 通りあります。
「テーブル」全体を対象にアクセス権を指定する
「エントリ」(行) 単位でアクセス権を指定する
「列」単位でアクセス権を指定する
列とエントリ (行) が交差する部分をフィールドといいます。データ値はすべてこの交差領域、つまりフィールドに入力します。
列とエントリレベルのアクセス権という仕組みを使用すると、テーブルレベルのアクセス権の制限があっても個々の行と列にアクセス権を追加できますが、テーブル全体へのアクセス権以上に列とエントリレベルの権利を制限することはできません。
「テーブル」。テーブルレベルは基本的なレベルです。テーブルレベルに付与されたアクセス権は、列ごとまたはエントリごとに特に変更された場合を除き、テーブル内のすべての部分に適用されます。テーブルレベルの権利はもっとも厳格であるべきです。
承認クラスは連結しているということに注意してください。上位クラスは、下位クラスに割り当てられた権利を取得していることになります。「アクセス権の連鎖」 を参照してください。
「列」。列レベルの権利という仕組みを使用すると、列ごとに追加アクセス権を付与できます。たとえば、その他クラスと未認証クラスにテーブルレベルの権利が何も付与されていなかったとします。この場合、この 2 つのクラスはテーブル内のデータに対して、読み取り権、変更権、作成権、削除権を持ちません。列レベルの権利という仕組みを使用すると、テーブルレベルの権限の制限を越えて、その他クラスのメンバーに対して特定の列のデータに対する読み取り権を付与できます。
一方、所有者クラスとグループクラスにテーブル全体の読み取り権が付与されている場合、列レベルの権利を使ってグループクラスの列の読み取り権を妨げることはできません。列のグループはテーブルのグループやエントリのグループと同じにはなりません。 これらはまったく異なるグループです。
「エントリ (行)」。エントリレベルの権限という仕組みを使用すると、行ごとに追加アクセス権を付与できます。たとえば、個々のユーザーに指定したエントリに限って変更する権限を与えることができるのです。
エントリのグループはテーブルのグループとは同じである必要はなく、別のグループにできます。そうすることによって、特定のグループのメンバーに、ほかのグループに属するエントリに影響を与えないで、あるエントリのセットにアクセスする権限を付与できます。
列またはエントリレベルのアクセス権は、追加アクセスを次の 2 つの方法で提供できます。1 つは権利を持つ主体を増やす方法で、もう 1 つは同じ主体に権利を追加する方法です。もちろん、これらを組み合わせることも可能です。以下にその例を示します。
テーブルオブジェクトが、そのテーブルの所有者に対して読み取り権を与えたとします。
表 15–1 テーブル、列、エントリの例 1
|
未認証 |
所有者 |
グループ |
その他 |
---|---|---|---|---|
テーブルのアクセス権 |
---- |
r--- |
---- |
---- |
このことは、テーブルの所有者だけがテーブル全体の内容を読み取れることを意味します。所有者でない主体は、アクセスできません。テーブルのエントリ 2 にグループクラスに対して読み取り権を与えることができます。
表 15–2 テーブル、列、エントリの例 2
|
未認証 |
所有者 |
グループ |
その他 |
---|---|---|---|---|
テーブルのアクセス権 |
---- |
r--- |
---- |
---- |
エントリ 2 のアクセス権 |
---- |
---- |
r--- |
---- |
テーブルの内容をすべて読み取れるのは所有者だけですが、このテーブルのグループのメンバーであれば、この特定エントリの内容を読み取ることができます。次に、特定の列がその他クラスに読み取り権を与えたとします。
表 15–3 テーブル、列、エントリの例 3
|
未認証 |
所有者 |
グループ |
その他 |
---|---|---|---|---|
テーブルのアクセス権 |
---- |
r--- |
---- |
---- |
エントリ 2 のアクセス権 |
---- |
---- |
r--- |
---- |
列 1 のアクセス権 |
---- |
---- |
---- |
r--- |
その他クラスのメンバーは例 1 のすべてのエントリを読み取ることができます。グループクラスのメンバーは、(その他クラスに属しているので) 列 1 のすべてとエントリ 2 の全列を読み取ることができます。*NP* になっているセルは、「グループ」、「その他」いずれのクラスも読み取りができません (アクセス権がない)。
表 15–4 テーブル、列、エントリの例 4
|
列 1 |
列 2 |
列 2 |
---|---|---|---|
エントリ 1 |
読み取り |
*NP* |
*NP* |
エントリ 2 |
読み取り |
読み取り |
読み取り |
エントリ 3 |
読み取り |
*NP* |
*NP* |
エントリ 4 |
読み取り |
*NP* |
*NP* |
エントリ 5 |
読み取り |
*NP* |
*NP* |
この節では 4 つの権利 (読み取り、作成、変更、削除) が 4 つのアクセスレベル (ディレクトリ、テーブル、列、エントリ) とどのようにかかわるのかを説明します。
種々の権利とレベルに関係した機能を次の表 15–5 にまとめます。
表 15–5 アクセス権、アクセスレベル、およびその機能
|
ディレクトリ |
テーブル |
列 |
エントリ |
---|---|---|---|---|
読み取り |
ディレクトリ内容のリスト |
テーブル内容の読み取り |
列内容の読み取り |
エントリ (行) 内容の読み取り |
作成 |
新規ディレクトリまたはテーブルオブジェクトの作成 |
新規エントリ (行) の追加 |
列に新規のデータを入力 |
エントリ (行) に新規のデータを入力 |
変更 |
オブジェクトの移動とオブジェクト名の変更 |
テーブル内の任意のデータを変更 |
列内のデータを変更 |
エントリ (行) 内のデータを変更 |
削除 |
テーブル等のディレクトリオブジェクトの削除 |
エントリ (行) の削除 |
列内のデータの削除 |
エントリ (行) 内のデータの削除 |
「ディレクトリ」。ディレクトリの読み取り権があれば、ディレクトリの内容を表示できます。
「テーブル」。テーブルの読み取り権があれば、テーブル内のすべてのデータを読み取れます。
「列」。列の読み取り権があれば、その列のすべてのデータを読み取れます。
「エントリ」。エントリの読み取り権があれば、そのエントリのすべてのデータを読み取れます。
「ディレクトリ」。ディレクトリレベルの作成権があれば、テーブル等の新規オブジェクトをディレクトリ内に作成できます。
「テーブル」。テーブルレベルの作成権があれば、テーブル内に新規のエントリを作成できますが、列は作成できません。テーブルレベルの作成権だけでは、テーブルに新規のエントリを追加できますが、新規の列を追加することはできません。
「列」。列の作成権があれば、列内のフィールドに新規のデータを入力できます。新規の列を作成できません。
「エントリ」。エントリの作成権があれば、その行のフィールドに新規のデータを入力できます (エントリレベルの作成権では新規の行を作成することはできません)。
「ディレクトリ」。ディレクトリレベルの変更権があれば、ディレクトリオブジェクトの移動と名前の変更ができます。
「テーブル」。テーブルレベルの変更権があれば、テーブル内のデータをすべて変更できます。新規の行を作成 (追加) できますが、新規の列は作成できません。空白フィールドにデータを入力することも可能です。
「列」。列の変更権があれば、その列の任意のフィールドのデータを変更できます。
「エントリ」。エントリの変更権があれば、その行の任意のフィールドのデータを変更できます。
「ディレクトリ」。ディレクトリレベルの削除権があれば、テーブル等のディレクトリ内の既存オブジェクトを削除できます。
「テーブル」。テーブルレベルの削除権があれば、テーブル内の既存のエントリ (行) を削除できますが、列は削除できません。削除できるのは既存のエントリだけで、既存の列は削除できません。
「列」。列の削除権があれば、その列の任意のフィールドのデータを削除できます。
「エントリ」。エントリの削除権があれば、その行の任意のフィールドのデータを削除できます。
オブジェクトのアクセス権は、そのオブジェクトの定義の一部として指定され、格納されます。この情報は NIS+ テーブルには格納されません。
アクセス権を読み取るには niscat コマンドを使用します。
niscat -o objectname |
アクセス権を読み取るオブジェクト名を指定します。
このコマンドは、NIS+ オブジェクトに関する次の情報を返します。
「所有者」。所有権を持っている NIS+ 主体。通常はオブジェクトを作成した人ですが、もとの所有者が所有権を渡した場合もある
「グループ」。オブジェクトの NIS+ 主体
「未認証クラスのアクセス権」。認証された (有効な DES 資格を提示した) か否かにかかわらず、全員が持つ権利
「所有者クラスのアクセス権」。オブジェクトの所有者に付与されたアクセス権
「その他クラスのアクセス権」。認証された NIS+ 主体全てに付与されたアクセス権
4 つの承認クラスのアクセス権は、次のように 16 文字の文字列で表示されます。
r---rmcdr---r--- |
各文字がアクセス権の種類を表します。
r は読み取り権
m は変更権
d は削除権
c は作成権
- はアクセス権のないことを表す
先頭の 4 文字は未認証に、次の 4 文字は所有者に、その次の 4 文字はグループに、そして最後の 4 文字はその他に、それぞれ与えられたアクセス権を表します。
UNIX ファイルシステムとは異なり、先頭のアクセス権は未認証用であり、所有者用ではありません。
オブジェクトを作成すると、NIS+ はそのオブジェクトにデフォルトの所有者、グループ、および アクセス権を割り当てます。デフォルトの所有者は、そのオブジェクトを作成する NIS+ 主体です。デフォルトのグループは、環境変数 NIS_GROUP
の中で名前をつけられたグループです。デフォルトのアクセス権は次のようになります。
未認証 |
所有者 |
グループ |
その他 |
---|---|---|---|
- |
読み取り権 |
読み取り権 |
読み取り権 |
- |
変更権 |
- |
- |
- |
作成 |
- |
- |
- |
削除 |
- |
- |
環境変数 NIS_DEFAULTS
のセットがある場合、NIS_DEFAULTS
内の値が新規のオブジェクトに適用されるデフォルト値を決定します。コマンド行でオブジェクトを作成した場合は、-D フラグを使ってデフォルト値以外を設定できます。
この節では、読み取り、変更、削除、作成の操作が行われる際、テーブルオブジェクト、エントリ、列に対するアクセス権をサーバーがどのように割り当てるかについて説明します。
セキュリティレベル 0 では、サーバーはアクセス権を実行しないため、すべてのクライアントがテーブルオブジェクトに対する完全なアクセス権を付与されます。セキュリティレベル 0 は管理者だけがテストの目的で使用します。通常の業務にはレベル 0 を使用しないでください。
サーバーがアクセスを許可するか否かを決定する 4 つの要素があります。
主体が要求する処理の種類
主体がアクセスしようとしているテーブル、エントリ、または列
その特定のオブジェクトに対して、主体が所属する承認クラス
テーブル、エントリ、または列がその主体の承認クラスに割り当てたアクセス権
認証後に主体は、主体が有効な DES 資格を所持しているかを確認することで要求を行い、NIS+ サーバーは処理の種類と要求のオブジェクトを決定します。
「ディレクトリ」。オブジェクトがディレクトリかグループの場合、サーバーは 4 つのクラスに付与されている権利を知るためにオブジェクトの定義をチェックし、どのクラスに主体が所属しているか判定し、主体のクラスとそのクラスに付与された権利に基づいて、その要求を受け入れるかまたは拒否します。
「テーブル」。オブジェクトがテーブルの場合、サーバーは 4 つのクラスに付与されているテーブルレベルの権利を知るためにテーブルの定義をチェックし、どのクラスに主体が所属しているか判定します。所属しているクラスが要求処理を行うテーブルレベルの権利を持っていない場合は、サーバーは次にどの行または列にかかわる処理かを判定し、要求処理に必要な該当する行または列レベルのアクセス権があるかを決定します。
ここでの説明では、NIS+ 環境のセキュリティレベルが 2 (デフォルト) であるものと想定しています。
この節では、この章で説明するコマンドを使用するときにアクセス権や所有者、グループ所有者、オブジェクトを指定する方法を説明します。
この節では、承認とアクセス権に関係する NIS+ コマンドに使われるアクセス権の構文について説明します。
アクセス権は、環境変数で指定する場合もコマンドで指定する場合も、「クラス (class)」、「演算子 (operator)」、「権利 (right)」という3 種類の引数で区別されます。
「クラス」。クラスは、「権利」が適用される NIS+ 主体のカテゴリを意味します。
表 15–7 アクセス権の構文 - クラス
クラス |
目的 |
---|---|
n |
未認証: すべての未認証要求 |
o |
オブジェクトまたはテーブルエントリの所有者 |
g |
オブジェクトまたはテーブルエントリのグループ所有者 |
w |
その他: すべての認証済み主体 |
a |
すべて: 所有者、グループ、およびその他の省略形。これはデフォルト |
「演算子」。演算子は、「権利」について行われる操作を示します。
表 15–8 アクセス権の構文 - 演算子
演算子 |
目的 |
---|---|
+ |
「権利」によって指定されたアクセス権を追加する |
- |
「権利」によって指定されたアクセス権を取り消す |
= |
「権利」によって指定されたアクセス権を明示的に変更する。つまり、既存の権利をすべて取り消し、新しいアクセス権に置き換える |
「権利」。アクセス権そのものです。使用可能な値は次のとおりです。
表 15–9 アクセス権の構文 - 権利
権利 |
目的 |
---|---|
r |
オブジェクト定義またはテーブルエントリを読み取る |
m |
オブジェクト定義またはテーブルエントリを変更する |
c |
テーブルエントリまたは列を作成する |
d |
テーブルエントリまたは列を削除する |
コンマ (,) で区切ることで、複数のコマンドを 1 つのコマンド行にまとめることができます。
表 15–10 クラス、演算子、権利の構文 - 例
操作 |
構文 |
---|---|
読み取りアクセス権を「所有者」クラスに追加する |
o+r |
所有者、グループ、およびその他のクラスのアクセス権を、以前のアクセス権と異なるものに変更する |
a=m |
読み取りと変更の権利をその他と未認証クラスに追加する |
wn+m |
グループ、その他、および未認証クラスから 4 つの権利をすべて削除する |
gwn-rmcd |
所有者クラスに作成と削除の権利を追加し、その他と未認証クラスに読み取り権と変更権を追加する |
o+cd,wn+rm |
「所有者」。NIS+ グループを指定するには、NIS+ グループ名にドメイン名を付けて使います。
「グループ」。NIS+ グループを指定するには、NIS+ グループ名にドメイン名を付けて使います。
主体名は完全指定されていることに注意してください (principalname.domainname)。
所有者
principalname |
グループ
groupname.domainname |
オブジェクトとテーブルエントリは異なる構文を使います。
オブジェクトは単純なオブジェクト名を使います。
テーブルエントリはインデックス付きの名前を使います。
オブジェクト
objectname |
テーブルエントリ
[columnname=value],tablename |
この場合、角括弧 ( [ ]?) は構文の一部であり、オプション記号ではありません。
インデックス付きの名前では、列と値のペアを複数指定できます。その場合、操作はすべての列と値のペアに一致するエントリにだけ適用されます。列と値のペアが増えると、検索条件が厳しくなります。
たとえば、以下のようになります。
表 15–11 オブジェクトとエントリの構文
種類 |
コメント例 |
---|---|
オブジェクト |
hosts.org_dir.sales.doc.com. |
テーブルエントリ |
`[uid=33555],passwd.org_dir.Eng.doc.com.' |
2 つの値のテーブルエントリ |
`[name=sales,gid=2],group.org_dir.doc.com.' |
列はインデックス付きの名前の特殊な形式になっています。列の操作は nistbladm コマンドでだけ可能なため、詳細は、「テーブルでの nistbladm コマンドの使用」を参照してください。
nisdefaults コマンドは、名前空間内で現在有効な 7 つのデフォルトを表示します。これらのデフォルトは次のいずれかです。
オブジェクトを作成する時に -D オプション付きのコマンドを使って上書きしなければ、このマシン上でオブジェクトを作成すると自動的にデフォルト値を獲得することになります。
表 15–12 7 つの NIS+ デフォルト値と nisdefaults オプション
デフォルト |
オプション |
元データ |
目的 |
|
---|---|---|---|---|
ドメイン |
-d |
/etc/defaultdomain |
コマンドを入力したマシンのホームドメインを表示する |
|
グループ |
-g |
環境変数 |
このシェルが作成する次のオブジェクトに付与されるグループを表示する |
|
ホスト |
-h |
uname -n |
マシンのホスト名を表示する |
|
主体 |
-p |
gethostbyname() |
nisdefaults コマンドを入力した NIS+ 主体の完全指定ユーザー 名またはホスト名を表示する |
|
アクセス権 |
-r |
環境変数 |
このシェルが作成する次のオブジェクトまたはエントリに付与されるアクセス権を表示する。書式: -----rmcdr---r--- |
|
検索パス |
-s |
環境変数 |
検索パスの構文を表示する。これは NIS+ が情報を検索する時のドメインを示す。もし設定してあれば、環境変数 |
|
生存期間 |
-t |
環境変数 |
このシェルが作成する次のオブジェクトに付与される生存期間を表示する。デフォルトは 12 時間 |
|
全部 (簡潔) |
-a |
|
7 つのデフォルトすべてを簡潔書式で表示する |
|
冗長 |
-v |
|
指定した値を冗長モードで表示する |
|
これらのオプションを使用して、すべてのデフォルト値もしくはそのサブセットを表示できます。
すべての値を冗長書式で表示するには、引数なしで nisdefaults コマンドを実行します。
master% nisdefaults Principal Name : topadmin.doc.com. Domain Name : doc.com. Host Name : rootmaster.doc.com. Group Name : salesboss Access Rights : ----rmcdr---r--- Time to live : 12:00:00:00:00 Search Path : doc.com. |
すべての値を簡潔書式で表示するには、-a オプションを付けます。
値のサブセットを表示するには、適切なオプションを使用します。その値は簡潔モードで表示されます。権利と検索パスのデフォルトを簡潔モードで表示する例を次に示します。
rootmaster% nisdefaults -rs ----rmcdr---r--- doc.com. |
値のサブセットを冗長モードで表示するには、-v フラグを使用します。
この節では、nisdefaults コマンド、環境変数 NIS_DEFAULTS
、および -D オプションに関連したタスクを実行する方法を説明します。環境変数 NIS_DEFAULTS
は次のデフォルト値を指定します。
所有者
グループ
アクセス権
生存期間
環境変数 NIS_DEFAULTS
に設定した値はデフォルトとなり、そのシェルを使用して作成したすべての NIS+ オブジェクトに適用されます (-D オプション付きでコマンドを実行してデフォルト値に上書きした場合を除く)。
環境変数 NIS_DEFAULTS
を指定することで、デフォルト値 (所有者、グループ、アクセス権、および生存期間) を指定できます。一度 NIS_DEFAULTS の値を設定するとそのシェルから作成したすべてのオブジェクトは、-D オプション付きでコマンドを実行して上書きした場合を除きそのデフォルトに設定されます。
echo コマンドを使って、環境変数の値をチェックできます。以下にその例を示します。
client% echo $NIS_DEFAULTS owner=butler:group=gamblers:access=o+rmcd |
nisdefaults コマンドを使用して、名前空間でアクティブな NIS+ デフォルトの一般的リストを表示することも可能です。を参照してください。
環境変数 NIS_DEFAULTS
の値を変更することで、アクセス権、所有者、およびグループのデフォルトを変更できます。ユーザーのシェルに適切な環境コマンド (csh には setenv、sh と ksh には $NIS_DEFAULTS=, export) を次の引数を付けて使用します。
access=アクセス権 (「コマンドによるアクセス権の指定」で説明されたフォーマットを使って)
owner=所有者名
group=グループ名
複数の引数をまとめる場合は、コロン (:) で区切ります。
owner= 主体名 :group= グループ名
表 15–13 に例をいくつか示します。
表 15–13 デフォルトの変更例
作業 |
例 |
---|---|
所有者のデフォルトアクセス権に読み取り権を設定 |
client% setenv NIS_DEFAULTS access=o+r |
デフォルトの所有者をホームドメインが doc.com. である abe に設定
|
client% setenv NIS_DEFAULTS owner=abe.doc.com. |
2 つのコード行をまとめる |
client% setenv NIS_DEFAULTS access=o+r:owner=abe.doc.com. |
デフォルトを変更したシェルから作成されるすべてのオブジェクトとエントリは、指定した新規の値になります。テーブルの列またはエントリに対してはデフォルトを指定できません。列とエントリはテーブルのデフォルトをそのまま継承します。
変数 NIS_DEFAULTS
をオリジナルの値に再設定するには、ユーザーのシェルに適したフォーマットを使って、引数なしで変数の名前を入力します。
C シェルの場合
client# unsetenv NIS_DEFAULTS |
Bourne シェルまたは Korn シェルの場合
client$ NIS_DEFAULTS=; export NIS_DEFAULTS |
次の NIS+ コマンドのどれかを使えば、NIS+ オブジェクトまたはテーブルエントリを作成する時に、いつでもデフォルトのアクセス権、所有者、およびグループを無効にできます。
デフォルト値を無効にするには、「コマンドによるアクセス権の指定」の説明のように、コマンドの構文に -D オプションを挿入します。
デフォルトを設定する時と同様、複数の引数を 1 行のコマンド行で指定できます。なお、列とエントリの所有者とグループは常に同じであるため、これらを無効にすることはできません。
nismkdir コマンドを使用して、sales.doc.com ディレクトリを作成し、デフォルトアクセス権を無効にして所有者にだけ読み取り権を付与するには、次のように入力します。
client% nismkdir -D access=o+r sales.doc.com |
nischmod コマンドは、NIS+ オブジェクトまたはテーブルエントリのアクセス権を変更します。テーブル列のアクセス権は操作しません。列の場合、nistbladm コマンドに -D オプションを付けて実行してください。nischmod コマンドを使用するには、そのオブジェクトかエントリに対する変更権が必要です。
オブジェクトまたはエントリに権利を追加する例を次に示します。
オブジェクト
nischmod class+right object-name |
テーブルエントリ
nischmod class+right [column-name=value],table-name |
sales.doc.com. ディレクトリオブジェクトのグループに読み取り権と変更権を追加する場合は、次のように入力します。
client% nischmod g+rm sales.doc.com. |
hosts.org_dir.doc.com. テーブル内の name=abe エントリのグループに読み取り権と変更権を追加する場合は、次のように入力します。
client% nischmod g+rm '[name=abe],hosts.org_dir.doc.com.' |
オブジェクトまたはエントリの権利を削除するには、次のように入力します。
オブジェクト
nischmod class-right object-name |
エントリ
nischmod class-right [column-name=value], table-name |
sales.doc.com. ディレクトリオブジェクトのグループから作成権と削除権を削除するには次のように入力します。
client% nischmod g-cd sales.doc.com. |
hosts.org_dir.doc.com. テーブル内の name=abe エントリのグループから削除権を削除する場合は、次のようにします。
client% nischmod g-d '[name=abe],hosts.org_dir.doc.com.' |
nistbladm コマンドは NIS+ テーブルに種々の操作を行うことができます。これについては 「テーブルでの nistbladm コマンドの使用」にほとんどの説明があります。このコマンドは -c と -u の 2 つのオプションを使用してセキュリティ関連のタスクを実行できます。
-c オプション。nistbladm コマンドを使用して テーブルを作成する際に、-c オプションを使用すると最初の列アクセス権を指定できます。
-u オプション。-u オプションを nistbladm コマンドとともに使用すると、列アクセス権を変更できます。
テーブルが作成された時、列にはテーブルオブジェクトと同じ権利が付与されます。このテーブルレベルの権利は環境変数 NIS_DEFAULTS
で指定されるか、またはテーブルを作成したコマンドの一部で指定されます。nistbladm コマンドでテーブルを作成する際に -c オプションを使用すれば、最初の列アクセス権を指定できます。このオプションを使用するには、テーブルを作成しようとするディレクトリの作成権が必要です。テーブル作成時に列権利を指定するには、次のように入力します。
nistbladm -c type ` columname=[flags] [, access]... tablename' |
引数の意味はそれぞれ以下のとおりです。
type はテーブルの種類を示す文字列です。テーブルの type は何にでもできます。
columnname は列名です。
flags には、列の種類を指定します。使用できるフラグには次のものがあります。
S (検索可能)
I (大文字と小文字を区別しない)
C (暗号化)
B (2 進データ)
X (XDR 符号化データ)
access は、「コマンドによるアクセス権の指定」で説明した構文を使用したこの列のアクセス権です。
... はそれぞれの型と権利のセットを持った複数の列を指定できることを示しています。
tablename は完全指定名で表した作成しようとするテーブル名です。
テーブルを作成する際、列に独自の権利を付与するには、列の型とコンマの後の各列の等号記号にアクセス権を追加します。次のように、列をスペースで区切ります。
column=type,rights column=type,rights column=type,rights |
以下の例では、div 特性で depts という名前のテーブルが doc.com ディレクトリに作成されます。列は Name、Site および Manager の 3 つです。 第 2、第 3 列のグループには、変更権が追加されます。
rootmaster% nistbladm -c div Name=S Site=S,g+m Manager=S,g+m depts.doc.com. |
nistbladm -c オプションの詳細は、第 19 章「NIS+ テーブルの管理」を参照してください。
既存の NIS+ テーブルの列にアクセス権を追加するには、nistbladm -u オプション付きの nistbladm コマンドを使用します。このオプションを使用する場合、テーブル列の変更権が必要です。入力例を次に示します。
nistbladm -u [column= access,...],tablename |
引数の意味はそれぞれ以下のとおりです。
column は列名です。
access は、「コマンドによるアクセス権の指定」で説明した構文を使用したこの列のアクセス権です。
... は複数列のアクセス権を指定できることを示しています。
tablename は完全指定名で表した作成しようとするテーブル名です。
権利を更新する列ごとに column=access のペアを使用します。複数の列を更新するにはコンマ (,) で区切り全体を角括弧 ( []?) で囲みます。
[column=access, column=access, column=access] |
このオプションの完全な構文については、第 2 章「NIS+ の紹介」を参照してください。
次の例は、hosts.org_dir.doc.com. テーブルの name および addr 列のグループに、作成権と変更権を追加するものです。
client% nistbladm -u `[name=g+rm,addr=g+rm],hosts.org_dir..doc.com.' |
NIS+ テーブル列のアクセス権を削除するには、上記 「既存のテーブル列に権利を追加する」で説明したように -u オプションを使用します。ただし + 記号を使って権利を追加するのではなく、- 記号を使って権利を削除します。
次の例は、hosts.org_dir.doc.com. テーブルの hostname 列のグループの読み取り権と変更権を削除するものです。
client% nistbladm -u 'name=g-rm,hosts.org_dir.doc.com.' |
nischown コマンドは、1 つ以上のオブジェクトまたはエントリの所有者を変更します。このコマンドを使用するには、オブジェクトまたはエントリに対する変更権が必要です。テーブルの列の所有者はテーブルの所有者であるため、nischown コマンドでは列の所有者を変更できません。列の所有者を変更するには、テーブルの所有者を変更する必要があります。
オブジェクトの所有者を変更するには、次のように入力します。
nischown new-owner object |
引数の意味はそれぞれ以下のとおりです。
new-owner はそのオブジェクトの新規の所有者のユーザー ID で完全指定します。
object は、オブジェクトの完全指定名です。
オブジェクト名と新規所有者名にドメイン名を必ず追加します。
次の例は、doc.com. ドメイン内の hosts テーブルの所有者を、ホームドメインが doc.com. でユーザー名 lincoln であるユーザーに変更するものです。
client% nischown lincoln.doc.com. hosts.org_dir.doc.com. |
テーブルエントリの所有者を変更する構文は、エントリを特定するのにインデックス付きエントリを使います。次に例を示します。この構文の詳細は、「オブジェクトとテーブルエントリの構文」を参照してください。
nischown new-owner [ column=value,...], tablename |
引数の意味はそれぞれ以下のとおりです。
new-owner はそのオブジェクトの新規の所有者のユーザー ID で完全指定します。
column は、所有者を変更するエントリ (行) を特定する値を持った列名です。
value は、所有者を変更するエントリ (行) を特定するデータ値です。
... は、複数のエントリで所有者の変更を指定できることを示します。
tablename は、所有者を変更するエントリを含むテーブルの完全指定名です。
所有者名とテーブル名にドメイン名を必ず追加します。
次の例は、doc.com. ドメインのホストテーブル内のエントリの所有者を、ホームドメインが doc.com. であるユーザー takeda に変更するものです。そのエントリの name 列の値は virginia です。
client% nischown takeda.doc.com. '[name=virginia],hosts.org_dir.doc.com.' |
nischgrp コマンドは、1 つ以上のオブジェクトまたはテーブルエントリのグループ所有者を変更します。このコマンドを使用するには、オブジェクトまたはエントリに対する変更権が必要です。テーブルの列に割り当てられたグループは、テーブルに割り当てられたグループと同じであるため、nischgrp コマンドは、列のグループを変更できません。列のグループ所有者を変更するには、テーブル所有者を変更する必要があります。
オブジェクトのグループを変更するには、次の構文を使用します。
nischgrp group object |
引数の意味はそれぞれ以下のとおりです。
group は、オブジェクトの新規のグループの完全指定名です。
object は、オブジェクトの完全指定名です。
オブジェクト名と新規のグループ名にはドメイン名を必ず追加します。
次の例は、doc.com. ドメイン内の hosts テーブルのグループを admins.doc.com. に変更するものです。
client% nischgrp admins.doc.com. hosts.org_dir.doc.com. |
テーブルエントリのグループを変更する構文は、エントリを識別するためにインデックス付きのエントリを使用します (この構文については、「オブジェクトとテーブルエントリの構文」に詳細説明があります)。以下に構文を示します。
nischgrp new-group [ column=value,...], tablename |
引数の意味はそれぞれ以下のとおりです。
new-group はオブジェクトの新規グループの完全指定名です。
column は変更される特定のエントリ (行) を識別する値を持った列名です。
value は変更されるグループの特定の エントリ (行) を識別するデータ値です。
tablename は変更ことになるグループのエントリを含むテーブルの完全指定名です。
... は、複数エントリのグループの変更を指定できることを示します。
新規グループ名とテーブル名にはドメイン名を必ず追加します。
次の例は、doc.com. ドメインの hosts テーブル内のエントリのグループを sales.doc.com. に変更するものです。そのエントリの name 列の値は virginia です。
client% nischgrp sales.doc.com. '[name=virginia],hosts.org_dir.doc.com.' |