この項では、ポートモニターのその他の機能について簡単に説明します。
ポートモニターは現在実行中のサービスに影響することなく、システムへのアクセスを制限できなければなりません。そのために、ポートモニターは使用可能と使用不可の 2 つの内部状態を保持しています。ポートモニターの起動時の状態は、sac で設定した環境変数 ISTATE
の値で決まります。SAC とポートモニターのインタフェース を参照してください。
ポートモニターの有効と無効を切り換えると、その管理下にあるすべてのポートが影響を受けます。ポートモニターが 1 つのポートだけを管理している場合は、そのポートだけが影響を受けます。複数ポートがそのポートモニターの管理下にあるときは、それらのポートすべてが影響を受けます。
ポートモニターの有効と無効の切り換えは動的な操作です。この操作で、ポートモニターの内部状態が変わります。ただし、次にポートモニターを起動するときには、この状態は失われます。
これに対して、個々のポートの有効と無効の切り換えは静的な操作です。この操作によって管理ファイルが変更されます。次にポートモニターを起動しても、ポートの状態は残ります。
ポートモニターは、起動するサービスの utmpx エントリを作成します。そのとき、エントリのタイプフィールドは USER_PROCESS に設定されます。ただし、pmadm でサービスを追加したときに -fu を指定した場合だけです。utmpx エントリは、次にサービスによって変更されます。サービスが終了したときは、utmpx エントリは DEAD_PROCESS に設定されなければなりません。
ポートモニターは、起動したときに自分のプロセス ID をカレントディレクトリの _pid というファイルに書き込み、そのファイルにアドバイザリロックを設定します。
ポートモニターは、ポートモニターの管理ファイル _pmtab に指定されているサービスを起動する前に、サービスごとの構成スクリプトがあればライブラリ関数 doconfig() を呼び出してそれを実行します。セキュリティ上の理由だけではなく、サービスごとの構成スクリプトで制限コマンドの実行が指示される場合があるので、ポートモニターはルートアクセス権で起動されます。サービスの呼び出し方法の詳細は、ポートモニターの開発者が定義します。