NIS+ Frequently Asked Questions -- Japanese edition

この文書は http://www.eng.auburn.edu/users/rayh/solaris/NIS+_FAQ.html に置いてあります。(オリジナル版)

この私的な日本語版では、文章の変更や、誤った記述らしきもの、古い個所は、 個人的判断で改変しております。
おかしいと思われた場合は、 浅田まで、メールを頂けましたら 幸いです。
[注意]内容に関しまして、訳者は一切の責任を取りません。
[注意]未だにちゃんと訳しておりません。参考程度にどうぞ。
[注意]浅田の英語に関する能力は赤点大王だったという事実に御注意下さい (^^;



Date: 1999年7月30日

項目に + がついているものは新規追加されたもの、
* がついているものは更新されたものです。



1.0: NIS+とは

NIS+ は Network Information Service Plus の略です。 これは NIS を置き換えるために設計され、 Solaris での標準ネームサービスとなっています。
NIS+ は機能は限定されているものの、 NIS(YP)互換モードで NIS クライアントのサポートをしています。
NIS+ は主に NIS では対応できなかった問題を対象に設計されています。

一つ重要な点として NIS+ と NIS の間には何の関係もないということに 注意すべきでしょう。
コマンドおよび全体の構成は NIS+ と NIS で殆んど違うものになっています。
加えて、いくつかのコマンドの使い方は NIS と異なります。
NIS+ は一から設計し直されたものなのです。


NIS+ は認証方法を追加してセキュリティを向上させています。
ユーザは、これまで使ってきた普通のパスワードを使って、 システムへアクセスしたいでしょう。
しかしながら、それにくわえて「Secure RPC パスワード」あるいは 「ネットワークパスワード」というものを持つ必要があります。
この新しいパスワードは NIS+ を利用する際に必要となるもので、 NIS+ 環境へログインするために使われます。
通常では、ユーザの持つ「ログインパスワード」と「ネットワークパスワード」 を一致させておきます。 こうしておけば、ログインをすると自動的に NIS+ の全機能が利用できるようになります。
一方、これらを異なるものにしている場合は、通常のログイン後に keylogin を実行し、ネットワークパスワードを入力して NIS+ のアクセス権限を得ます。


NIS+ に関係したプログラムはたくさんあります。
この文書では、もっとも重要な点について記述されています。
プログラムの全てはセクション 6.1に記載されていますので、 詳しい情報が欲しい場合はマニュアルページをご覧下さい。
特に注意すべき NIS+ のデーモンについて述べます:


rpc.nisd と nis_cachemgr は標準的な NIS+ のデーモンです。
これらの適切なものが NIS+ のサーバ、クライアントで動いているのを確認してください。


  1. NIS+ 基本オブジェクトについて

    NIS+ オブジェクトは構造的な要素であり、 NIS+ 名称空間で定義・作成されて使われます。
    これらには 5つの基本となる NIS+ オブジェクトがあり、 オブジェクトは常にドット(.)で区切られます。



2.0: NIS+ のデバッグ

NIS+ での問題を解決しようとする前に、推奨パッチがシステムにインストール されていることを確認してください。 特にカーネルパッチは最新のパッチを適用すべきべす。


  1. 認証における問題

    NIS+ における問題は認証に関係したものが殆んどです。
    マスタサーバ上にて rpc.nisd がセキュリティレベル 2 で動作している と仮定するならば、niscat を使ってユーザが認証されているかどうか調べる 事ができます。


    % niscat passwd.org_dir

    ユーザが暗号化されたパスワードを見ることができたなら、そのユーザは 認証されています。もしユーザが暗号化されたパスワードのあるべき所に *NP* と表示を見た場合にはパスワードカラムに対する読み取り権限がない 事を意味します。
    この場合には keylogin を実行することで再度ユーザの認証を試みる事が できます。
    keylogin 後に *NP* でなく、暗号化されたパスワードが表示されたならば、 chkey を実行してログインパスワードとネットワークパスワードを同期する 事が出来ます。

    もし keylogin を使っても認証されない場合は、ユーザのクリデンシャルが 正しく設定されていないと思われます。
    クリデンシャルが存在しているかどうかは cred テーブルを調べます。
    % niscat cred.org_dir

    ユーザのクリデンシャルを作成するには niscliet を使います:

    % nisclient -c ユーザ名

    クリデンシャルで問題が起こったら、 ワークステーションそのもののクリデンシャルに原因がないか調べてみましょう。
    特定のワークステーションで失敗するならば、バックアップの後に 3.3 項に記述されている事を試してみましょう。


  2. NIS+ テーブルを調べる方法

    NIS+ でのトラブルのいくつかは、 誤った情報がテーブルに入っている事で起こります。
    テーブルの内容は、いくつかのコマンドを使って調べることができます。

    niscat はテーブルの全内容を出力します:

    % niscat passwd.org_dir

    テーブルのプロパティも調べられます:

    % niscat -o passwd.org_dir

    これはテーブルが表示されるか否かで、 パーミッションによるアクセス制限状況が確認できるために、 とても助けになります。
    nismatch でテーブルの中を検索出来ます:

    % nismatch -h joe passwd.org_dir

    niscat と nismatch は共に NIS+ テーブルへ直接アクセスします。
    一方、getent でテーブルを参照する場合は /etc/nsswitch.conf で指定された 順序によって行われます。

    ふつう getent は次のように使われます:
    % getent passwd joe


    これは joe というユーザを passwd から見つけ出します。
    一般的な環境では最初に files 次に NIS+ をアクセスします。
    getent と nismatch が異なる結果を返したときには nsswitch.conf を見直しましょう。
    たぶん、nsswitch.conf に記述されたネームサービスの設定行で、 先に指定されているサービスに異なった情報が入っているのでしょう。
    あるいは NIS+ が nsswitch.conf で使われていないのかもしれません。

  3. Snoop を使う

    断続的に問題が起るならば、snoop を使って解決できることがあります。
    snoop を正しく使うには、問題が発生しているマシンとは無関係なマシンの上で 実行しなければいけません。
    例えば、間欠的に問題が発生する NIS+ クライアントがあるなら、 そのマシンと同じサブネットにあるマシンで snoop を実行すべきです。
    ただし、そのマシンは NIS+ クライアントまたは NIS+ サーバのどちらであってもいけません。

    訳注: snoop はホスト名をネームサービスで検索します。
    余計な NIS+ リクエストが発生することを防ぐために、 別マシンで実行しなければいけないのです。
    しかし、snoop にホスト名対応ファイルを用意することで この問題を回避することもできる様です。


    無関係なマシン# snoop 問題のマシン

    これは問題となっているマシンに出入りする全てのパケットを教えてくれます。
    NIS+ パケットを眺めて、エラーの通知を注意深く調べましょう。
    もし、いくつかの断続的なエラーが発生したら、 その時点でのサーバとクライアント間の問題を引き起こしたやりとりを調べる事ができます。
    古かったり、正しくない情報をサーバが持っているかもしれません。


  4. 性能の問題

    NIS+ での問題の幾つかは性能に関係したものです。過負荷となっている NIS+ サーバがいないか探してみましょう。
    "NIS+ Server Unreachable" というエラーに出会ったなら、ネットワークが過負荷と なっている可能性があります。
    snoop と netsstat の両コマンドは問題に関係する事項を調べるために使えますが、 性能の調整についてはサン・サービス(SunService)の力を借りると良いでしょう。


3.0 一般的な設定方法

  1. あなたのサイトで NIS+ を使うための準備

    NIS+ の名称空間を設定する前に、ハードウェアとソフトウェアの要求事項、 ドメイン名の決定、セキュリティレベル、 ドメイン階層を考えておかないといけません。


    一般的には Solaris 2.3 以上の OS が必要です。
    中規模から大規模なドメインでは、32〜64MB のメモリと 128MB 程度の スワップ領域を推奨します。/var/nis は 20MB 程度が必要です。
    これらの要求事項はネームサービスのマニュアル (6.4 項を参照)に記載されています。


    ルートサーバのドメイン名は少なくとも二つ以上のラベルでないといけません。
    つまり "xyz" というドメイン名はサポートされず、"xyz.com" なら正しい
    ドメイン名であるという事です。


    セキュリティレベルについて他にも考えなければいけないことがあります。
    ディフォルトのセキュリティレベルは 2 となっています。
    安全な環境を望むならば NIS+ をセキュリティレベル 2 で運用すべきです。
    もし SunOS 4 (Solaris 1)のクライアントがネットワークにつながっていて、 NIS+ でサービスを提供するならば、 NIS+ を NIS(YP)互換モードで動作させる必要があります。
    また、ユーザと管理者グループへアクセス権を与えたいならば、 アクセス権限に関しての方針が必要です。


    最後に NIS+ の重要なコンセプトである、ログインパスワードと ネットワークパスワードの違いを覚えておかないといけません。
    これらは認証に関する問題の解決にとても重要なものです。


    ドメインの設定を始める準備ができたなら、 NIS+ の簡易設定スクリプトを利用すると良いでしょう。

    たとえば、ルートサーバを設定するには nisserver スクリプトを用い、 クライアントを設定するなら nisclient スクリプトを用います。
    これらは簡単に利用でき、つまらない操作ミスを減らしてくれます。
    以降の説明では、これらのスクリプトを使います。

  2. NIS+ ルート・マスタサーバの設定

    ルートサーバの設定は、ルートマスタサーバにてスーパーユーザとなり、
    nisserver スクリプトを実行してルートドメインを作成します:

    root-server# nisserver -v -r -d ドメイン名

    これが済めば、ASCII ファイルのデータを NIS+ テーブルへ導入することができます。
    テーブルへ流し込むデータファイルを編集して、 特定のディレクトリにまとめておくと便利です。


    例えば、/var/tmp/nisfiles というディレクトリを作成して /etc のファイルを コピーして編集します。 こうすれば、通常のユーザのエントリだけを NIS+ パスワードテーブルに格納 したいという場合に、編集を事前に行う事が出来ます。


    次の一覧は標準的な NIS+ のテーブルです。
    流し込みたいマップが含まれているか確認してください。
    aliases
    auto_home
    auto_master
    bootparams
    cred
    group
    hosts
    netgroups
    netmasks
    networks
    passwd
    protocols
    rpc
    services
    timezone


    テーブルに流し込みを行うには、編集したファイルがあるディレクトリに移動し、 nispopulate スクリプトを実行します:

    root-master# cd /var/tmp/nisfiles
    root-master# nispopulate -v -F

    ここで一つ、重要な注意があります。
    クリデンシャルテーブルに流し込まれたユーザのネットワークパスワードは 「nisplus」と設定されているという事です。
    これはセキュリティのために変更しないといけません。
    一般のユーザは、各自 keylogin と chkey コマンドを実行して、 新しいネットワークパスワードを設定する必要があります。
    ネットワークパスワードにはログインパスワードを使う様にしてください。
    NIS+ 環境ではログインパスワードとネットワークパスワードが同じであれば、 認証のために keylogin をわざわざ実行する必要がなくなるからです。


    nispopulate が終わったら、サーバをリブートします。
    ブートしたら NIS+ が正しく動作しているかどうか、 NIS+ コマンドを使って確かめます:

    root-master% nisls
    root-master% niscat passwd.org_dir

  3. NIS+ クライアントの設定

    NIS+ クライアントの設定は、最初にマスタサーバ上で root となり、 クライアントのエントリが NIS+ のホストテーブルにあるか調べます。
    もしなければ admintool/AdminSuite などを使って追加しましょう。
    その後、nisclient スクリプトを使って、 クライアントマシンのクリデンシャルを作成します:

    root-master# nisclient -v -d ドメイン名 -c クライアント名

    nisclient から、既にクライアント名のクリデンシャルが存在する、 と報告されても気にしないでください。

    次にクライアントマシンに root でログインし、 nisclient を実行して初期化を行います:

    client# nisclient -v -i -h マスタ名 -a マスタIP -d ドメイン名

    (マスタ名は NIS+ マスタサーバの名前、マスタIPは同じくマスタサーバの IP アドレスを入力してください)

    client# cp /etc/nsswitch.nisplus /etc/nsswitch.conf

    (DNS を併用するならば、nsswitch.conf にあるコメントアウトされた hosts 行を有効にして下さい)
    ※nisclient(1M) で nsswitch.conf はコピーされるはずなんだけど、 何故かそうオリジナルには追加されていたんです。

  4. NIS+ ルート・複製サーバの設定

    ルート複製サーバにするマシンは、事前に NIS+ クライアント (セクション 3.3参照)として設定しておき、 それから NIS+ サーバデーモンを起動します。:

    root-replica# rpc.nisd

    そしてルート・マスタサーバで nisserver コマンドを実行します:

    root-master# nisserver -v -R -d ドメイン名 -h ルート複製サーバ名


    最後に、マスタサーバで nisping を実行し、 テーブルを複製サーバに伝播させます:

    root-master# nisping ドメイン名.
    root-master# nisping org_dir.ドメイン名.
    root-master# nisping groups_dir.ドメイン名.


  5. サブドメインの NIS+ マスタを設定する

    サブドメインのサーバは、 既に上位のドメインのクライアントになっていないといけません。 (セクション 3.3 を参照)
    これはルートドメインでも任意のサブドメインでも同じことです。
    要件を満たしているならば、rpc.nisd を起動します:

    subdomain-master# rpc.nisd

    それから、現ドメインの上位にあるドメインでマスタサーバとなっているマシンにログインし、nisserver を実行します。
    (root-master が例で使われていますが、subdomain-master より上位のものであればどれでも構いません):

    root-master# nisserver -v -M -d subdomain_name -h subdomain_master

    (「subdomain_name」には、新しい NIS+ のサブドメイン名を、 「subdomain_master」にはサブドメインのマスタサーバを指定します。)

    必要ならば、サブドメインの NIS+ テーブルに流し込み(populate) を行うことができます。
    これはサブドメインのマスタが準備できた後に行い、 セクション 3.2 で記述されている点に留意して下さい:

    subdomain-master# cd /var/tmp/nisfiles
    subdomain-master# nispopulate -v -F

    終了したら、サブドメインのマスタサーバを再起動してください。

  6. NIS+ サブドメイン・複製サーバの設定

    サブドメインの複製サーバを設定する方法は セクション 3.4に記述された手順とほぼ同じです。
    コマンドはルートマスタサーバではなく、 サブドメインのマスタサーバで実行する点に違いがあります。

  7. ルートサーバの IP アドレスを変更するには
    ここでの仮定は次の通り:
    - ルートサーバは 朝顔 という名前で、アドレスは 10.10.10.1
    - ルートサーバの IP アドレスを 192.168.10.1 に変更したい
    - 向日葵 という複製サーバが一つあり、アドレスは 10.10.10.2
    - 向日葵 の IP アドレスは 192.168.10.2 に変更したい
    ※念のため: 実際のホスト名として日本語を使うことはできません (^^;

    次の手順に従ってください:

    1. 全ての NIS+ サーバで、新しい IP アドレスのエントリを追加します。
    次のコマンドは 朝顔向日葵 の新しい IP アドレスを追加します

    nistbladm -a addr=192.168.10.1 name='朝顔' cname='朝顔' hosts.org_dir
    nistbladm -a addr=192.168.10.2 name='向日葵' cname='向日葵' hosts.org_dir

    2. nisupdkeys を使って、ディレクトリオブジェクトに格納されている IP アドレスを更新します:
    (/etc/nsswitch.conf の hosts 行で nisplus 項目が先頭に記述されている必要があります)

    /usr/lib/nis/nisupdkeys -a groups_dir.ドメイン名.
    /usr/lib/nis/nisupdkeys -a org_dir.ドメイン名.
    /usr/lib/nis/nisupdkeys -a ドメイン名.
    注意: もし、これら以外にディレクトリオブジェクトを該当のマシンに 格納しているならば、それらに対しても実行する必要があります。

    3. 論理ネットワークインタフェースを使い、各々の NIS+ サーバで新しい
    IP アドレスを利用できるようにします。

    朝顔 では次のコマンドを実行します:

    ifconfig le0:1 192.168.10.1 netmask + broadcast + -trailers up

    向日葵 では次のコマンドを実行します:

    ifconfig le0:1 192.168.10.2 netmask + broadcast + -trailers up

    4. 全ての複製サーバに新しいディレクトリオブジェクトを送り込みます:

    /usr/lib/nis/nisping ドメイン名.
    /usr/lib/nis/nisping groups_dir.ドメイン名.
    /usr/lib/nis/nisping org_dir.ドメイン名.

    5. ディレクトリオブジェクトの有効期間/TTL(time-to-live) が満了するまで待ちます。
    これは作業の肝心な点であって、無視することは出来ません。
    通常は有効期間として 12時間が設定されていますが、 その場合は 12時間待ちます。

    ※訳注:: 移行準備として、事前に nischttl を使って短く出来ます。
    ‥‥と書いていたら、1999/7/30版には追加されていました (^^)

    有効期間は次のコマンドで調べることができます:

    niscat -o ドメイン名. groups_dir.ドメイン名. org_dir.ドメイン名.

    ディレクトリオブジェクトの有効期間を短くすることで、 作業時間を短縮することができます。
    例えば TTL を 1時間にするには次のように nischttl を使います:
    nischttl 1h ドメイン名.
    nischttl 1h groups_dir.ドメイン名.
    nischttl 1h org_dir.ドメイン名.
    もし TTL を変更したならば、その新しい TTL が行き渡るまで 12時間 (変更前の TTL がディフォルト値だった場合)待つ必要があります。

    6. To keep a completely transparent service, set up one ormore
    systems to act as a gateway between the two logical networks.
    To do this on one system, follow these steps:
    6. 作業をしている間にもネームサービスを維持したいなら、 一つ以上のシステムにて二つの論理ネットワークを結ぶゲートウェイを 準備します。
    次の手順は、この作業を一つのシステムで行う方法です:

    7. 各クライアントで次の手順を実施します:
    1. hosts.org_dir テーブルエントリを編集して新しい IP アドレスを 指すようにします
    2. /etc/hosts ファイルを編集します
    3. クライアントをリブートします

    8. NIS+ ルートサーバのエントリから古い IP アドレスを削除して、新しい
    IP アドレスのみを残します:

    1. ディレクトリオブジェクト中の IP アドレスを更新します:
      /usr/lib/nis/nisupdkeys -a groups_dir.ドメイン名.
      /usr/lib/nis/nisupdkeys -a org_dir.ドメイン名.
      /usr/lib/nis/nispupkeys -a ドメイン名.

    2. 全複製サーバに変更を通知します:
      /usr/lib/nis/nisping groups_dir.ドメイン名.
      /usr/lib/nis/nisping org_dir.ドメイン名.
      /usr/lib/nis/nisping ドメイン名.

    3. 有効期間(たいていは 12時間)が満了するのを待って、 クライアントのキャッシュから古いサーバの IP アドレス情報が 消えるのを待ちます。

    9. 全てのクライアントで作業が終わったら、次の手順を実施します:
    1. NIS+ サーバで、動作中の古いネットワークインタフェイスを停止します。
      例: ifconfig le0:1 0 down
    2. host テーブルの古いエントリを削除します。
    3. /etc/hosts ファイルを編集します。
    4. そのシステムで in.routed を動作させていたならば、 停止させて ip_forwarding を元の値に戻します。


  8. 管理グループへユーザを追加する方法

    ディフォルトの設定をしただけならば、マスタとなっているマシンの root ユーザのみが NIS+ マップを更新できます。
    が、すべてのシステム管理者に対して権限を与えたくなるでしょう。
    次の例は管理グループに全システム管理者を追加する典型的なものです:

    # nisgrpadm -a admin.ドメイン名. joe
    # nisgrpadm -a admin.ドメイン名. liz

    上記のコマンドは joe と liz に NIS+ テーブルの変更権限を与えます。
    このことは特権を与える事になりますので、joe と liz が信用でき、 アカウントがセキュリティ上安全なものでないといけません。

  9. NIS+ ユーザのパスワードを変えるには

    一般のユーザがパスワードを変更する場合は nispasswd コマンドを使います:

    % nispasswd

    これは passwd テーブルを更新し、クリデンシャルテーブルも更新します。

    root ユーザは、他のユーザのパスワードも変更できます:

    # nispasswd ユーザ名

    root のパスワードを変更する場合、この手順は「決して使わない」で下さい。

    ※訳注
    Solaris 2.5 以降では nispasswd と yppasswd が passwd に統合され、 リポジトリオプション -r にて、変更したいデータベースが指定できます。
    -r が指定されないときには、/etc/nsswitch.conf を参照して 適切なデータベースを自動的に選択します。
    passwd のマニュアルページでは、データベース毎の変更コマンドよりも passwd の利用を推奨しています。



  10. NIS+ で root パスワードを変えるには

    root のパスワードを変更するならば、必ず、以下の手順に従ってください。

    まず、passwd コマンドを使って新しいパスワードを設定します:

    # passwd

    これは passwd を実行したマシン上の /etc/passwd ファイルで、 パスワードを変更します。 次に chkey -p を実行し、新しいネットワークパスワードを入力します:

    # chkey -p

    最後に keylogin -r を使い、新しい秘密鍵で /etc/.rootkey ファイルを更新します:

    # keylogin -r

    この変更はサーバに対する秘密鍵を更新し、公開鍵は変更されません。
    何故ならば、クライアントが認証時にサーバの公開鍵を利用するためです。

    もし他のやり方で root のパスワードを変えてしまった場合は、 NIS+ ドメインをめちゃめちゃにしてしまうかもしれません。
    If you use any other method for updating your root passwd, you can
    totally mess up your NIS+ domain.

  11. NIS+ クリデンシャルの管理

    nisaddcred コマンドでは、LOCAL あるいは DES のクリデンシャルを、 作成・変更・削除をすることが出来ます。

    他の NIS+ プリンシパルに対してクリデンシャルの作成・更新を行うには:

    % nisaddcred -p ユーザID -P プリンシパル名 local
    % nisaddcred -p RPCネットワーク名 -P プリンシパル名 des

    RPCネットワーク名とは、ユーザなら「unix.ユーザID@ドメイン名」、 ホスト上の root では「unix.ホスト名@ドメイン名」 といった形式で指定されるものです。
    ここで注意すべきなのは、他の NIS+ コマンドと違って、 ドメイン名の末尾に「.」を決して付けてはいけない、ということです。
    プリンシパル名は、名称.ドメイン名. で表され、 名称の部分にはユーザ名やホスト名が入ります。

    例を挙げると、joe (ユーザID 555) が example.com というドメインで持っている名前は次のようになります:

    プリンシパル名: joe.example.com.
    RPCネットワーク名: unix.555@example.com

    test というマシンでの root は次の名前を持っています:

    プリンシパル名: test.example.com.
    RPCネットワーク名: unix.test@example.com

    注意:
    クライアントワークステーションには、DES クリデンシャルのみが作成できます。
    DES クリデンシャルはクライアントが直接に属しているドメインにのみ作成できます。
    つまり、他のドメインのクライアントユーザには、 LOCAL クリデンシャルを作成することができます。

    クリデンシャルの削除方法:

    % nisaddcred -r プリンシパル名


  12. NIS+ グループの管理

    以下のコマンドは NIS+ グループの管理全てで使われます。
    ただし、NIS+ のグループと UNIX でのグループとは異なるものであることに注意すべきです。

    グループ・オブジェクトのプロパティ一覧は niscat で行えます:

    % niscat -o グループ名.groups_dir.ドメイン名.

    nisgrpadm コマンドでは NIS+ グループの作成・削除などの管理を行います。

    To create a group:

    % nisgrpadm -c グループ名.ドメイン名.

    グループを作成すると、NIS_DEFAULTS 環境変数で指定された、 オブジェクトのプロパティを継承します。
    このディフォルトは nisdefaults コマンドで表示することができます:

    root-master# nisdefaults
    prinicipal name : master.domain_name
    domain name : domain_name
    Host Name : master.domain_name
    Group Name:
    Access Rights : ----rmcdr---r---
    Time to live :12:0:0
    Search Patch : domain-name

    グループを削除する:

    % nisgrpadm -d グループ名.ドメイン名.

    グループのメンバを表示する:

    % nisgrpadm -l グループ名.ドメイン名.

    NIS+ のグループにメンバを追加する:

    % nisgrpadm -a グループ名 メンバ

    NIS+ のグループからメンバを削除する:

    % nisgrpadm -r グループ名 メンバ

    NIS+ グループのメンバであるかどうかを調べる:

    % nisgrpadm -t グループ名 メンバ

  13. NIS+ テーブルの管理

    nistbladm コマンドは NIS+ テーブルの管理を行う基本的なユーティリティです。
    このコマンドを使って、テーブルやテーブル項目を作成したり、 変更あるいは削除する事ができます。
    テーブルを作成するには、作成したいディレクトリでの作成権限を 持っていなければいけません。
    テーブルを削除するにはディレクトリでの削除権限が必要です。
    テーブルを変更、ないし項目を追加・変更・削除するためには、 テーブルまたは項目の変更権限が必要です。

    テーブルの欄は次のような属性を持っています:
    S = Searchable : 検索対象
    I = case Insensitive : 大文字小文字を無視する
    C = enCrypted : 暗号化されている

    テーブルを作成する:

    % nistbladm -c テーブル種別 項目設定 .... テーブル名

    例えば、computers という種別で、検索可能な name と model という二つの項目を持つ computers というテーブルを作成するには、 次のようにします:

    % nistbladm -c computers name=S model=S computers.ドメイン名.

    テーブルを削除する:

    % nistbladm -d テーブル名

    例えば、computers というテーブルを削除するには、次のようにします:

    % nistbladm -d computers.ドメイン名.

    項目の追加や削除について詳しく知りたい場合は、 nistbladm のマニュアルページを参照してください。

  14. NIS+ テーブルを調べる

    niscat コマンドは NIS+ テーブルの内容を表示します。

    テーブルオブジェクトのプロパティを表示する:

    % niscat -o テーブル名

    もしくは:

    % niscat -o エントリ

    テーブルの内容を表示するには:

    % niscat -h テーブル名

  15. NIS+ テーブルを修正する

    NIS+ テーブルを修正するにはいくつかの方法があります。
    一つ注意として、これらの方法を用いるには NIS+ 管理グループに属している NIS+ プリンシパル、つまり管理権限を持ったユーザであることが必要です。
    (3.8 項を参照)

    最も良い方法は、admintool を使って変更することです。

    ※訳注: Solaris 2.5 以降では admintool から NIS, NIS+ のメンテナンス機能が削除され、サーバ用ソフトウェアである Solstice AdminSuite に移されました。
    AdminSuite は solstice コマンドで起動します。
    Solaris 8 より、AdminSuite は Version 3.0 となり、Admin Pack という、 ダウンロードして使うことの出来る無償パッケージに移されました。 Admin Pack の情報

    一方、admintool を実行するには X が必要であり、 標準のテーブル以外を扱う事ができない、という欠点もあります。

    ※訳注: AdminSuite 2.2以降ではコマンドライン形式のプログラムも用意されました。
    /opt/SUNWadm/man/man1m にあるマニュアル群をご覧下さい。


    テーブルの変更に admintool を使うことができないならば、 nisaddent が最も良い選択肢でしょう。
    nisaddent コマンドはテキストファイル、または NIS のマップを読み込んで、 NIS+ のテーブルに格納します。
    また、NIS+ テーブルの内容をテキストファイルに書き戻すことも出来ます。
    次のオプションが nisaddent コマンドで使えます:

    -a append: テーブルに、入力した内容を追加します。
    -r replace: テーブルの内容を、入力内容で置き換えます。
    -m merge: テーブルの内容と、入力内容をマージ(併合)します。
    -d dump : テーブルの内容を、標準出力にダンプします。

    (-a,-r,-m の各オプションが指定されていない場合は、置き換えがディフォルトです)

    新しいエントリをファイルに追加して、その変更をマージすることもできます:

    % nisaddent -m -f ファイル名 テーブル種別

    例:

    % nisaddent -m -f /etc/passwd passwd

    あるいは、NIS+ のテーブル内容をファイルに書き出して、 修正を加えてから書き戻す方法もあります。

    例:

    % nisaddent -d passwd > /tmp/passwd
    % vi /tmp/passwd
    % nisaddent -r -f /tmp/passwd passwd

    nisaddent を使いたくない場合は、nistbladm でテーブルを直接変更してしまう 方法があります。これは複雑な方法となります。 nistbladm のマニュアルページから、作業に必要な情報を調べてください。

  16. NIS+ の定期管理

    名称空間の更新‥‥‥(ちょっと訳が思いつかない)
    定期的に nisping -C を実行することで、ログファイルに格納されているデータを データベースファイルへ書き出す、というのは良い考えです。
    管理者なら、これをルートマスタサーバ上の crontab に追加して毎日実行させよう、 と思うのではないでしょうか。

    そのほかの NIS+ 管理作業で重要なのは /var/nis 以下を定期的に バックアップすることです。
    これによって手ひどい障害からでも復旧できます。

    ※訳注: Solaris 2.6 以降には nisbackup/nisrestore もあります。

    Depending on the updates one performs in the namespace, it is a good
    idea to frequently perform nisping -C so that log files gets written
    to the disk. You may wish to put this into a cron tab on your
    root-master server, to make sure that it is executed daily.

    Another important NIS+ administration task is to regularly backup
    /var/nis, to make sure that you can recover in the case of a massive
    failure.

  17. NIS+ の利用を止める

    もし NIS+ を取り去りたいならば、以下のコマンドをすべての NIS+ マシンで
    実行します:

    # cp /etc/nsswitch.files /etc/nsswitch.conf
    # /etc/init.d/rpc stop
    # rm -f /etc/.rootkey
    # rm -rf /var/nis/*
    # /etc/init.d/rpc start

    この作業はクライアントから順次行い、サーバは最後に実施する必要があります。

  18. プリンタのテーブルを定義する
    次のコマンドを root で実行し、NIS+ プリンタテーブルを設定してください:

    # nistbladm -c -D access=n+r,o+rmcd,g+rmcd,w+r printers \
    > printer_name=S,o+rmcd,g+r,w+r printer_host=S,o+rmcd,g+r,w+r \
    > description=,o+rmcd,g+r,w+r printers.org_dir.`domainname`.

    設定後、パーミッションが次のように正しく設定されているか確認してください:

     # niscat -o printers.org_dir
     Object Name   : printers
     Owner         : ppp.hans.com.
     Group         : admin.hans.com.
     Domain        : org_dir.hans.com.
     Access Rights : r---rmcdrmcdr---
     Time to Live  : 12:0:0
     Object Type   : TABLE
     Table Type          : printers
     Number of Columns   : 3
     Character Separator :
     Search Path         :
     Columns             :
             [0]     Name          : printer_name
                     Attributes    : (SEARCHABLE, TEXTUAL DATA, CASE SENSITIVE)
                     Access Rights : ----rmcdr---r---
             [1]     Name          : printer_host
                     Attributes    : (SEARCHABLE, TEXTUAL DATA, CASE SENSITIVE)
                     Access Rights : ----rmcdr---r---
             [2]     Name          : description
                     Attributes    : (TEXTUAL DATA)
                     Access Rights : ----rmcdr---r---
     

    このあとに、Admintool/AdminSuite または nisaddent コマンドを使って、 プリンタテーブルを取り込むことができます。


  19. Unable to Authenticate NIS+ server というエラーがでる

    rpc.nisd を一度停止し、セキュリティレベル 0 で再起動します:
    Kill and restart rpc.nisd at security level 0:

    ps -ef | grep rpc.nisd
    kill <pid>

    ※訳注: Solaris 7 では
    pkill rpc.nisd ; /usr/sbin/rpc.nisd -S 0
    と実行することができます。

    /usr/sbin/rpc.nisd -S 0

    ※訳注: 次のオリジナル FAQ にある -r オプションは 最近のリリースで削除されています。
    /usr/sbin/rpc.nisd -r -S 0


    keylogout を使って root のキーを削除します:

    keylogout -f

    root のキーを追加して、ディレクトリのキー情報を更新します:

    nisaddcred des
    nisupdkeys `nisdefaults -d`
    nisupdkeys org_dir.`nisdefaults -d`
    nisupdkeys groups_dir.`nisdefaults -d`

    変更を伝播させます:

    /usr/lib/nis/nisping `nisdefaults -d`
    /usr/lib/nis/nisping org_dir.`nisdefaults -d`
    /usr/lib/nis/nisping groups_dir.`nisdefaults -d`

    上記以外にディレクトリを作成しているなら、同様に nisping を適用します。

    rpc.nisd を停止し、セキュリティレベル 2 で再起動します:

    ps -ef | grep rpc.nisd
    kill <pid>
    /usr/sbin/rpc.nisd -S 2

    Solaris 7 では
    pkill rpc.nisd ; /usr/sbin/rpc.nisd -S 2
    と実行することができます。



  20. NIS+ ルート・複製サーバをルート・マスタサーバにするには

    NOTE: 以下の例では、「朝顔」は旧マスタサーバを、 「向日葵」は旧複製サーバを意味します。
    <rpc.nisd pid> の様に示される項目は、該当プロセスの ID の事で、 次のコマンドによって得られます:
    ps -ef | grep <プロセス名>

    ※Solaris 7 以降では、pkill '(rpc.nisd|nis_cachemgr)' のようにプロセス
    を検索し、シグナルを送信するコマンドが新設されていますので、ぜひ
    ご利用下さい。


    その他の区切り文字は、書いてある通りに入力しなければいけません。

    ※原文の例が分かりにくかったので、この日本語版では分かりやすいように
    日本語名称を付けて、どのマシンで作業するのかを明示してみました。
    ホスト名が花の名前になっているのは、単に翻訳者の趣味です (^^)
    念のため: 実際のホスト名として日本語を使うことはできません (^^;

    ※作業の前に、マスタサーバのバックアップ(少なくとも /var/nis 以下)
    をとっておきましょう。



    1. 向日葵 用のマスタオブジェクトを作成:

      朝顔 にて:
      # nismkdir -m 向日葵 groups_dir.ドメイン名.
      # nismkdir -m 向日葵 org_dir.ドメイン名.
      # nismkdir -m 向日葵 ドメイン名.

    2. 朝顔 の root.object をコピー

      向日葵 にて:
      # rcp 朝顔:/var/nis/data/root.object /var/nis/data/

      ※Solaris 2.5 よりも前のリリースでは次の通りです。
      # rcp 朝顔:/var/nis/朝顔/root.object /var/nis/向日葵/


      朝顔 の /var/nis/data あるいは /var/nis/朝顔 ディレクトリにある root.object を違う場所へ移動します。
      (作業が失敗したときのために、保存しておくわけです)

      ※訳注: どうせなら /var/nis 以下をダンプしておく方がいいでしょう。


    3. 朝顔向日葵 双方で、rpc.nisd と nis_cachemgr を停止する:

      # kill <rpc.nisd pid> <nis_cachemgr pid>

      ※Solaris 7 以降
      # pkill '(rpc.nisd|nis_cachemgr)'


    4. マスタとなった 向日葵 で rpc.nisd と nis_cachemgr を再起動します:

      向日葵 にて:
      # /usr/sbin/rpc.nisd -S 0
      # /usr/sbin/nis_cachemgr -i

    5. 該当ドメインのディレクトリを調べて、 旧複製サーバがマスタサーバになった事を確認します。

      向日葵 にて:
      # nisshowcache -v
      # niscat -o groups_dir.ドメイン名.
      # niscat -o org_dir.ドメイン名.
      # niscat -o ドメイン名.

    6. もし、キャッシュのマスタサーバ欄に 朝顔 が表示されるならば、 以下を 向日葵 で実行します:

      向日葵 にて:
      # nismkdir -m 向日葵 groups_dir.ドメイン名.
      # nismkdir -m 向日葵 org_dir.ドメイン名.

    7. ディレクトリのオーナシップを変更します

      # nischown 向日葵 groups_dir.ドメイン名.
      # nischown 向日葵 org_dir.ドメイン名.

      ※エラーが出るならば nisping を実行すると直る場合があります。


    8. ディレクトリにある、すべてのテーブルのオーナシップを変更します

      # for dir in `nisls ドメイン名 | tail +2` ; do > nisls $dir | egrep -v '^$|^.*:$' | while read table ; do > nischown 向日葵 $table.$dir.ドメイン名. > done > done

      ※エラーが出るならば nisping を実行すると直る場合があります。

      ※訳注: オリジナルの FAQ V1.1.6以前にある次の手順は少なくとも Solaris 2.5 以降では動きませんから、参考にしないでください。
      # for tables in `nisls org_dir groups_dir`
      > do
      > nischown 向日葵 $tables
      > done


    9. テーブルとディレクトリを調べて、 ちゃんと向日葵が所有者になっているか確認します。

      # niscat -o org_dir
      # niscat -o hosts.org_dir 等々...

    10. ディレクトリから 朝顔 の情報を削除します

      # nisrmdir -s 朝顔 groups_dir.ドメイン名.
      # nisrmdir -s 朝顔 org_dir.ドメイン名.
      # nisrmdir -s 朝顔 ドメイン名.

    11. ドメインに対してチェックポイントを発行します

      # nisping -C groups_dir.ドメイン名.
      # nisping -C org_dir.ドメイン名.
      # nisping -C ドメイン名.

    12. 向日葵 が全てのオブジェクトを所有している事を確認したら、 デーモンを再起動して、セキュリティレベルを 2 へ変更します。

      向日葵にて

      # kill <rpc.nisd pid> <nis_cachemgr pid>

      ※ Solaris 7 以降なら: pkill '(rpc.nisd|nis_cachemgr)'

      # /usr/sbin/rpc.nisd
      # /usr/sbin/nis_cachemgr -i

    13. 各ユーザや root で、ネームサービスが機能しているか調べます

    14. 朝顔にて、古い情報を削除し、クライアントとします。

      /var/nis/ の下にあるファイルやディレクトリを、NIS_COLD_START と NIS_SHARED_DIRCACHE だけ残して、削除します。
      そして向日葵の IP アドレスとホスト名を /etc/inet/hosts に設定します。
      # nisinit -c -H 朝顔

    15. 朝顔 をドメインの複製サーバにします

      複製サーバにする朝顔上で rpc.nisd を起動します

      向日葵にて

      # nismkdir -s 朝顔 groups_dir.ドメイン名.
      # nismkdir -s 朝顔 org_dir.ドメイン名.
      # nismkdir -s 朝顔 ドメイン名.

      # nisping -C groups_dir.ドメイン名.
      # nisping -C org_dir.ドメイン名.
      # nisping -C ドメイン名.
      (注意: server busy メッセージは、 前に発行したコマンドが完了していない場合に起こります)

    16. クライアント毎に nis_cachemgr を停止します

      # kill <nis_cachemgr pid>

      ※ Solaris 7 以降なら pkill nis_cachemgr


    17. クライアント毎にコールドスタートファイルをマスタサーバから取得します

      # nisinit -c -H 向日葵

    18. クライアント毎に nis_cachemgr を再起動します

      # kill <nis_cachemgr pid>

      ※ Solaris 7 以降なら pkill nis_cachemgr

      # /usr/sbin/nis_cachemgr -i

  21. cred テーブルのダンプ方法

    cred テーブルの二つの部分をダンプする必要があります。

    1 - DES cred のダンプ:
    nisaddent -d -t cred.org_dir publickey >des_cred_table
    2 - local cred のダンプ:
    nisaddent -d -t cred.org_dir netid >local_cred_table

  22. NIS+ ディレクトリオブジェクトをバックアップ・リストアする方法

    日本語版の独自項目の方がマシなので、そちらをどうぞ。


4.0 よくある質問の例

  1. その他の質問

    Q1: NIS+ の主な特徴は何ですか?
    Q2: NIS+ の新しい機能は何ですか?
    Q3: NIS と NIS+ の違いは何ですか?

    A: NIS の名称空間は平面的であって、サブドメインを持つことができません。
    NIS の元では一つのドメインだけがホストからアクセスできます。
    一方 NIS+ での名称空間は階層的となっており、 この階層構造は UNIX のファイルシステムの構造に似ています。
    NIS+ 名称空間が階層的であることで、 組織の論理階層に合わせた設定することができます。
    つまり、組織の異なる階層をサブドメインとして扱うことが可能となります。

    NIS では、たとえ小さな変更でもマップにあったなら、 マスタサーバはマップの全てをスレーブサーバに送付しないといけません。
    NIS+ ならデータベースの更新が順次行われますので、 変更点だけが複製サーバに複写されます。
    このことから NIS+ データベースの更新は、より効率的で、時間を消費しません。

    そのほかにも NIS と NIS+ の相違が、 サーバとの結び付きの形態において見られます。
    NIS でのクライアントは特定のサーバと固く結び付いており、 クライアントがブートする途中で起動される ypbind が特定のサーバと結び付きます。
    それに対して NIS+ クライアントライブラリは NIS+ データベースをアクセスするために別プロセスを動かす事はありません。
    NIS では ypwhich コマンドを使って、クライアントが どのサーバに結び付いているかを知ることができますが、 NIS+ 環境では不可能です。
    言い換えれば NIS+ における サーバ・クライアントの結び付きは緩やかなものだと言えます。

    NIS のマップは事前に検索可能とされている一つのカラムのみ検索できます。
    NIS+ のテーブルは一つ以上の検索可能なカラムを許しています。

    NIS は Unix の group と netgroup をサポートしていますが、 NIS+ はそれらに加えて NIS+ グループという概念もサポートしています。
    一人以上の NIS+ ユーザを NIS+ グループとしてまとめることができます。
    複数の NIS+ グループを定義することも可能で、 それぞれに異なる参照・変更の権限を NIS+ 名称空間において付与できます。

    NIS+ はより改善されたセキュリティをもっています:

    NIS は認証、authorization、Secure RPC をサポートしていませんが NIS+ はそれらをサポートしています。


    Q: 私のネットワークパスワードは何でしょうか?

    A: こういった場合のために、 ネットワークパスワードはログインパスワードと同じにすべきです。
    NIS+ が設定された直後は、たいてい nisplus に設定されています。


    Q: なぜマシン名とユーザ名に同じものを使えないのですか

    A: 全てのマシンとユーザはクリデンシャルを持っている必要があります。
    もしマシンとユーザが同じ名前を使っていたならば、 クリデンシャルは一つしか使えないことになってしまいます。
    名前の衝突が起った場合は、マシン名を変えてから、 ユーザとマシンのクリデンシャルとを作り直してください。

    % nisclient -c user
    % nisclient -c machine

  2. NIS+ 設定上の問題

    問: 3.4 項に書かれた通りに nisserver を実行したのに失敗しました
    答: nisserver スクリプトが失敗したのならエラーメッセージを調べてみましょう。
    何か手がかりがあるかもしれません。
    あるいはネームサービス管理ガイドに書かれているように手動で nisinit、 nissetup を実行するのもいいでしょう。これはスクリプトがどの段階で 失敗しているのか調べるのに役立ちますし、問題を調べるのに好適です。
    もし nisinit -r がハングを引き起こすなら、DNI(DECnet I/F) が動いていないか確認しましょう。
    DNI がインストールされると /etc/netconfig ファイルに次の行があるはずです:
    nsp tpi_cots_ord - decnet nsp /dev/nsp /usr/lib/straddr.so

    この行をコメントアウトしてスクリプトを再び実行してみましょう。
    たぶんうまくいくはずです。

  3. ユーザのログイン時における問題


    問: ログインしたときに次のエラーが出てしまいます:
    "Password does not decrypt secret key for ..."

    答: これはユーザのログインパスワードとネットワークパスワードが一致して いない事を意味しています。
    ログイン後に keylogin を実行して NIS+ のクリデンシャルを得てください:
    % keylogin

    keylogin のプロンプトに対して NIS+ のネットワークパスワードを入力して 下さい。nisplus では最初にログインする場合にだけ必要です。
    その後 chkey を実行してログインパスワードとネットワークパスワードを 同期させてください。

    % chkey

    Q: なぜログインの際に次のエラーが出るのでしょうか:

    "/usr/bin/passwd: <user> does not exist"
    "Connection closed by foreign host."

    A1: これは admintool や Solstice AdminSuite でユーザを作成したときに "cleared until first login" /「最初にログインするまでは未設定」が選択された場合に起こり得ます。
    ユーザのアカウントを作成するときには通常のパスワードを選択しましょう。

    A2: もしパスワードエージングを使おうとしているならば、5.0項に書かれている、パスワードエージングポイントパッチを適用してください。

    Q: どうして xdm からログインできないんでしょうか

    A: 既知のバグです。5.3項5.4項 に、この問題に対するパッチの一覧があります

  4. NIS+ の参照における問題

    Q: なぜ NIS+ の参照でつじつまの合わない結果が返ってくるんでしょう?

    A: NIS+ におけるサーバとクライアント間の結び付きは、 NIS と違って緩やかなものとなっています。
    これは問い合わせの度に異なるサーバにアクセスするかもしれないという事です。
    つまり、複製サーバのデータがマスタサーバのデータと同期していない場合には、 クライアントが問い合わせをする度に、 整合の取れていない情報を受け取ることとなるわけです。
    つじつまの合わない情報を見つけたならば snoop コマンド (2.3項を参照)を使って間違った情報を持っている サーバを探し出しましょう。



5.0: パッチ

以下に 5.3 から 5.7 における NIS+ パッチを全て挙げました。
もし NIS+ での問題を抱えているならば、パッチを適用することが解決の糸口となります。

マシンを安定させたいのであれば、全ての推奨パッチをインストールすべきです。
利用している OS の推奨パッチ一覧は sunsolve1.sun.com から入手できます。

※訳注: Access1も利用できます。
※訳注: rpc.nisd のセキュリティホールが報告されています


  1. Solaris 2.3 NIS+ パッチ

    パッチレポートより抽出しているため、必須とは限りません。

    101318 SunOS 5.3: Jumbo patch for kernel (includes libc, lockd)

    全てのマシンにインストールすべき重要なパッチの一つです。多数の NIS+ における 修正が含まれており、NIS+ を使うマシンでは絶対に必要です。

    101384 SunOS 5.3: Admintool Jumbo patch

    NIS+ と admintool に関するたくさんのバグを修正します。このパッチは NIS+ データベースを admintool で管理する際に必要です。

    101582 SunOS 5.3: POINT PATCH: Password aging & NIS+ don't work (together)

    NIS+ とパスワードエージングを連携させたい場合にのみ適用するオプションパッチです。

    101736 SunOS 5.3: nisplus patch

    NIS+ ライブラリでのエラーを修正します。NIS+ を使う全てのマシンにインストールしないといけません。

    102447 OpenWindows 3.3: xdm cannot be used on NIS+ networks

    NIS+ ユーザが xdm 経由でログイン出来ないバグを修正します。

    103269 SunOS 5.3: nissetup default permissions not secure enough
    103705 SunOS 5.3: rpc.nisd_resolv rebuild for BIND 4.9.3


  2. Solaris 2.4 NIS+ パッチ

    パッチレポートより抽出しているため、必須とは限りません。

    101945 SunOS 5.4: jumbo patch for kernel
    101946 SunOS 5.4_x86: jumbo patch for kernel

    とても重要なパッチなので、全てのマシンにインストールすべきです。
    NIS+ のバグ修正を多数含んでいるので、NIS+ を使うマシンでは絶対に必要です。

    102294 OpenWindows 3.4: xdm cannot be used on NIS+ networks

    NIS+ ユーザが xdm 経由でログイン出来ないバグを修正します。
    102336 SunOS 5.4: POINT PATCH: 1091205 - Password aging & NIS+ don't work

    このオプションパッチは NIS+ とパスワードエージングを統合したい場合にのみ
    インストールしてください。

    103270 SunOS 5.4: nissetup default permissions not secure enough
    101973 SunOS 5.4: libnsl, nistbladm & ypbind fixes

    103271 SunOS 5.4_x86: nissetup default permissions not secure enough
    101974 SunOS 5.4: SunOS 5.4_x86: libnsl, nistbladm & ypbind fixes


  3. Solaris 2.5 NIS+ パッチ

    パッチレポートより抽出しているため、必須とは限りません。

    103187 SunOS 5.5: libc, libnsl, libucb, nis_cachemgr and rpc.nisd
    103266 SunOS 5.5: nissetup default permissions for password table not secure
    103708 SunOS 5.5: rpc.nisd_resolv fixes
    103188 SunOS 5.5_x86: libc, libnsl, libucb, nis_cachemgr and rpc.nisd patch
    103267 SunOS 5.5_x86: nissetup default password table permissions not secure
    103709 SunOS 5.5_x86: rpc.nisd_resolv rebuild for BIND 4.9.3


  4. Solaris 2.5.1 NIS+ パッチ

    パッチレポートより抽出しているため、必須とは限りません。
    103640 SunOS 5.5.1: kernel, nisopaccess, & libthread patch
    103643 SunOS 5.5.1: /usr/lib/nis/nisaddent fixes
    103686 SunOS 5.5.1: rpc.nisd_resolv patch
    103770 SunOS 5.5.1: nistbladm patch
    103785 SunOS 5.5.1: nss_nisplus.so.1 patch
    103995 SunOS 5.5.1: rpc.nispasswdd patch
    104968 SunOS 5.5.1: chkey and newkey patch
    103641 SunOS 5.5.1_x86: kernel, nisopaccess, & libthread patch
    103644 SunOS 5.5.1_x86: /usr/lib/nis/nisaddent fixes
    103687 SunOS 5.5.1_x86: rpc.nisd_resolv patch
    103771 SunOS 5.5.1_x86: nistbladm patch
    103786 SunOS 5.5.1_x86: nss_nisplus.so.1 patch
    103996 SunOS 5.5.1_x86: rpc.nispasswdd patch
    104969 SunOS 5.5.1_x86: chkey and newkey patch

    103614 SunOS 5.5.1_ppc: libc, libnsl, nis_cachemgr and rpc.nisd patch
    各種ライブラリの修正と、NIS+デーモンの修正を含んでいます。
    103688 SunOS 5.5.1_ppc: rpc.nisd_resolv rebuild for BIND 4.9.3
    103787 SunOS 5.5.1_ppc: nss_nisplus.so.1 patch


  5. Solaris 2.6 NIS+ パッチ

    パッチレポートより抽出しているため、必須とは限りません。
    105401 SunOS 5.6: libnsl and NIS+ commands patch 適用を推奨
    105552 SunOS 5.6: /usr/sbin/rpc.nisd_resolv patch
    105562 SunOS 5.6: chkey and keylogin patch
    105564 SunOS 5.6: /kernel/misc/rpcsec patch
    108279 SunOS 5.6: nisaddent patch
    108346 SunOS 5.6: patch usr/sbin/rpc.nispasswdd
    105402 SunOS 5.6_x86: libnsl and NIS+ commands patch 適用を推奨
    105553 SunOS 5.6_x86: /usr/sbin/rpc.nisd_resolv patch
    105563 SunOS 5.6_x86: chkey and keylogin patch
    105565 SunOS 5.6_x86: /kernel/misc/rpcsec patch
    108280 SunOS 5.6_x86: nisaddent patch

    104468 Solstice AdminSuite 2.3/AutoClient 2.1: Jumbo patch, y2000, NIS+, 2.6
    104469 Solstice AdminSuite 2.3/AutoClient 2.1: Jumbo patch, y2000, NIS+, 2.6_x86
    ※日本語 AdminSuite 2.3 には 104468/104469 のパッチが付属しています。
    Solaris 2.6 と共に利用する際には必ず適用してください。
    ※2000年対応パッチなどを適用する際に手元にあった 105401-20 を入れたら bad patch でした。
    nisd が『Object auto_home.org_dir.trust.co.jp. isn't a directory.』 とメッセージが出ます。105401-25 以降をダウンロードしてください。


  6. Solaris 7 NIS+ パッチ

    106942 SunOS 5.7: libnsl, rpc.nisd and nis_cachemgr patch
    106943 SunOS 5.7_x86: libnsl, rpc.nisd and nis_cachemgr patch

  7. Solaris 8 NIS+ パッチ

    2000-07-05 現在、確認できる範囲では見当たらないようです。


6 リファレンス

  1. 重要なマニュアルページ

    chkey
    keylogin
    newkey
    nis
    nis_cachemgr
    nisaddcred
    niscat
    nisaddent
    nischgrp
    nischown
    nischttl
    nisclient
    nisdefaults
    nisgrep
    nisgrpadm
    nisinit
    nislog
    nisls
    nismatch
    nismkdir
    nisping
    nispopulate
    nisrm
    nisrmdir
    nisserver
    nistbladm
    nisudpkeys
    rpc.nisd
    nisbackup
    nisrestore

  2. Sunsolve における文献

    以下は SunSolve にある NIS+ に関係した文書の一覧です。
    これらの文書にアクセスするには SunSolve の ID が必要です。

    1. FAQ

      • 1012 NIS+ questions

    2. : Infodocs

      • 2216 NIS+ questions
      • 11742 How to convert a NIS+ root replica server to a root mas
      • 17749 Procedure to change the root users password on NIS+ machines

    3. : SRDB

      • 5816 fully qualified hostnames with NIS+
      • 5874 nis+ database recovery
        NIS+ データベースの復旧
      • 6285 change of root passwd on NIS+ server breaks authenticat
        NIS+ サーバでルートのパスワードを変更すると、認証が機能しなくなる
      • 6487 differences between NIS and NIS+
        NIS と NIS+ の違い
      • 6640 why does NIS+ require passwords
        なぜ NIS+ はパスワードを必要とするのか
      • 6616 is it possible to revert to NIS
        NIS に戻すことは出来るのか
      • 7202 cannot change NIS passwords served by NIS+ servers
        NIS+ サーバに対して NIS クライアントからパスワードの変更は出来ない
      • 10448 Changing the NIS+ master server.
        NIS+ マスタサーバの変更
      • 10941 NIS+ error messages
        NIS+ エラーメッセージ
      • 10951 NIS+ servers unreachable
        NIS+ サーバに到達できない
      • 11728 Changing a NIS+ server's IP address.
        NIS+ サーバの IP アドレスを変更する
      • 11742 How to convert a NIS+ root replica server to a root master server
        NIS+ ルート複製サーバをルートマスタサーバに変更する
      • 14994 Changed root master's IP address in AdminSuite, nis+ credentials are now bad.
        ルートマスタサーバの IPアドレスを AdminSuite で変更すると、NIS+ のクリデンシャルがおかしくなる。
      • 18603 NIS+ master and replica are out of sync now what?
        NIS+ マスタと複製の同期が外れているのはなぜ?
      • 19155 Rebuilding NIS+ root master credentials
        NIS+ ルートマスタのクリデンシャルを再構築する

  3. Sun Educational Services - サン・教育サービス

    NIS+ concepts and administration offered by SUNED (contact 1-800 number to get
    more information)

    *Solaris 2.X NIS+ Administration with Workshop
    ※訳注:日本での教育サービスは調べておりません。


  4. Solaris Documentation

    訳注: http://docs.sun.com/ に各種ドキュメントが置かれています。
    こちらは OS リリース毎にドキュメントが用意されているので、 実際に利用している OS 対応のものを読むことができます。
    ただし、内容としてまとまっているのは、より新しいリリースのものです。
    必要な個所を対照して、適切な情報を確定してください。


  5. サードパーティによる文献

    NIS+/DNS 管理, リック・ラムシー著、日本サン・ソフト監訳 アスキー出版局
    ISBN
    All About Administering NIS+, by Rick Ramsey, Prentice Hall
    ISBN 0-13-309576-2

  6. RFC


    NIS+ に関する RFC はありません。


10: 日本語版 付録

  1. NIS_PATH について

    環境変数 NIS_PATH は、シェルにおける PATH の NIS+ 版です。
    例えば、NIS_PATH='org_dir.$:$' と設定しておけば、 nisgrep asada passwd などと、org_dir 無しに実行できます。
    他にも、他のドメインに対する検索もできますので、 うまく使うと便利なものです。
    $ は nisdefaults -d と同じ意味を持ちます。 設定の際には $ がシェルに処理されないよう注意してください。

  2. WAN 対応

    NIS+ では問い合わせのトランザクションが頻繁に出てしまうので、低速な回線、 あるいは遅延時間の長い回線を持つ WAN では利用できませんでした。
    Solaris 2.6 より、問い合わせ間隔などを指定できる WAN 対応がなされています。 (nisprefadm(1M))
    詳しいことに付いては Documentation CD あるいは docs.sun.com にて文書をご覧下さい。
    ※実際に試した上で、解説を用意する予定です。(実現時期不明)

  3. NIS+ 環境のバックアップ/リストア

    Solaris 2.6 よりも前のリリースで NIS+ データのバックアップを行うならば、 /var/nis をまるごと、あるいは nisaddent や niscat 等を用いて テキストファイルに変換するしかありません。
    niscat を使った場合には、直接テーブルに書き戻すためのコマンドがないので、 なるべく nisaddent を使ってデータを取出してください。
    nisaddent を使う際、クリデンシャルテーブルは 2種類に分けて取出す必要があるのを忘れないでください。 (セクション 3.21を参照)

    一方 Solaris 2.6 以降では NIS+ サーバ上で NIS+ 環境を一括して バックアップあるいはリストアが出来るようになりました。
    nisbackup(1M) と nisrestore(1M) がそのコマンドです。
    詳しいことに付いては Documentation CD あるいは docs.sun.com にて 文書をご覧下さい。

    nisbackup の簡単な使い方

    必ずマスタサーバ上で実行します。
    このコマンドが動作している間の更新処理は禁止されます。

    コマンドは次の二通りの使い方ができます:

    nisbackup [-v] バックアップ先ディレクトリ NIS+ディレクトリ
    nisbackup [-v] -a バックアップ先ディレクトリ

    バックアップ先ディレクトリとは、バックアップしたデータを保存する ディレクトリのことです。
    NIS+ ディレクトリは複数指定でき、バックアップすべき NIS+ ディレクトリを列挙します。
    バックアップを実行するマスタサーバが持っている NIS+ ディレクトリの 全てをバックアップするなら -a オプションを指定して バックアップを実行してください。

    nisrestore の使い方

    nisbackup にてバックアップしたデータから、指定の NIS+ ディレクトリや データ全部を復元することができます。
    複製サーバ作成の際に、高速にデータを流し込む方法としても使えます。

    コマンドは次の三通りの使い方ができます:

    nisrestore [-fv] バックアップ先ディレクトリ NIS+ディレクトリ
    nisrestore [-fv] -a バックアップ先ディレクトリ
    nisrestore -t バックアップ先ディレクトリ

    バックアップ先ディレクトリとは、バックアップしたデータが保存されている ディレクトリのことです。
    NIS+ ディレクトリは複数指定でき、リストアすべき NIS+ ディレクトリを 列挙します。
    リストアを実行するマシンがサービスしていない NIS+ ディレクトリを 指定した場合はエラーとなります。これを強制的に流し込むには -f オプションを利用してください。
    バックアップされているデータ全てをリストアするならば、-a オプションを 使って実行します。
    -t オプションを使うと、バックアップ先に保存されている NIS+ ディレクトリの一覧を見ることができます。


  4. NIS+ におけるセキュリティホール

    1998/06/09 現在、CERT/CC より NIS+ のセキュリティホール(BUFFER OVERFLOW)
    問題が報告されています。(CA-98.06)
    NIS+ を利用しているサイトは是非とも適用してください。
            5.4     sparc   101973-35
            5.4     intel   101974-35
            5.5     sparc   103187-38
            5.5     intel   103188-38
            5.5.1   sparc   103612-41
            5.5.1   intel   103613-41
            5.6     sparc   105401-12
            5.6     intel   105402-12
      
    外部にポートを開いていない(フィルタリングしている)サイトでは アタック経路がないので大丈夫とは思いますが、バグ修正を含むので適用した方が 良いと思います。(Solution C-1)

  5. Solaris 7 での NIS+ 強化点

    1998/10/27 に Solaris 7 (開発中は Solaris 2.7 でした)が発表されました。
    このリリースにおいて、NIS+ の認証機構として AUTH_DES だけでなく、 Secure RPC GSS(General Security Service) の 640bit Diffie-Hellman キーや、 1024bit Diffie-Hellman キーを用いることができます。
    詳しくは nisauthconf(1M), gsscred(1M) を参照してください。
    Solaris 7 をお持ちでなくても、ドキュメント サイトでご覧になれます。リファレンスマニュアルページで検索してください。

  6. Solaris 8 Admin Pack / Solstice AdminSuite 3.0

    従来、AdminSuite を利用するには Sun Hardware Server Package か、 Solaris Easy Access Server(SEAS) などを購入するしかありませんでした。
    しかし、Solaris 8 がほぼ無償化されたのに伴い、 基本的な管理パッケージが無償化され、 Admin Pack としてダウンロードできるようになりました。
    詳細な情報は Solaris 8 Admin Pack のページをご覧下さい。
    AdminSuite は Version 3.0 となり、管理クライアントが Java で記述されて いる関係で、MS-Windows 上で利用できるそうです。
    かなり大きなアーカイブですが、サーバ版を持っていなかったサイトで、 AdminSuite を使いたかった人には朗報だと思います。
    ※nsswitch.con に compat がある場合、うまく動かないバグがあるらしく、 パッチ 109413(3.0.1), 109120(3.0), 109121(3.0 x86) が出てます。

  7. Linux NIS+ Support

    Linux NIS+ Support

  8. Solaris 8 での機能追加・変更

    project(4) を格納するためのテーブル project が追加されているので、 nsswitch.conf にも project 行があります。
    ※ Solaris 8 6/00 からだと思います。

  9. Solaris 8 Foundation Source と NIS+

    Solaris 8 Foundation Source が出ているとなれば、 NIS+ のソースコードも?と思ったのですが、 残念ながら含まれていません。



追加と訂正は Ray W. Hiltbrand (Ray.W.Hiltbrand@Eng.Auburn.EDU) までメールを送ってください。

この文書は http://www.eng.auburn.edu/users/rayh/solaris/NIS+_FAQ.htmlに保存されています。
オリジナルはperl filterを使い、Ray W. Hiltbrandによって変換されています。

この文書は浅田和久(HHD03265@nifty.ne.jp) が日本語に翻訳、HTML の構成変更を行いました。 おかしな点(だらけだと思いますが)は私まで連絡をお願い致します。
なお、文書の最新は http://homepage2.nifty.com/portulaca/solaris/NISPLUS-FAQ.html に置いてあります。


※※※注意※※※
オリジナルの記載内容で、古いと思われる点、間違っていると思われる点は、 英文でメールを送って修正してもらうほどの英語力と気力はないので、 この日本語版にのみ訂正をする方針です。
訳出の際に記載内容を確認してはいるものの、内容を試してみて、 おかしいと思われたときには連絡を浅田までお願い致します。
実際、少しクリティカルな作業である、マスタサーバと複製サーバの入れ替えで、 手順に不適切な個所が見つかっております。チェック漏れで申し訳ありません。


現在の状況
1998-03-06: 少しばかり訳文を追加。 構成に統一がとれていないのは全然手がつけられていない。
1998-03-25: passwd の訳注を追加、セクションの見出しを全て日本語にした。
1998-10-02: フォーマットを少しやり直し、日本語訳を少々変更。
1998-10-28: Solaris 7 リリースに伴って、少しだけ新機能を紹介。
1998-12-02: ルートマスタとルート複製サーバの入れ替え に誤りを発見・修正。その他訳追加・修正 (thanks: 羽原さん)
1998-12-03: 各種フォーマッティングを変更。(まだ全てには適用していない)
1998-12-11: nisbackup/nisrestore の簡単な使い方を記述。
1999-01-13: しばらく見ぬ間にオリジナルが 1.1.7 になっていたので、更新。
主に、こちらで改訂したような内容が入っていますが、 3.20 の様な内容は、こちらの方がマシと思います。
(オリジナルには相変わらず綴り間違いがあったりなんかしますし)
パッチの説明は 2.5 と 2.5.1 が一項目にまとめられた形になっていますが、 日本語版は独立した項目のままとします。
1999-06-11: 落ち穂拾い (^^; (thanks: 羽原@広島工業大学さん)
1999-06-30: section 4 の誤訳を修正(したつもり) (^^;; (thanks: 桝原さん)
ちょっと手直しを少々。
sunhelp.org に載っていたウワサでは Solaris 8 で IPv6 や IPsec が 装備されるとのこと。
IPv6 は NIS+ の hosts テーブルや、データベースファイルに影響が あると思いますけど、どういうふうになるんでしょね?
1999-08-09: ふとオリジナルを見ると、10日ほど前に更新されていたので対応。
しかし変更点を調べると、こちらでは対策済みの物が多かったので、 なるべく自前の文章を尊重させていただきました (^^)
文句があればどーぞ (^^;
1999-09-28: セクション 3.15 で nisaddent -r を使う例において、対象とするファイルを 一時ファイルである /tmp/passwd とすべきなのに、/etc/passwd と 書き間違えておりました。ちなみにオリジナルに起因するものですが、 チェックが甘くてごめんなさい。 (thanks: 中村@広島市立大学さん)
2000-01-20: セクション 5.5 でメモを書きましたが、年末に当てた 105401-20 が ヘンなメッセージを吐いていたので、たまたま精神的余裕のあった 本日になってようやく新しいパッチを入れました。 今のところ 105401-25 が最新です。
で、ついでにパッチの一覧を更新しました。 統合されて廃止されたものもあります。(Solaris 7用など)
Solaris 8 では ipnodes にて IPv4 と IPv6 のマッピングを行いますので、 NIS+ にもテーブル種別に ipnodes が増えています。 また Solaris 7 11/99 以降はユーザに権限を付与する機能である Role Based Access Control (RBAC)も追加されていますので、 この属性を保持するらしきテーブル種別も 5つ増えています。
おや、client_info_tbl というのも増えているです。slpd 関連?
2000-02-14: SunOS 5.6 の nisaddent パッチが出ていたので追加。 108279-01(SPARC) と 108280-01(x86) なり。
2000-02-22: 気まぐれで文章を一部変更。
2000-03-16: セクション 3.8 へのリンクがおかしかったのを直しました。
2000-05-10: 小修正と Solaris 8 Admin Pack の情報を追加。
2000-07-05: Solaris 8 のパッチ情報項目を追加。中身はなし。
2000-08-16: Linux における NIS+ のサポート状況リンクを付録に追加。
2000-09-11: 一部の文章に些細な直し。
2000-10-13: Solaris 8 project 機能についての些細な一行メモを追加。
2000-11-08: 連絡先を変更。
2001-01-25: Solaris 8 Foundation Source に関するメモを追加。
2001-08-07: 当ページの置場所を変更。


なお、訳者は NIS+ の質問も受付けております。 分かる範囲ではございますが、回答させて頂きます。
この部分の訳を優先して欲しいというリクエストも受付けます。