Trusted Solaris 開発ガイド

許可特権のチェック

アプリケーションは、許可特権セットをチェックし、動作に必要なすべての特権があることを確認できます。チェックを行うと、アプリケーションに特権が足りない場合は、その結果に対しエラーメッセージを発行できます。必要な特権がそろわない状態で継続すると、エラーメッセージの解釈がより困難になります。

次の例は、許可セットを取得し、PRIV_FILE_MAC_WRITEPRIV_PROC_SETID、および PRIV_FILE_SETPRIV をチェックします。この例では示していませんが、PRIV_ISSUBSET マクロを使用すると、1 つの特権セットに別の特権セット内のすべての特権が含まれるかどうかを調べることもできます。

/* 特権セットのデータ構造体を初期化する */
 PRIV_EMPTY(&permitted_privs);

/* 許可されたセットの特権を調べる */

 if (getppriv(PRIV_PERMITTED, &permitted_privs) == -1)
 	perror("Cannot get list of permitted privileges¥n");

 if (!PRIV_ISASSERT(&permitted_privs, PRIV_FILE_MAC_WRITE))
 	fprintf(stderr, "Need: file_mac_write.¥n");

 if (!PRIV_ISASSERT(&permitted_privs, PRIV_PROC_SETID))
 	fprintf(stderr, "Need: proc_setid.¥n");

 if (!PRIV_ISASSERT(&permitted_privs, PRIV_FILE_SETPRIV))
 	fprintf(stderr, "Need: file_setpriv.¥n");