Oracle Solaris セキュリティーサービス開発ガイド

PAM サービスプロバイダの要件

PAM サービスモジュールは、pam_get_item(3PAM)pam_set_item(3PAM) を使ってアプリケーションとの通信を行います。サービスモジュール同士の通信には、pam_get_data(3PAM)pam_set_data(3PAM) が使用されます。同一プロジェクト内のサービスモジュール間でデータを交換する必要がある場合、そのプロジェクト内で一意に決まるデータ名を確立する必要があります。その後、サービスモジュールは、関数 pam_get_data()pam_set_data() を使ってそのデータを共有できます。

サービスモジュールは、次の 3 種類の PAM 戻りコードのいずれかを返す必要があります。

1 つのサービスモジュール内に複数の機能が含まれている場合、それらの機能はそれぞれ個別のモジュールに分割することをお勧めします。そうすることで、システム管理者は、ポリシー設定時によりきめ細かい制御を行えるようになります。

新しいサービスモジュールを作成した場合、対応するマニュアルページを提供する必要があります。マニュアルページには、次の情報を含める必要があります。

サービスモジュールは、メッセージを抑制するための PAM_SILENT フラグを尊重することが求められます。デバッグ情報を syslog に記録するには、debug 引数を指定することをお勧めします。デバッグ情報を記録するには、syslog(3C) 使用時に LOG_AUTH と LOG_DEBUG を指定します。その他のメッセージは、LOG_AUTH と適切な優先度を指定して syslog() に送るべきです。openlog(3C)closelog(3C)、および setlogmask(3C) という 3 つの関数はアプリケーションの設定に悪影響を与えるので、決して使用しないでください。