YPXFR(8)

名称
ypxfr - リモートのサーバからローカルホストへ NIS データベースを転送する

書式
/usr/libexec/ypxfr [-f] [-c] [-d target domain] [-h source host] [-s source domain] [-p path] [-C taskid program-number ipaddr port] mapname

解説
ypxfr は NIS データベース(または マップ) を NIS サービスを使用し、ある NIS サーバから別のサーバにコピーします。 FreeBSD では一般に、 ypxfr は yppush(8) からマップ転送要求を受け取った ypserv(8) から 起動されます。 基本的に、 ypxfr を使用するのは、単一ドメイン内で複数の NIS サーバが使用される環境です。 一台のサーバ( NIS マスタ)は全ての NIS マップの基準となるコピーを管理します。 その他のサーバ( NIS スレーブ)は、マップに更新があったとき (例えば、ユーザが yppasswd(1) を用いてパスワードを更新したとき)に、 新しいバージョンのマップをマスタからコピーします。

実行時、 ypxfr は一時データベースファイルを /var/yp/[domainmame] に作成し、 指定された source host により提供される mapname の内容で埋めます。 マップ全体の転送が完了すると、 ypxfr は mapname の古いコピーを消去し、代わりに一時ファイルを置きます。 転送完了時に、 ypxfr は `現在のマップのクリア' 要求を、 ローカルの ypserv(8) プロセス宛に送信し、 古いマップを参照している場合にはクリアさせようとします。

ypxfr が作成した全てのファイルが所有者のみ読み書き可能なのは、 セキュリティのためである事に注意して下さい。 NIS マップとそれを格納するディレクトリは通常 root が所有しますので、 非特権ユーザによる権限の無い変更を防ぎます。

全ての NIS サーバ間で一貫性を保持するために ypxfr を cron(8) ジョブとして定期的に実行する事が出来ます。 ほとんど変更されないマップは 1 日 1 度 (システム使用率が一番低い深夜が望ましいでしょう)更新すれば良いですが、 頻繁に変更されるマップ(例えば passwd.byname や passwd.byuid) はおそらく 1 時間に 1 度更新すべきでしょう。 cron(8) を使用し NIS マップを自動的に更新する事は厳密には必須ではありません。 なぜなら、全ての更新は NIS マスタサーバ上で /var/yp/Makefile が実行された時に yppush(8) にて伝搬されているはずだからです。 ただし、通信不能となって NIS サーバ間で同期が取れなくなる事があるような 大きなネットワークでは、良い実現方式です。

ypxfr が制御端末無しで起動された場合、例えば ypserv(8) 内部から起動された場合には、 syslog(3) 機構を使用して、全ての出力のログを取ります。

注
FreeBSD バージョンの ypxfr は FreeBSD の rpc.ypxfrd(8) サーバと連動する特別なマップ転送プロトコルをサポートします。 このプロトコルは、 生のマップデータベースファイルを NIS マスタサーバから転送する事を許しますので、 特に大きな NIS マップの場合は、標準の転送方法よりも数倍高速です。 ypxfr コマンドは NIS マスタサーバ上に rpc.ypxfrd(8) が登録されているかをチェックし、存在する場合にはこれを使用しようとします。 存在しない場合には、標準プロトコルを使用し、 ypserv(8) からマップの内容をコピーし、新たなマップを作成します。

概念的には FreeBSD の ypxfrd プロトコルは SunOS の ypxfrd プロトコルと同じですが、 FreeBSD のプロトコルは SunOS のプロトコルとは互換ではないため、 Sun の ypxfrd サーバとともに使用する事は出来ない事に注意して下さい。 FreeBSD のスレーブは、非 FreeBSD の NIS サーバから マップを転送する事が出来ますが、 高速プロトコルを使用できるのは、マスタサーバも FreeBSD の場合だけです。

オプション
ypxfr がサポートするオプションは以下の通りです:

-f  マップ転送を強制します。通常、 NIS マスタ上のコピーがローカルホスト上にあるコピーよりも新しくない場合には、 ypxfr はマップを転送しません: -f フラグにより、サーバ上のバージョンが新しいか否かにかにかかわらず、 転送します。

-c  ローカルホスト上で実行されている ypserv(8) プロセス宛に `現在のマップのクリア' 要求を送信しません。 このフラグは通常 ypserv(8) を実行していないマシン上で ypxfr を手動で起動する時に使用します。 このフラグを指定しないと、ローカルの NIS サーバと通信できないために、 ypxfr は転送を中止します。

-d target domain
    現在の NIS ドメインではない別のドメイン名を指定します。

-h source host
    NIS マップのコピー元のホスト名を指定します。 このオプションにより ypxfr が NIS マスタサーバからのみマップをコピーする事を保証できます。

-s source domain
    マップの転送元のドメインを指定します。 これは 2 つの NIS ドメイン間で転送を行う時に有用です。

-p path
    NIS マップを保持する最上位ディレクトリを指定します。 デフォルトではこのパスは /var/yp です。 -p フラグにより別のパスを指定し、 NIS マップを別の場所に格納する場合に対処できます。 NIS サーバ ypserv(8) が別のパスを使用するように指示された場合にも、このフラグを ypxfr に渡します。

-C taskid program-number ipaddr port
    yppush(8) によるマップ転送要求への応答として、 ypxfr が ypserv(8) から起動された場合にのみ、このオプションは使用されます。 この場合、 ypxfr は yppush(8) を `コールバック' して通信する必要がありますので、 yppush(8) は IP アドレス ipaddr 、ポート番号 port 、登録プログラム番号(registered program number) program-number 、トランザクション ID taskid を渡し、 マスタサーバ上で待っている yppush(8) プロセスと通信出来るようにします。

mapname
    転送するマップを指定します。

関連ファイル
/var/yp/[domainname]/[maps]
    ある NIS ドメインの NIS マップ。

関連項目
yp(8), ypserv(8), yppush(8)

作者
Bill Paul <wpaul@ctr.columbia.edu>