Solaris ネーミングの管理

nistbladm コマンド


注 -

NIS+ テーブルに関連した作業のうちいくつかは、Solstice AdminSuite ツールを使用すると容易に行えます。


nistbladm コマンドは NIS+ テーブル管理コマンドの中でも最も重要なコマンドであり、NIS+ ディレクトリオブジェクトに格納されている NIS+ テーブル上で使います。nistbladm コマンドを使うと、NIS+ テーブルまたはそのエントリを作成、修正、削除できます。ただし、ディレクトリのないところにテーブルを作成はできません。同様に、テーブルと列が定義されていないところにエントリを追加できません。

テーブルを作成するには、そのテーブルが所属するディレクトリに対する作成権が必要です。テーブルを削除するには、そのディレクトリに対する削除権が必要です。テーブルの内容を変更 (エントリの追加、変更、または削除) するには、そのテーブルまたはエントリの変更権が必要です。

nistbladm 構文

nistbladm コマンドの一般的な構文は次のとおりです。


nistbladm -a column=" value" ¥
  column=" value" ¥
  column=" value" ¥
  ... tablename
nistbladm -a indexedname

nistbladm options ¥
  [columspec | columnvalue] ¥
  [tablename | indexedname ]
表 14-1 nistbladm コマンドのオプション

オプション 

説明 

-a | -A

既存の NIS+ テーブルにエントリを追加する。-a を指定した場合、nistbladm コマンドを実行すると既存のエントリが上書きされる場合には、エラーが返される。-A を指定した場合、nistbladm コマンドが既存エントリを上書きする場合でも強制的に実行される (「エントリをテーブルに追加する」を参照)

-D defaults

別のデフォルト特性を使ってオブジェクトを作成する (詳細は、デフォルトの nistbladm(1) のマニュアルページを参照)

-d

テーブルを破棄する (「テーブルを削除する」を参照)

-c

テーブルを作成する ( 「テーブルを作成する」を参照)

-r | -R

既存の NIS+ テーブルからエントリ (1 つまたは複数) を削除する。-r を指定した場合、複数のエントリの削除につながる nistbladm コマンドは実行されず、エラーが返される。-R を指定した場合、複数のエントリの削除につながる nistbladm コマンドであっても強制的に実行される (「テーブルからエントリを削除する」を参照)

-m

テーブルエントリを修正するためのオプション。旧リリースとの互換性を維持するためにだけ残されている。エントリを修正するのであれば、-e オプションまたは -E オプションを使うほうが望ましい

-e | -E

既存の NIS+ テーブルのエントリを修正する。-e を指定した場合、複数のエントリの変更につながる nistbladm コマンドは実行されず、エラーが返される。-E を指定した場合、複数のエントリの変更につながる nistbladm コマンドであっても強制的に実行される (「エントリを修正する」を参照)

nistbladm と列の値

列の値は、テーブル内の個々のエントリを識別するために使われます。列の値の書式は次のとおりです。


columname="value", ¥
 columnname="value ", ...

たとえば、マシン名と IP アドレスを登録した hosts という名前のテーブルがあるとします。

表 14-2 サンプルテーブル hosts

IP アドレス 

名前 

別名 

129.146.168.4

altair

 

129.146.168.119

deneb

mail

129.146.168.120

regulus

dnsmaster

129.146.168.121

regulus

dnsmaster

129.146.168.11

sirius

 

このサンプルテーブルの altair エントリ (行) を識別するには、次の 3 通りの column=value の指定方法が考えられます。

上記のテーブルで注目すべき点としては、regulus という名前のマルチホームマシンに 2 つの IP アドレスが割り当てられていることです。この場合、ホストマシン regulus の column=value は 2 つの行を示します。そこで、最初の regulus 行だけを識別したいという場合は次のいずれかを入力します。


注 -

nistbladm コマンドの一部のオプションには、テーブル内のすべての列に column=value を指定しなければならないものがあります。


nistbladm、検索可能列、キー nistbladm、列の値

NIS+ テーブルを作成する際は、S フラグまたは I フラグを指定し、1 つまたは複数の列が検索可能になるようにします (「テーブルの列を指定する」を参照)。なお、niscat -o tablename と入力すれば、テーブルの列とその特性を一覧表示できます。

テーブル内で行の「識別」に使われるのが検索可能列です。検索可能列の値 (値の組み合わせ) はすべて一意でなければなりません。したがって、検索可能列が 1 つしかないテーブルの場合、各行の検索可能列の値はすべて一意でなければならず、重複は一切許されません。

ここで、city という名前の検索可能列と country という名前の検索不可列からなるテーブルを作成する場合を想定します。次に示すのは、正しい (City 列に重複がない) テーブルの例です。

City 

Country 

San Francisco 

United States 

Santa Fe 

United States 

Santiago 

Chile 

次は正しくない (City 列に重複がある) テーブルの例です。

City 

Country 

London 

Canada 

London 

England 

1 つのテーブルに検索可能列が複数ある場合は、検索可能列どうしの値の組み合わせが一意であればかまいません。ここでは、Lastname および Firstname という 2 つの検索可能列と、city という検索不可列からなるテーブルを作成する場合を想定します。次に示すのは、正しい (検索可能列の値の組み合わせに重複がない) テーブルの例です。

Lastname 

Firstname 

City 

Kuznetsov 

Sergei 

Odessa 

Kuznetsov 

Rima 

Odessa 

Sergei 

Alex 

Odessa 

次は正しくない (検索可能列の値の組み合わせに重複がある) テーブルの例です。

Lastname 

Firstname 

City 

Kuznetsov 

Rima 

Odessa 

Kuznetsov 

Rima 

Chelm 

NIS+ のコマンドはいずれも、検索可能列の値に基づいて特定の行を識別します。

nistbladm とインデックス名

NIS+ には、テーブル名と列の値の検索基準の組み合わせ (これを「インデックス名」という) によって特定のテーブルの特定のエントリを識別する、というテーブル管理の方法もあります。インデックス名の書式は次のとおりです。


[search_criteria], tablename.directory

search_criteria には検索基準を指定しますが、このとき角カッコ ([]) で囲むのを忘れないでください。書式は次のとおりです。


columname=value, ¥
 columname=value ,...

columname=value にはテーブルの検索可能列の値を指定します (「nistbladm と列の値」を参照)。

たとえば、表 14-2altair エントリを識別するには、次のようにインデックス名を指定します。


[addr=129.146.168.4,cname=altair],hosts.org_dir.doc.com.

nistbladm -R コマンドを使用すると、間になにも入れない角カッコ [ ]をすべてのテーブル列を指定するワイルドカードとして使用し、テーブル中のすべてのエントリを一度に削除できます。

nistbladm とグループ

Solaris の NIS+ 環境には 3 種類のグループがあります。


注 -

NIS+ グループの管理に nistbladm を使うことはできません。


その他のグループの詳細は、「Solaris グループ」を参照してください。