NIS+ テーブルに関連した作業には、可能な場合、Solaris 管理コンソール ツールを使用するとより簡単にできるものがあります。
nistbladm コマンドは NIS+ テーブル管理コマンドの中でもっとも重要なコマンドであり、NIS+ ディレクトリオブジェクトに格納されている NIS+ テーブル上で使います。nistbladm コマンドを使うと、NIS+ テーブルまたはそのエントリを作成、修正、削除できます。ただし、ディレクトリのないところにテーブルを作成はできません。同様に、テーブルと列が定義されていないところにエントリを追加できません。
テーブルを作成するには、そのテーブルが所属するディレクトリに対する作成権が必要です。テーブルを削除するには、そのディレクトリに対する削除権が必要です。テーブルの内容を変更 (エントリの追加、変更、または削除) するには、そのテーブルまたはエントリの変更権が必要です。
nistbladm コマンドの一般的な構文は次のとおりです。
nistbladm options \ [columspec | columnvalue] \ [tablename | indexedname] |
引数の意味はそれぞれ以下のとおりです。
columnspec には、テーブル内に作成する列を指定する (具体的な指定方法については、「テーブルの列を指定する」を参照)
columnvalue には、tablename によって表されるテーブルの中の特定のセルを指定する (具体的な指定方法については、「nistbladm と列の値」を参照)
tablename には、テーブル名 (hosts.org_dir.doc.com. など) を指定する
indexedname には、特定のテーブルの中の特定のセル値を指定する (具体的な指定方法については、「nistbladm と列の値」を参照) 。indexedname は本質的に、columnvalue と tablename の役割を兼ね備えている
オプション |
説明 |
---|---|
-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 コマンドであっても強制的に実行される (「エントリを修正する」を参照) |
列の値は、テーブル内の個々のエントリを識別するために使われます。列の値の書式は次のとおりです。
columname="value", \ columnname="value", ... |
引数の意味はそれぞれ以下のとおりです。
columname はテーブルの列名を示す
value は列内の特定のセルの内容 (値) を示す。この値により、テーブルの行を識別することができる (column=value を指定してテーブルデータを作成または修正する場合は、必ず value を引用符で囲むこと)
たとえば、マシン名と IP アドレスを登録した hosts という名前のテーブルがあるとします。
表 19–2 hosts テーブルの例
IP アドレス |
名前 |
別名 |
---|---|---|
172.22.168.4 |
altair | |
172.22.168.119 |
deneb |
|
172.22.168.120 |
regulus |
dnsmaster |
172.22.168.121 |
regulus |
dnsmaster |
172.22.168.11 |
sirius |
このサンプルテーブルの altair エントリ (行) を識別するには、次の 3 通りの column=value の指定方法が考えられます。
name=altair
address=172.22.168.4
name=altair,address=172.22.168.4
上記のテーブルで注目すべき点としては、regulus という名前のマルチホームマシンに 2 つの IP アドレスが割り当てられていることです。この場合、ホストマシン regulus の column=value は 2 つの行を示します。そこで、最初の regulus 行だけを識別したいという場合は次のいずれかを入力します。
address=172.22.168.120 or
address=172.22.168.120.,name=regulus,dnsmaster
nistbladm コマンドの一部のオプションには、テーブル内のすべての列に column=value を指定しなければならないものがあります。
NIS+ テーブルを作成する際は、S フラグまたは I フラグを指定し、1 つまたは複数の列が検索可能になるようにします (「テーブルの列を指定する」を参照)。なお、niscat -o tablename と入力すれば、テーブルの列とその特性を一覧表示できます。
テーブル内で行の「識別」に使われるのが検索可能列です。検索可能列の値 (値の組み合わせ) はすべて一意でなければなりません。したがって、検索可能列が 1 つしかないテーブルの場合、各行の検索可能列の値はすべて一意でなければならず、重複は一切許されません。
ここで、city という名前の検索可能列と country という名前の検索不可列からなるテーブルを作成する場合を想定します。次に示すのは、正しい (検索可能列の値の組み合わせに重複がない) テーブルの例です。
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+ のコマンドはいずれも、検索可能列の値に基づいて特定の行を識別します。
NIS+ には、テーブル名と列の値の検索基準の組み合わせ (これを「インデックス名」という) によって特定のテーブルの特定のエントリを識別する、というテーブル管理の方法もあります。インデックス名の書式は次のとおりです。
[search_criteria],tablename.directory |
search_criteria には検索基準を指定しますが、このとき角カッコ ([]) で囲むのを忘れないでください。書式は次のとおりです。
columname=value, \ columname=value,... |
columname=value にはテーブルの検索可能列の値を指定します (「nistbladm と列の値」を参照)。
たとえば、表 19–2 の altair エントリを識別するには、次のようにインデックス名を指定します。
[addr=172.22.168.4,cname=altair],hosts.org_dir.doc.com. |
nistbladm -R コマンドを使用すると、間になにも入れない角カッコ [ ]をすべてのテーブル列を指定するワイルドカードとして使用し、テーブル中のすべてのエントリを一度に削除できます。
Solaris の NIS+ 環境には 3 種類のグループがあります。
「UNIX グループ」。UNIX グループに関する情報は groups.org_dir テーブルに格納される。UNIX グループ情報の管理には nistbladm コマンドを使う
「ネットグループ」。ネットグループに関する情報は netgroups.org_dir テーブルに格納される。ネットグループ情報の管理には nistbladm コマンドを使う
「NIS+ グループ」。NIS+ グループに関する情報は groups_dir ディレクトリオブジェクトのテーブル (1 つまたは複数) に格納される。NIS+ グループ情報の管理には nisgrpadm コマンドを使う
NIS+ グループの管理に nistbladm を使うことはできません。
その他のグループの詳細は、「Solaris グループ」を参照してください。