exec されたプログラムの有効特権は、デフォルトではオンです。新しいプログラムは有効セット内に proc_setid 特権を含むため、ユーザー ID が変わるときに有効セットと保存セットがどのように変化するかを setuid(2) を呼び出して確認できます。詳細は、「ユーザー ID の変更」を参照してください。
retval = setuid(0); PRIV_EMPTY(&priv_get); retval = getppriv(PRIV_EFFECTIVE, &priv_get); priv_set_to_str(&priv_get, '$', buffer, &length); printf("Executable setuid effective = %s¥n", buffer); PRIV_EMPTY(&priv_get); retval = getppriv(PRIV_SAVED, &priv_get); priv_set_to_str(&priv_get, '$', buffer, &length); printf("Executable setuid saved = %s¥n", buffer);
printf 文によって、次のように出力されます。
Executable setuid effective = none
Executable setuid saved = file_mac_write$proc_setid