次の表は、特権を使用するためのインタフェースの一覧です。この表に続いて、主な特権インタフェースのいくつかについて説明します。
|
特権設定用の主要関数は、setppriv() です。その構文は次のとおりです。
int setppriv(priv_op_t op, priv_ptype_t which, \ const priv_set_t *set);
op は、実行する特権操作を表します。op パラメータには、次の 3 つの値のいずれかを指定できます。
PRIV_ON – set 変数によって指定された特権を、which によって指定されたセット型に追加します
PRIV_OFF – set 変数によって指定された特権を、which によって指定されたセット型から削除します
PRIV_SET – set 変数によって指定された特権で、which によって指定されたセット型に含まれる特権を置き換えます
which には、変更する特権セットの種類を指定します。次のいずれかを指定します。
PRIV_PERMITTED
PRIV_EFFECTIVE
PRIV_INHERITABLE
PRIV_LIMIT
set には、変更操作で使用される特権を指定します。
さらに、簡易関数 priv_set() が提供されています。
これらの関数は、特権名を数値にマッピングする場合に役立ちます。priv_str_to_set() は、このファミリの一般的な関数です。priv_str_to_set() の構文は次のとおりです。
priv_set_t *priv_str_to_set(const char *buf, const char *set, \ const char **endptr);
priv_str_to_set() は特権名の文字列を引数に取りますが、その文字列は buf に指定されます。priv_str_to_set() が返す特権値のセットは、4 つの特権セットのいずれかと組み合わせることができます。**endptr は、構文解析エラーのデバッグ時に使用できます。
buf には次のキーワードを含めることができます。
「all」は、定義済みのすべての特権を示します。「all,!priv_name,...」の書式を使えば、指定された特権を除くすべての特権を指定できます。
「none」は、特権なしを示します。
「basic」 は、標準 UNIX オペレーティングシステムへのログイン時にすべてのユーザーに従来から許可されている操作を実行する際に必要となる特権のセットを示します。