Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)

nisaddent コマンド

nisaddent コマンドは、テキストファイルまたは NIS マップからの情報を NIS+ テーブルにロードします。また、NIS+ テーブルの内容をテキストファイルに逆にダンプできます。NIS+ テーブルを初めて生成する場合は、NIS+ テーブルの生成 (populate)を参照してください。すべての前提条件と関連作業が説明してあります。

nisaddent を使用して、情報をある NIS+ テーブルから別のテーブルに (たとえば、別のドメインの同じ種類のテーブルに) 転送できますが、直接には転送できません。まず、テーブルの内容をファイルにダンプし、次にそのファイルを他のテーブルにロードする必要があります。ただし、ファイル内の情報は正しくフォーマットされていなければなりません。各テーブルに必要なフォーマットについては第 10 章「NIS+ のテーブルと情報」で説明しています。

情報をテーブルにロードするとき、置換 (replace)、追加 (append)、またはマージ (merge) の 3 つのオプションを自由に使用できます。追加オプションは、ソースエントリを NIS+ テーブルに単純に追加します。置換オプションの場合、NIS+ は、まずテーブル内のすべての既存エントリを削除し、次にソースからエントリを追加します。大規模なテーブルでは、これによって多くのエントリセット (1 セットは既存エントリの削除用、他のセットは新エントリの追加用) がテーブルの .log ファイルに追加され、/var/nis 内の領域を占有し、複製への伝達に長時間を要することになります。

マージオプションでは、置換オプションと同じ結果が得られますが、異なるプロセスを使っており、複製に送信する動作数が大幅に減少します。このオプションでは、NIS+ は次の 3 種類のエントリを異なる方法で処理します。

大きなテーブルを更新する場合で、内容の変更があまりないときは、マージオプションを使用するとサーバーは多くの動作を節約できます。ソース内で重複していないエントリだけを削除する (置換オプションは全エントリを無差別に削除する) ため、重複エントリごとに 1 回の削除と 1 回の追加動作を省略できます。

初めてテーブルに情報をロードする場合、テーブルオブジェクトに対する作成権が必要です。テーブル内の既存情報を上書きする場合、テーブルに対する変更権が必要です。

構文

テキストファイルから情報をロードするには、以下のように入力します。


/usr/lib/nis/nisaddent -f filename table-type\[domain]
/usr/lib/nis/nisaddent -f filename \
 -t tablename table-type [domain]

NIS マップから情報をロードするには、以下のように入力します。


/usr/lib/nis/nisaddent -y NISdomain table-type\
  [domain]
/usr/lib/nis/nisaddent -y NISdomain -t tablename table-type [domain]
/usr/lib/nis/nisaddent -Y map table-type [domain]
/usr/lib/nis/nisaddent -Y map -t tablename table-type [domain]

NIS+ テーブルから情報をファイルにダンプするには、以下のように入力します。


/usr/lib/nis/nisaddent -d [-t tablename tabletype ]> filename

ファイルから情報をロードする

ファイルの内容を NIS+ テーブルに転送するには、いくつかの方法があります。


nisaddent -f filename table-type

nisaddent -a -f filename table-type

nisaddent -m -f filename table-type

次に示す 2 つの例では、テキストファイル /etc/passwd.xfr の内容が NIS+ passwd テーブルにロードされます。最初の例ではローカルドメインに、2 番目の例では別のドメインのテーブルにロードされます。


rootmaster# /usr/lib/nis/nisaddent -f /etc/passwd.xfr passwd
rootmaster# /usr/lib/nis/nisaddent -f /etc/shadow.xfr shadow
rootmaster# /usr/lib/nis/nisaddent -f /etc/passwd.xfr passwd sales.doc.com.
rootmaster# /usr/lib/nis/nisaddent -f /etc/shadow.xfr shadow sales.doc.com.

注 –

/etc ディレクトリのファイルから NIS+ passwd テーブルを作成する場合は、nisaddent を 2 回 (/etc/passwd ファイルと /etc/shadow ファイルに対して 1 回ずつ) 実行する必要があります。


/etc/inet/ipnodes ファイル (IPv6 アドレス) のエントリを ipnodes.org_dir テーブルにマージするには、-v オプションと -f オプションを使用します。


rootmaster# /usr/lib/nis/nisaddent -mv -f  /etc/inet/ipnodes ipnodes

もう 1 つの方法では、stdin をソースとして使います。しかし、stdin では -m オプションを使えません。次に例を示します。リダイレクト (>) やパイプ (|) を使用することは可能です。ただし、別のドメインに出力が行われるような形でパイプを使用することはできません。

作業 

コマンド名 

リダイレクト 

cat filename > nisaddent table-type

リダイレクト処理後、追加する 

cat filename > nisaddent -a table-type

リダイレクト処理後、別のドメインに追加する 

cat filename> nisaddent -a table-type NIS+ domain

パイプ 

cat filename | nisaddent table-type

パイプ処理後、追加する 

cat filename | nisaddent -a table-type

NIS+ テーブルが、オートマウンタテーブルの 1 つであるか標準以外のテーブルである場合、-t オプションと NIS+ テーブルの完全な名前を追加します。


master# nisaddent -f /etc/auto_home.xfr \
  -t auto_home.org_dir.doc.com.key-value
master# nisaddent -f /etc/auto_home.xfr \
  -t auto_home.org_dir.doc.com. key-value sales.doc.com.

NIS マップからデータをロードする

NIS マップから情報を転送する方法は 2 つあり、NIS ドメインを指定するか、または実際の NIS マップを指定します。ドメインを指定した場合、NIS+ は、table-type に基づいて、/var/yp/nisdomain 内のどのマップファイルをソースとして使うかを判断します。/var/yp/nisdomain は「ローカル」ファイルでなければなりません。

NIS+ テーブル形式 

NIS マップ名 

Hosts

hosts.byaddr

Nodes

ipnodes.byaddr

Passwd

passwd.byname

Group

group.byaddr

Ethers

ethers.byname

Netmasks

netmasks.byaddr

Networks

networks.byname

Protocols

protocols.byname

RPC

rpc.bynumber

Services

services.byname

NIS ドメインの指定によって転送するには、-y (小文字) オプションを使い、NIS+ テーブル形式に加えて NIS ドメインを指定します。

「テーブルの置換」


nisaddent -y nisdomain table-type

「テーブルの追加」


nisaddent -a -y nisdomain table-type

「テーブルのマージ」


nisaddent -m -y nisdomain table-type

デフォルトでは、nisaddent は NIS+ テーブルの内容を NIS マップの内容に置き換えます。追加またはマージを行うには、-a または -m のオプションを使います。次の例では、対応する NIS マップ (passwd.byname) からの NIS+ passwd テーブルを old-doc ドメインにロードします。


rootmaster# /usr/lib/nis/nisaddent -y old-doc passwd

2 番目の例でも同じことを行いますが、ローカルドメイン doc.com. の代わりに、sales.doc.com. ドメインに対して行います。


rootmaster# /usr/lib/nis/nisaddent -y old-doc passwd sales.doc.com.

NIS+ テーブルが、オートマウンタテーブルの 1 つであるか非標準テーブルである場合、そのソースがファイルであるかのように、-t オプションと NIS テーブルの完全な名前を追加します。


rootmaster# nisaddent -y old-doc \
  -t auto_home.org_dir.doc.com. key-value
rootmaster# nisaddent -y old-doc \
  -t auto_home.org_dir.doc.com. key-value sales.doc.com.

マップファイルをドメイン用に使うのではなく、特定の NIS マップを指定したい場合、-Y (大文字) オプションを使い、マップ名を指定します。オプションを見つけやすいように、次の例では太字にしています。


rootmaster# nisaddent -Y hosts.byname hosts
rootmaster#  nisaddent -Y hosts.byname hosts sales.doc.com.

NIS マップがオートマウンタマップの 1 つであるか非標準マップである場合、-Y オプションと -t オプションを組み合わせます。


rootmaster# nisaddent -Y auto_home \
 -t auto_home.org_dir.doc.com. key-value
rootmaster# nisaddent -Y auto_home \
 -t auto_home.org_dir.doc.com. key-value sales.doc.com.

NIS+ テーブルの内容をファイルにダンプする

NIS+ テーブルの内容をファイルにダンプするには、-d-t のオプションを使います。-d オプションは、ダンプするようコマンドに指示します。-t オプションは、NIS+ テーブルを指定します。


rootmaster# nisaddent -d auto_home \
 -t auto_home.org_dir.doc.com. key-value 
rootmaster# nisaddent -d auto_home \
 -t auto_home.org_dir.doc.com.  key-value sales.doc.com.