sec_setplab サブルーチン
目的
プロセスの有効、最小、および最大の機密ラベルと、有効、最小、および最大の保全性ラベルを設定します。
ライブラリー
標準 C ライブラリー (libc.a)
構文
#include <sys/mac.h>
#include <sys/secconf.h>
int sec_setplab (pid, eff_sl, mincl, maxcl, eff_tl, min_tl_cl, max_tl_cl)
pid_t pid;
sl_t *eff_sl;
sl_t *mincl;
tl_t *maxcl;
tl_t *eff_tl;
tl_t *min_tl_cl;
tl_t *max_tl_cl;
説明
sec_setplab サブルーチンは、 pid パラメーターによって指定されたプロセスの有効、最小、および最大の機密ラベルと、有効、最小、および最大の保全性ラベルを設定します。
pid パラメーターの値が負の場合、呼び出しプロセスのパラメーターは変更されます。
呼び出しプロセスと変更されるプロセスは、同じ実ユーザー ID または同じ実効ユーザー ID を持つ必要があります。 あるいは、ユーザー ID 制限をバイパスするには、呼び出しプロセスに PV_DAC_O がなければなりません。
有効およびクリアランスの機密ラベル
独自の機密ラベルを変更するには、呼び出しプロセスに PV_LAB_SL_SELF 特権が必要です。 別のプロセスの機密ラベルを変更するには、呼び出しプロセスに PV_LAB_SL_PROC 特権が必要です。
呼び出しプロセスの有効機密ラベルは、ターゲット・プロセスの有効機密ラベルと等しくなければなりません。あるいは、呼び出しプロセスに PV_MAC_W_PROC 特権がなければなりません。
eff_sl、 mincl 、および maxcl パラメーターは、有効、最小、および最大の機密ラベルを指します。 3 つのラベルがすべて指定されている場合、最大機密ラベルは有効機密ラベルより上位でなければならず、有効機密ラベルは最小機密ラベルより上位でなければなりません。 1 つ以上の機密ラベル・パラメーターの値が NULL の場合、ターゲット・プロセスの対応する機密ラベルが置換され、優位関係は引き続き有効でなければなりません。 有効機密ラベルは、変更されるプロセスの現行情報ラベルより上位でなければなりません。 有効機密ラベルの値が NULL の場合、最大機密ラベルは、 pid パラメーターで指定されたプロセスの現行有効機密ラベルより上位でなければなりません。
有効、最小、または最大機密ラベルが呼び出しプロセスの認可の範囲外である場合、プロセスには PV_MAC_CL 特権が必要です。
有効、最小、または最大の機密ラベルの結果、 pid パラメーターで指定されたプロセスの対応するラベルがダウングレードまたはアップグレードされる場合、プロセスには PV_LAB_SL_DG 特権または PV_LAB_SL_UG 特権が必要です。
mincl または maxcl パラメーターを指定する場合、呼び出しプロセスには PV_LAB_CL 特権が必要です。
保全性ラベル
プロセスがサブジェクトまたはオブジェクト保全性ラベルを設定するには、PV_LAB_TL 特権が必要です。
eff_tl、 min_tl_cl 、および max_tl_cl パラメーターは、有効、最小、および最大の保全性ラベルを指しています。 3 つのラベルがすべて指定されている場合、最大保全性ラベルは有効保全性ラベルより上位でなければならず、有効保全性ラベルは最小保全性ラベルより上位でなければなりません。 1 つ以上の保全性ラベル・パラメーターの値が NULL の場合、ターゲット・プロセスの対応する保全性ラベルが置換され、優位関係は引き続き有効でなければなりません。 有効保全性ラベルの値が NULL の場合、最大機密ラベルは、 pid パラメーターで指定されたプロセスの現行有効保全性ラベルより上位でなければなりません。 有効保全性ラベル、最小保全性ラベル、または最大保全性ラベルが呼び出しプロセスの認可の範囲外である場合、または有効保全性ラベルが NOTL である場合、プロセスは PV_MIC_CL 特権を持っている必要があります。
min_tl_cl パラメーターも max_tl_cl パラメーターも NOTL にすることはできません。 min_tl_cl または max_tl_cl パラメーターが指定されている場合、呼び出しプロセスは PV_LAB_CL_TL 特権を持っている必要があります。
パラメーター
| 項目 | 説明 |
|---|---|
| pid | セキュリティー・ラベルが設定されるプロセスを指定します。 |
| eff_sl (eff_sl) | 有効機密ラベルを指します。 |
| mincl | 最小機密ラベルを指します。 |
| maxcl | 最大機密ラベルを指します。 |
| eff_tl (eff_tl) | 有効な保全性ラベルを指します。 |
| 最小 TL_CL | 最小保全性ラベルを指します。 |
| 最大 TLS_CL | 最大保全性ラベルを指します。 |
戻り値
| 項目 | 説明 |
|---|---|
| 0 | 成功 |
| -1 | 失敗 |
エラー・コード
| 項目 | 説明 |
|---|---|
| EINVAL | 渡されたすべてのラベル引数の値が NULL です |
| ESRCH | pid パラメーターの値に等しいプロセス ID を持つプロセスがありません。 |
| EPERM | 呼び出しプロセスに許可または特権がありません。 |
| EFAULT | ラベル引数が指すアドレスが有効ではありません。 |