ONC+ 開発ガイド

ポートモニタのその他の機能

この項では、ポートモニタのその他の機能について簡単に説明します。

システムへのアクセス制限

ポートモニタは現在実行中のサービスに影響することなく、システムへのアクセスを制限できなければなりません。そのために、ポートモニタは有効と無効の 2 つの内部状態を保持しています。ポートモニタの起動時の状態は、sac で設定した環境変数 ISTATE の値で決まります。SAC とポートモニタのインタフェース」 の項を参照してください。

ポートモニタの有効と無効を切り換えると、その管理下にあるすべてのポートが影響を受けます。ポートモニタが 1 つのポートだけを管理している場合は、そのポートだけが影響を受けます。複数ポートがそのポートモニタの管理下にあるときは、それらのポートすべてが影響を受けます。

ポートモニタの有効と無効の切り換えは動的な操作です。この操作で、ポートモニタの内部状態が変わります。ただし、次にポートモニタを起動するときには、この状態は失われます。

これに対して、個々のポートの有効と無効の切り換えは静的な操作です。この操作によって管理ファイルが変更されます。次にポートモニタを起動しても、ポートの状態は残ります。

utmpx エントリの作成

ポートモニタは、起動するサービスの utmpx エントリを作成します。そのとき、エントリのタイプフィールドは USER_PROCESS に設定されます。ただし、pmadm でサービスを追加したときに -fu を指定した場合だけです。utmpx エントリは、次にサービスによって変更されます。サービスが終了したときは、utmpx エントリは DEAD_PROCESS に設定されなければなりません。

ポートモニタのプロセス ID とファイルのロック

ポートモニタは、起動したときに自分のプロセス ID をカレントディレクトリの _pid というファイルに書き込み、そのファイルにアドバイザリロックを設定します。

サービス環境の変更: doconfig() の実行

ポートモニタは、ポートモニタの管理ファイル _pmtab に指定されているサービスを起動する前に、サービスごとの構成スクリプトがあればライブラリ関数 doconfig() を呼び出してそれを実行します。セキュリティ上の理由だけではなく、サービスごとの構成スクリプトで制限コマンドの実行が指示される場合があるので、ポートモニタはルートアクセス権で起動されます。サービスの呼び出し方法の詳細は、ポートモニタの開発者が定義します。