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

特権インタフェース

次の表は、特権を使用するためのインタフェースの一覧です。この表に続いて、主な特権インタフェースのいくつかについて説明します。

表 2–1 特権を使用するためのインタフェース

目的 

関数 

補足説明 

特権セットの取得と設定 

setppriv(2), getppriv(2), priv_set(3C), priv_ineffect(3C)

setppriv()getppriv() はシステム呼び出しです。priv_ineffect()priv_set() は簡易操作用のラッパーです。

特権の特定と変換 

priv_str_to_set(3C), priv_set_to_str(3C), priv_getbyname(3C), priv_getbynum(3C), priv_getsetbyname(3C), priv_getsetbynum(3C)

これらの関数は、指定された特権または特権セットを特定の名前または数字にマッピングします。  

特権セットの操作 

priv_allocset(3C), priv_freeset(3C), priv_emptyset(3C), priv_fillset(3C), priv_isemptyset(3C), priv_isfullset(3C), priv_isequalset(3C), priv_issubset(3C), priv_intersect(3C), priv_union(3C), priv_inverse(3C), priv_addset(3C), priv_copyset(3C), priv_delset(3C), priv_ismember(3C)

これらの関数は、特権のメモリー割り当て、テスト、および各種セット操作に関する機能を提供します。 

プロセスフラグの取得と設定 

getpflags(2), setpflags(2)

PRIV_AWARE プロセスフラグは、プロセスが特権を理解するのか、それともプロセスがスーパーユーザーモデルの下で実行されるのかを示します。PRIV_DEBUG は特権のデバッグ時に使用されます。 

低レベルの資格操作 

ucred_get(3C)

これらのルーチンは、デバッグ、低レベルのシステム呼び出し、およびカーネル呼び出しを行う際に使用されます。 

setppriv(): 特権設定用

特権設定用の主要関数は、 setppriv() です。その構文は次のとおりです。

int setppriv(priv_op_t op, priv_ptype_t which, \
const priv_set_t *set);

op は、実行する特権操作を表します。op パラメータには、次の 3 つの値のいずれかを指定できます。

which には、変更する特権セットの種類を指定します。次のいずれかを指定します。

set には、変更操作で使用される特権を指定します。

さらに、簡易関数 priv_set() が提供されています。

priv_str_to_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 には次のキーワードを含めることができます。