この章では、NIS+ コマンドセットを使用して、/etc ディレクトリ内のファイルや NIS マップからマスターサーバー上に NIS+ テーブルを作成する方法について説明します。また、この章では NIS+ テーブルから NIS マップへ情報を戻す方法と、passwd テーブルのパスワード列へのアクセスを制限する方法を説明します。
NIS+ は、将来のリリースではサポートされなくなる可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 リリース以降で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。
NIS+ テーブルを生成する作業は、この章で説明する NIS+ コマンドセットを使用する方法よりも、パート I で説明した NIS+ 設定スクリプトを使用した場合の方が簡単です。この章で説明する方法は、NIS+ に精通した管理者や、設定スクリプトでは提供されない標準以外の機能や構成を必要とする管理者だけが使用してください。さらに、Solaris 管理コンソール ツールをお持ちの場合は、NIS+ テーブルに関連する作業が簡単になります。
NIS+ テーブルを生成するには次の 4 種類の方法があります。
ファイルから作成する (「NIS+ テーブルをファイルから生成する」参照)
NIS マップから作成する (「NIS+ テーブルを NIS マップから生成する」参照)
nispopulate スクリプトを使用して作成する (「NIS+ テーブルの生成 (populate)」および 「新しいサブドメインのテーブルの生成」参照)
可能な場合、Solaris 管理コンソール ツールを使用する
マップまたはファイルからテーブルを生成する場合、第 5 章「ルートドメインの設定」および第 8 章「ルート以外のドメインの構成」で説明する手順に従って、ルートまたはサブドメインの設定作業の中で、あらかじめテーブルを作成しておく必要があります。ドメインテーブルは、テーブルの作成後いつでも生成できますが、ドメインの設定が完了したらすぐに生成しておくことをお勧めします。テーブルを生成すると、クライアントに関する必要な情報がすでにドメインテーブル内に格納されることになるため、クライアントの追加が簡単にできます。
ファイルまたは NIS マップからテーブルを生成する場合、次の 3 つの方法を使用できます。
「置換」- この方法を使用すると、NIS+ は、初めにテーブル内の既存のエントリをすべて削除してから、情報源からのエントリを追加します。サイズの大きいテーブルの場合は、マスターサーバーの /var/nis/trans.log ファイルにエントリの大きなセット (既存のエントリを削除するためのセットと新しいエントリを追加するためのセット) が追加されます。/var/nis 内のディスク空間を大幅に使用するため、複製サーバーへの転送時間はさらに長くなります。
「追加」- この方法は、NIS+ テーブルに情報源からのエントリを追加します。既存のエントリが影響されることはありません。
「マージ」- この方法は、置換オプションと結果は同じですが、内部的な処理が異なります。既存のエントリを削除後、置換するのではなく、更新します。このオプションでは、NIS+ は次の 3 種類のエントリを異なる方法で処理します。
ソース内にだけ存在するエントリは、テーブルに追加する
ソースとテーブルの両方に存在するエントリは、テーブル内で更新する
NIS+ テーブルにだけ存在するエントリは、テーブルから削除する
大きなテーブルを更新する場合で、内容の変更があまりないときは、マージオプションを使用するとサーバーは多くの動作を節約できます。ソース内で重複していないエントリだけを削除する (置換オプションは全エントリを無差別に削除する) ため、重複エントリごとに 1 回の削除と 1 回の追加動作を省略できます。このため、この方法をお勧めします。
これは /etc/hosts などの ASCII ファイルの内容を NIS+ テーブルに転送する作業です。
手順を次に示します。
データを転送する各ファイルの内容を確認します。
各ファイルのコピーを作成します。作成したコピーを実際の転送に使用します。このマニュアルでは、hosts.xfr のように、転送されるファイルのコピーの最後に .xfr を付けます。
NIS+ クライアントにログインするテーブルを更新するための資格とアクセス権が必要です。以下の 「ファイルからテーブルを生成する場合のセキュリティについて」を参照してください。
nisaddent を使用して、次の必要なファイルを 1 つずつ転送します。aliases
, bootparams, ethers, group, hosts, netgroup, netmasks, networks, passwd, protocols, rpc, services, shadow
、および ipnodes。
新しい /etc/inet/ipnodes ファイルには、IPv4 および IPv6 のアドレスが含まれています。nisaddent を実行して、 /etc/inet/ipnodes ファイルを ipnodes.org_dir テーブルに変換してください。
publickey ファイルを転送する
オートマウンタ情報を転送します。
複製サーバーに対して nisping を実行します。
テーブルに対しチェックポイントを実行します。
NIS+ テーブルは、NIS+ クライアントまたは NIS+ ルートマスターサーバーから生成できます。NIS+ テーブルを生成するには、スーパーユーザー (root) としてログインする必要はありませんが、一定の資格とアクセス権は必要です。テーブル内のエントリをテキストファイルのエントリによって置換またはマージする場合、そのテーブルへの作成権と削除権が必要です。新しいエントリを追加する場合、作成権だけが必要です。
NIS+ のセキュリティシステムは複雑です。NIS+ セキュリティを使い慣れていない場合は、第 11 章「NIS+ のセキュリティの概要」を参照してから NIS+ 環境を構成することをお勧めします。
この処理が完了した後、テーブルエントリは、動作を実行した NIS+ 主体と、環境変数 NIS_GROUP
によって指定されたグループによって所有されます。
ドメインをあらかじめ設定していて、そのマスターサーバーを実行している
ドメインのサーバーには、新しいテーブル情報を収容できるだけの十分なスワップ領域が必要
ファイル内の情報は、ロード先のテーブルに合った書式で書かれていなければならない。対応する NIS+ テーブルに転送するテキストファイルで要求される書式については、「nispopulate を実行してルートサーバーテーブルを生成するための前提条件」を参照してください。ローカルの /etc 内のファイルは、正しい書式で書かれているのが普通ですが、いくつかのコメントを削除しなければならないこともあります。
マシン名とユーザー名は重複していない。ユーザーとマシンは、すべて固有の名前を付ける必要があります。また、ユーザーと同じ名前の付いたマシンは使用できません。
マシン名にはドット (ピリオド) および下線は使用できない。たとえば、マシン名に sales.alpha を使用できません。ドットや下線の代わりにハイフンを使うことはできます。たとえば、sales-alpha というマシン名は有効です。
転送されるテキストファイルの名前と位置が必要です。
作業 |
目的 |
参照先 |
|
---|---|---|---|
NIS+ テーブルをファイルから生成する |
NIS+ テーブルをファイルから生成する |
データを転送する各ファイルをチェックします。
不正なエントリがないことを確認します。正しいデータが、所定の場所に正しい書式で記録されていることを確認します。エントリのうち、古いもの、無効なもの、破損しているものは削除します。また、不完全なエントリや一部のみのエントリも削除します。不完全なエントリは、設定を完了した後に追加する方が、不完全なエントリや破損したエントリを転送するよりも簡単です。
転送する各ファイルの作業用コピーを作成します。
このセクションで説明する実際のファイル転送の手順では、作成した作業用コピーを使用します。各作業用コピーには、同じファイル名拡張子を付けます (たとえば、.xfr)。
rootmaster% cp /etc/hosts /etc/hosts.xfr |
万が一に備えて、使用する予定のすべてのファイルを /etc 以外のディレクトリにコピーしておくのもよいでしょう。nisaddent コマンドと nispopulate コマンドでは、ファイルソースディレクトリを指定できます。
NIS+ クライアントにログインする
この作業はどの NIS+ クライアントからでも実行できます。ただし、そのクライアントは、情報の転送先となるテーブルと同じドメインに所属していなければなりません。ここで示す例では、ルートマスターサーバーを使用します。これらの例では、システム管理者はスーパーユーザーとしてログインしているため、この操作を実際に実行している (適切な資格とアクセス権を必要とする) NIS+ 主体は、ルートマスターサーバーです。
しかし、NIS+ テーブルを更新するだけであれば、あえてルートマスターサーバーにスーパーユーザー (root) としてログインする必要はありません。スーパーユーザーであれ、一般ユーザーであれ、一定の資格、権限、許可さえあれば、どのマシンからでも NIS+ テーブルを更新できます。
このシェルのコマンド検索パスに /usr/lib/nis を追加します。
テーブルごとに /usr/lib/nis/nisaddent コマンドを使用するため、検索パスに /usr/lib/nis を追加しておくと、毎回これを入力する必要がありません。ここでは、C シェルユーザーの場合の例と Bourne シェルまたは Korn シェルのユーザーの場合の例を示します。
C シェルの場合
rootmaster# setenv PATH $PATH:/usr/lib/nis |
Bourne シェルまたは Korn シェルの場合
rootmaster# PATH=$PATH:/usr/lib/nis rootmaster# export PATH |
nisaddent を使用して、次のファイルを 1 つずつ転送します。
aliases bootparams ethers group hosts ipnodes netgroup netmasks networks protocols rpc, services |
publickey、automounter、passwd、および shadow の各ファイルは、実行する手順がそれぞれ少し異なります。publickey ファイルの場合は、手順 6 に進んでください。automounter ファイルの場合は、手順 7 に進んでください。passwd および shadow ファイルの場合は、手順 8 に進んでください。
デフォルトでは、nisaddent はファイル情報をテーブル情報に追加します。置換またはマージを行うには、-r または -m オプションを使用します。
rootmaster# nisaddent -r -f filename table[domain] |
追加する場合、次のように入力します。
rootmaster# nisaddent -a -f filename table [domain] |
マージする場合、次のように入力します。
rootmaster# nisaddent -m -f filename table [domain] |
はじめてテーブルを生成する場合は、デフォルトの -a オプションが最適です。NIS+ テーブルを NIS マップまたは /etc 内のファイルと同期させるための最適なオプションは -m (マージ) オプションです。
filename はファイル名です。通常は、nisaddent によって作成されたことを示す .xfr をファイル名の最後につけます。
table は NIS+ テーブル名です。domain 引数は省略可能で、テーブルを別のドメインに生成するときに使用します。ルートドメインのマスターサーバーから入力されたいくつかの例を次に示します。これらのファイルは、/etc 内のファイルを編集したものです。
rootmaster# nisaddent -m -f /etc/hosts.xfr hosts rootmaster# nisaddent -m -f /etc/groups.xfr groups |
この作業をルート以外のサーバーから実行する場合、ルート以外のサーバーは、サポートするドメインの上のドメインに所属することに注意してください。つまり、ルート以外のサーバーはもう 1 つのドメインのクライアントです。たとえば、sales.doc.com. マスターサーバーは doc.com. ドメインに所属します。そのマスターサーバーからテーブルを sales.doc.com. ドメインに生成するには、nisaddent 文に sales.doc.com. ドメイン名を追加する必要があります。
salesmaster# nisaddent -f /etc/hosts.xfr hosts Sales.doc.com. |
この作業を sales.doc.com. ドメインのクライアントとして実行した場合、このコマンドにドメイン名を指定する必要はありません。
エントリが NIS+ テーブルに転送されたことを確認するには、niscat コマンドを使用します。詳細については、第 19 章「NIS+ テーブルの管理」を参照してください。
rootmaster# niscat groups.org_dir root::0:root other::1:: bin::2:root,bin,daemon . |
障害追跡のヒント: niscat を実行しても表示された内容が反映されていない場合、変更がマスターサーバーから複製サーバーに送られていないためかもしれません。そのような場合は、5 〜 10 分後にもう一度 niscat の実行を試みるか、niscat に -M オプションを付けて実行してください。-M オプションを付けると、マスターサーバーのデータが取得されます。
publickey ファイルを転送します。
ドメインの cred テーブルには、すでにいくつかの資格が格納されているため、この cred テーブルに転送する publickey テキストファイルの内容によって、これらの資格が上書きされないよう確認する必要があります。これを避けるには、publickey テキストファイルからこれらの資格を取り除きます。rootmaster で次のような行がある場合は、すべて削除してください。
unix.rootmaster@doc.com public-key:private-key [alg-type] |
こうすれば、publickey ファイルの内容を cred テーブルに転送できます。nisaddent に -a (追加) オプションを付けて実行します。
rootmaster# nisaddent -a -f /etc/publickey.xfr -t cred.org_dir publickey [domain] |
ただし、この操作は DES 資格を cred テーブルに転送するだけです。主体は、cred テーブルに対する自分の LOCAL 資格を作成する必要があります。
オートマウンタ情報を転送します。
nissetup ユーティリティは auto_master テーブルと auto_home テーブルを作成しますが、これらは標準の NIS+ テーブルとはみなされません。したがって、これらのテーブルに情報を転送するには、少し異なる構文が必要となります。特に、-t フラグを使用し、そのテーブルが key-value 形式であることを指定しなければなりません。
rootmaster# nisaddent -f auto.master.xfr -t auto_master.org_dir key-value rootmaster# nisaddent -f auto.home.xfr -t auto_home.org_dir key-value |
NIS+ passwd テーブルを作成します。
NIS+ の passwd テーブルは、/etc/passwd および /etc/shadow の両方のディレクトリのファイルから引き出されるデータで構成されます。このため、nisaddent を 2 回実行して passwd テーブルを作成しなければなりません。passwd テーブルを対象として /etc/passwd ファイルからデータを引き出す場合と、shadow テーブルを対象として /etc/shadow ファイルからデータを引き出す場合の 2 回実行します。shadow ファイルに対して nisaddent を実行する場合、shadow テーブルが存在しなくても、ターゲットテーブルに shadow を指定すること、そしてデータが実際に passwd テーブルの shadow 列に配置されることに注意してください。
rootmaster# nisaddent -m -f /etc/passwd.xfr passwd rootmaster# nisaddent -m -f /etc/shadow.xfr shadow |
nisping を実行して更新内容を複製サーバーに送ります。
nisping を実行すると、複製サーバーに変更が反映されます。
master1# nisping domain master1# nisping org_dir.domaincom. master1# nisping groups_dir.domain |
テーブルに対しチェックポイントを実行します。
ここまでの手順で、マスターサーバーと複製サーバーの NIS+ データセットがメモリー内で更新されました。今度はそれをディスク上のテーブルファイルに書き込みます。この作業を「チェックポイント」といいます。チェックポイントは必ずしもここで実行しなければならないわけではありません。定期的に実行していれば、問題ありません。ただし、重要な変更を加えた場合には、できるだけ早めにディスクに書き込むことをお勧めします。
この手順により、ドメインをサポートしている全サーバーが、それらの .log ファイルからディスク上のテーブルのコピーに新しい情報を転送します。ルートドメインを設定したばかりの場合、そのルートドメインにはまだ複製サーバーがないため、この手順はルートマスターサーバーだけが対象となります。チェックポイントを実行するには nisping コマンドに -C (大文字) オプションを付けて実行します。
rootmaster# nisping -C org_dir Checkpointing replicas serving directory org_dir.doc.com. : Master server is rootmaster.doc.com. Last update occurred at July 14, 1997 Master server is rootmaster.doc.com. checkpoint succeeded. |
スワップ空間が不足している場合、サーバーはチェックポイントを正常に実行できませんが、そのことを通知してくれません。スワップ空間が十分あることを確認する方法として、niscat コマンドを使ってテーブルの内容をリスト表示する方法があります。スワップ空間が不足している場合、次のエラーメッセージが表示されます。
can't list table: Server busy, Try Again. |
このメッセージ内容からはわかりませんが、これはスワップ空間の不足を示しています。スワップ空間を増やし、このドメインに再びチェックポイントを実行します。
ここでは、NIS マップの内容を NIS+ テーブルに転送します。手順を次に示します。
データを転送する各 NIS マップの内容を確認します。
NIS+ クライアントにログインする
nisaddent を使用して、次のマップを 1 度に 1 つずつ転送します。aliases, bootparams, ethers, group, hosts, netgroup, netmasks, networks, passwd, protocols, rpc, services。
publickey マップを転送します。
オートマウンタ情報を転送します。
nisping を実行して変更内容を複製サーバーに反映させます。
テーブルに対しチェックポイントを実行します。
この作業を行うシステム管理者 (またはクライアント上のスーパーユーザー) に適切な資格とアクセス権がある限り、この作業は、どの NIS+ クライアントからでも実行できます。テーブル内のエントリを NIS マップのエントリで置換またはマージする場合、そのテーブルへの作成権と削除権が必要です。新しいエントリを追加する場合、作成権だけが必要です。
この作業が完了した後、テーブルエントリは、作業を実行した NIS+ 主体 (システム管理者である自分、またはスーパーユーザーとしてログインした場合はそのクライアント) と、環境変数 NIS_GROUP
によって指定されたグループによって所有されます。
ドメインをあらかじめ設定していて、そのマスターサーバーを実行している
NIS+ テーブルにロードしようとしている NIS マップ用の dbm ファイル (.pag および .dir ファイル) は、/var/yp のサブディレクトリ内にある
マシン名とユーザー名は重複していない。ユーザーとマシンは、すべて固有の名前を付ける必要があります。また、ユーザーと同じ名前の付いたマシンは使用できません。
マシン名にはドット (ピリオド) を使用できない。たとえば、マシン名に sales.alpha を使用できません。sales-alpha というマシン名は、使用できます。
NIS マップの名前と位置が必要です。
作業 |
目的 |
参照先 |
|
---|---|---|---|
NIS+ テーブルを NIS マップから生成する |
NIS+ テーブルを NIS マップから生成する |
データを転送する各 NIS マップをチェックします。
不正なエントリがないことを確認します。正しいデータが、所定の場所に正しい書式で記録されていることを確認します。エントリのうち、古いもの、無効なもの、破損しているものは削除します。また、不完全なエントリや一部のみのエントリも削除します。不完全なエントリは、設定を完了した後に追加する方が、不完全なエントリや破損したエントリを転送するよりも簡単です。
NIS+ クライアントにログインする
この作業はどの NIS+ クライアントからでも実行できます。ただし、そのクライアントは、情報の転送先となるテーブルと同じドメインに所属していなければなりません。ここで示す例では、ルートマスターサーバーを使用します。これらの例では、システム管理者はスーパーユーザーとしてログインしているため、この操作を実際に実行している (適切な資格とアクセス権を必要とする) NIS+ 主体は、ルートマスターサーバーです。
このシェルのコマンド検索パスに /usr/lib/nis を追加します。
テーブルごとに /usr/lib/nis/nisaddent コマンドを使用するため、コマンド検索パスに /usr/lib/nis を追加しておくと、毎回これを入力する必要がありません。ここでは、C シェルユーザーの場合の例と Bourne シェルまたは Korn シェルのユーザーの場合の例を示します。
C シェルの場合
rootmaster# setenv PATH $PATH:/usr/lib/nis |
Bourne シェルまたは Korn シェルの場合
rootmaster# PATH=$PATH:/usr/lib/nis rootmaster# export PATH |
nisaddent を使用して、次のマップを 1 度に 1 つずつ転送します。
aliases, bootparams, ethers, group, hosts, netgroup, netmasks, networks, passwd, protocols, rpc, services。
publickey とオートマウンタマップでは、少し手順が異なります。publickey ファイルの場合は手順 6 に、オートマウンタファイルの場合は手順 7 に進んでください。
デフォルトでは、nisaddent はファイル情報をテーブル情報に追加します。置換またはマージを行うには、-r または -m のオプションを使用します。
置換する場合、次のように入力します。
rootmaster# nisaddent -r -y nisdomain table |
追加する場合、次のように入力します。
rootmaster# nisaddent -a -y nisdomain table |
マージする場合、次のように入力します。
rootmaster# nisaddent -m -y nisdomain table |
はじめてテーブルを生成するときに最適なオプションは、デフォルトの -a オプションです。NIS+ テーブルを NIS マップまたは /etc 内のファイルと同期させるための最適なオプションは -m (マージ) オプションです。
-y (小文字) オプションは、テキストファイルではなく、NIS ドメインを示します。nisdomain 引数は、ユーザーが NIS+ テーブルに転送しようとしているマップを持つ NIS ドメインの名前です。実際のマップを指定する必要はありません。nisaddent ユーティリティは、table 引数に対応する NIS マップを自動的に選択します。次に例をいくつか示します。
rootmaster# nisaddent -m -y olddoc hosts rootmaster# nisaddent -m -y olddoc passwd rootmaster# nisaddent -m -y olddoc groups |
最初の例では、olddoc (NIS) ドメイン内の hosts.byname
マップと hosts.byaddr
マップの内容を、ルートドメイン (NIS+) 内の NIS+ hosts テーブルに転送します。2 番目の例では、パスワード関連情報を格納している NIS マップを、NIS+Passwd テーブルに転送します。3 番目の例では、グループ関連情報で同じことを実行します。nisaddent コマンドの詳細については、第 19 章「NIS+ テーブルの管理」を参照してください。
ドメインの cred テーブルには、すでにいくつかの資格が格納されているため、cred テーブルに転送する publickey
マップの内容によって、これらの資格が上書きされないように確認する必要があります。
初めに、publickey
マップをファイルにダンプします。続いて、テキストエディタでそのファイルをオープンします。 たとえば、次のように入力します。
rootmaster# makedbm -u /var/yp/olddoc/publickey.byname \ /etc/publickey.xfr rootmaster# vi /tmp/publickey.tmp |
publickey マップから、ログインしているマシンの資格を削除します。
rootmaster に対しては、次のような行は、すべて削除してください。
unix.rootmaster@doc.com public-key:private-key [alg-type] |
これにより、マップではなく「ファイル」の内容を cred テーブルに転送できます。nisaddent に -a (追加) オプションを付けて実行します。
rootmaster# nisaddent -a -f /etc/publickey.xfr -t cred.org_dir Publickey |
ただし、この操作は DES 資格を cred テーブルに転送するだけです。cred テーブルに対する自分の LOCAL 資格は自分で作成する必要があります。
オートマウンタ情報を転送します。
nissetup ユーティリティは auto_master テーブルと auto_home テーブルを作成しますが、これらは標準の NIS+ テーブルとはみなされません。したがって、これらのテーブルに情報を転送するには、少し異なる構文が必要となります。
rootmaster# nisaddent -y olddoc -Y auto.master -t auto_master.org_dir key-value rootmaster# nisaddent -y olddoc -Y auto.home -t auto_home.org_dir key-value |
NIS ドメイン名 (この例では olddoc) と同様、-m と -y のオプションが必要です。しかし、NIS マップ名 (auto.master
など) の前には -Y (大文字) を付けなければなりません。次に、オートマウンタの「テキストファイル」を転送するときに必要なように、標準の NIS+ テーブルであることを示す -t オプションを使用しなければなりません。この引数は、NIS+ ディレクトリオブジェクト (auto_master.org_dir) とテーブルの種類 (key-value) です。NIS+ テーブル名の後ろには必ず接尾辞 org_dir を追加してください。
nisping を実行して更新内容を複製サーバーに送ります。
nisping を実行すると、複製サーバーに変更が反映されます。
master1# nisping domain master1# nisping org_dir.domaincom. master1# nisping groups_dir.domain |
テーブルに対しチェックポイントを実行します。
この手順により、ドメインをサポートしている全サーバーが、それらの .log ファイルからディスク上のテーブルのコピーに新しい情報を転送します。ルートドメインを設定したばかりの場合、そのルートドメインにはまだ複製サーバーがないため、この手順はルートマスターサーバーだけが対象となります。nisping コマンドに -C (大文字) オプションを付けて実行します。
rootmaster# nisping -C org_dir Checkpointing replicas serving directory org_dir.doc.com. : Master server is rootmaster.doc.com. Last update occurred at July 14, 1994 Master server is rootmaster.doc.com. checkpoint succeeded. |
スワップ空間が不足している場合、サーバーはチェックポイントを正常に実行できませんが、そのことを通知しません。スワップ空間が十分あることを確認する方法として、niscat コマンドを使ってテーブルの内容をリスト表示する方法があります。スワップ空間が不足している場合、次のエラーメッセージが表示されます。
can't list table: Server busy, Try Again. |
このメッセージ内容からはわかりませんが、これはスワップ空間の不足を示しています。スワップ空間を増やし、このドメインに再びチェックポイントを実行します。
ここでは、NIS+ テーブルの内容を、Solaris 1.x の NIS マスターサーバー上の NIS マップに転送します。手順を次に示します。
NIS+ サーバーにログインします。
NIS+ テーブルを出力ファイルに転送します。
出力ファイルの内容を NIS マップに転送します。
この作業を実行するには、内容を転送する各テーブルへの読み取り権が必要です。
マップを NIS サーバー上にあらかじめ作成しておかなければなりません。
作業 |
目的 |
参照先 |
|
---|---|---|---|
NIS+ から NIS に情報を転送する |
NIS+ テーブルから Solaris 1.x の NIS のマスターサーバー上の NIS マップに情報を転送する |
NIS+ サーバーにログインします。
この例では、dualserver という名前のサーバーを使用します。
NIS+ テーブルを出力ファイルに転送します。
次に示すように、各テーブルごとに 1 回、-d オプションを付けた nisaddent コマンドを使用します。
dualserver% /usr/lib/nis/nisaddent -d -t table tabletype > filename |
-d オプションは、table の内容を /etc 内の標準のファイル形式に変換して filename に出力します。
出力ファイルの内容を NIS マップに転送します。
NIS+ の出力ファイルは、NIS マップ用の入力ファイルとして使用できる ASCII ファイルです。これらを NIS マスターの /etc ディレクトリにコピーし、通常の方法で make を実行します。
dualserver# cd /var/yp dualserver# make |
ここでは、passwd テーブルのパスワードに関係する列に対する読み取り権を所有者とテーブルの管理者だけに制限し、しかも passwd テーブル内の残りの列に対する認証主体 (アプリケーションを含む) の読み取り権に影響を与えない方法を説明します。
この作業では、次のアクセス権を設定します。
Nobody Owner Group World Table Level Rights: ---- rmcd rmcd ---- Passwd Column Rights: ---- rm-- rmcd ---- Shadow Column Rights: ---- rm-- rmcd ---- |
ドメインを NIS 互換モードで動作させないでください。
ドメインのすべての NIS+ クライアントには DES 資格が必要です。
ドメインのすべてのクライアントで、Solaris リリース 2.3 以降のリリースが実行されている必要があります。
ユーザーのネットワークパスワード (DES 資格の暗号化に使用) は、ログインパスワードと同じディレクトリでなければなりません。
passwd テーブルをあらかじめ設定しておかなければなりません。ただし、情報が入っている必要はありません。
この作業を実行する NIS+ 主体には、passwd テーブルへの変更権が必要です。
必要なのは passwd テーブルの名前だけです。
作業 |
目的 |
参照先 |
|
---|---|---|---|
所有者および管理者に対する Passwd 列へのアクセス制限 |
NIS+ のコマンドを使って passwd.org_dir を変更し、所有者および管理者に対する passwd 列へのアクセスを制限する |
ドメインのマスターサーバーにログインします。
この例ではルートマスターサーバー rootmaster を使用します。
現在のテーブルと列のアクセス権を確認します。
niscat -o コマンドを実行します。
rootmaster# niscat -o passwd.org_dir |
この作業では、次のような既存のアクセス権になっていることを前提としています。
Access Rights : ----rmcdrmcdr--- Columns : [0] Name : name Access Rights : r-----------r--- [1] Name : passwd Access Rights : -----m---------- [2] Name : uid Access Rights : r-----------r--- [3] Name : gid Access Rights : r-----------r--- [4] Name : gcos Access Rights : r----m------r--- [5] Name : home Access Rights : r-----------r--- [6] Name : shell Access Rights : r-----------r--- [7] Name : shadow Access Rights : r-----------r--- |
自分のアクセス権が異なる場合、別の構文を使用する必要があります。手順については、第 15 章「NIS+ のアクセス権の管理」を参照してください。
テーブルのアクセス権を変更します。
nischmod コマンドを実行して、テーブルのオブジェクトレベルのアクセス権を ----rmcdrmcd---- に変更します。
rootmaster# nischmod og=rmcd,nw= passwd.org_dir |
列のアクセス権を変更します。
nistbladm コマンドを -u オプションを付けて使用して、passwd 列 および shadow 列のアクセス権を次のように変更します。
passwd ---- rm-- ---- ---- shadow ---- r--- ---- ---- rootmaster# nistbladm -u passwd=o+r, shadow=o+r passwd.org_dir |
新しいアクセス権を確認します。
手順 2 の場合と同様、niscat -o コマンドを実行します。アクセス権は、手順 2 の出力と同じでなければなりません。
NIS+ テーブルの生成に必要な手順のまとめを次に示しています。これは、もっとも簡単な場合を想定しています。このため、まとめを参考として使用する前に、作業の詳細を十分に理解しておいてください。また、このまとめでは各コマンドに対するサーバーの応答は示していません。
表 9–5 NIS+ テーブルへのファイルの転送 -コマンドのまとめ
作業 |
コマンド |
---|---|
NIS+ クライアントにログインする |
rootmaster% |
転送するファイルの作業用コピーを作成する |
% cp /etc/hosts /etc/hosts.xfr |
検索パスに /usr/lib/nis を追加する |
% PATH=$PATH:/usr/lib/nis; export PATH |
各ファイルを 1 つずつ転送する |
% nisaddent -m -f /etc/hosts.xfr hosts |
publickey ファイルから古いサーバー資格を削除する |
% vi /etc/publickey.xfer |
資格テーブルに publickey ファイルを転送する |
% nisaddent -a -f /etc/publickey.xfr cred |
オートマウンタファイルを転送する |
% nisaddent -f auto.master.xfr -t auto_master.org_dir key-value % nisaddent -f auto.home.xfr -t auto_home.org_dir key-value |
テーブルディレクトリにチェックポイントを実行する |
% nisping -C org_dir |
表 9–6 NIS+ テーブルへのマップの転送 -コマンドのまとめ
作業 |
コマンド |
---|---|
NIS+ クライアントにログインする |
rootmaster% |
検索パスに /usr/lib/nis を追加する |
% PATH=$PATH:/usr/lib/nis; export PATH |
各マップを 1 つずつ転送する |
% nisaddent -m -y olddoc hosts |
|
% makedbm -u /var/yp/olddoc/publickey.byname > /etc/publickey.xfr |
新しい資格を削除する |
% vi /etc/publickey.xfr |
publickey ファイルを転送する |
% nisaddent -a -f /etc/publickey.xfr -t cred.ortg_dir publickey |
オートマウンタマップを転送する |
% nisaddent -y olddoc -Y auto.master -t auto_master.org_dir key-value % nisaddent -y olddoc -Y auto.home -t auto_home.org_dir key-value |
テーブルディレクトリにチェックポイントを実行する |
% nisping -C org_dir |
表 9–7 NIS マップへの NIS+ テーブルの転送 -コマンドのまとめ
作業 |
コマンド |
---|---|
NIS+ サーバーにログインする |
dualserver# |
NIS+ テーブルをファイルに転送する |
% /usr/lib/nis/nisaddent -d [-t table] tabletype > filename |
ファイルを NIS マップに転送する |
% makedbm flags output-file NIS-dbm-file |
表 9–8 Passwd 列へのアクセスの制限 -コマンドのまとめ
作業 |
コマンド |
---|---|
ドメインのマスターサーバーにログインする |
rootmaster# |
テーブルの既存の権利をチェックする |
# niscat -o passwd.org_dir |
テーブルに新しい権利を割り当てる |
# nischmod og=rmcd,nw= passwd.org_dir |
列に新しい権利を割り当てる |
# nistbladm -u passwd=o+r, shadow=n+r passwd.org_dir |
新しい権利を確認する |
# niscat -o passwd.org_dir |