名前 | 形式 | 機能説明 | 戻り値 | エラー | 関連項目
path で指定されたファイルや fd で参照されるファイルの特権を設定または取得します。fgetfpriv() と fsetfpriv() は、引数としてファイルへのオープン参照を必要とすることを除けば、それぞれ getfpriv() と setfpriv() と同じように機能します。
getfpriv() は、指定されたファイルに関連する、type で表される特権セットを priv_set で指定されたアドレスにコピーします。type の値は次のとおりです。
強制された特権セット
許容された特権セット
特権 PRIV_FILE_MAC_READ
が有効でない場合は、指定されたファイルに対し MAC 読み取り権が必要です。
setfpriv() は、指定されたファイルに関連する、type で表される特権セット (ターゲットセット) を設定または変更します。変更は、op の値と、priv_set (指定されたセット) で指定される特権セットに従って行われます。op の値は次のとおりです。
指定されたセットに表明されている各特権をターゲットセットに表明する。
指定されたセットに表明されている各特権をターゲットセットでは消去する。
指定されたセットと同じくターゲットセットを設定する。
type の値は getfpriv() と同じです。
どの場合でも、特権 PRIV_FILE_SETPRIV
が有効でなければなりません。さらに、特権 PRIV_FILE_OWNER
が有効でない場合は、ファイルの所有者しかその特権セットを変更できません。
特権 PRIV_FILE_MAC_WRITE
が有効でない場合は、呼び出し元プロセスに、指定されたファイルの MAC 書き込み権が必要です。DAC 書き込み権は必要ありません。
強制された特権を表明するには、それに対応する許容された特権が存在しなければなりません。したがって、両方の特権セットを変更する場合は、許容された特権セットをまず変更することをお奨めします。
ターゲットセットが許容されたセットの場合は、ターゲットセットから消去されたすべての特権が強制されたセットからも自動的に消去されます。
指定されたファイルが pty 擬似端末である場合を除き、getfpriv() の操作が正常に完了するためには、通常、MAC 読み取り権が必要であるか、特権 PRIV_FILE_MAC_READ
が有効でなければなりません。指定されたファイルが擬似端末 (/dev/ptyp* か /dev/ttyp*) の場合は、getfpriv() を呼び出すプロセスのラベルが、指定されたファイルのラベルより優位にはなく、かつ特権 PRIV_FILE_MAC_READ
が有効でないとき、getfpriv() は正常に終了しますが、priv_set の特権フィールドはゼロに設定されます。
次の条件のどれかが該当する場合、これらのルーチンは異常終了します。ターゲットセットは変更されません。
size か type に不当または未定義の値が指定されています。
priv_set が無効なアドレスを指しています。
さらに、次の条件のどれかが該当する場合、getfpriv() と setfpriv() は異常終了します。
path の 1 つの構成要素に対し検索権が拒否されています。この制約を除くには、呼び出し元プロセスで PRIV_FILE_DAC_SEARCH
特権か PRIV_FILE_MAC_SEARCH
特権の一方または両方を表明します。
次の条件のどれかが該当する場合、getfpriv() と fgetfpriv() は異常終了します。
指定されたファイルの MAC 読み取り権が拒否されていて、特権 PRIV_FILE_MAC_READ
が有効ではありません。
指定されたパスに、存在しない構成要素があります。
指定されたパス接頭辞にディレクトリでない構成要素があります。
パス引数の長さが PATH_MAX を超えているか、_POSIX_NO_TRUNC が有効なときにパス名構成要素の長さが NAME_MAX を超えています。
次の条件のどれかが該当する場合、setfpriv() と fsetfpriv() は異常終了します。ターゲットセットは変更されません。
指定されたファイルの MAC 書き込み権が拒否されていて、特権 PRIV_FILE_MAC_WRITE
が有効ではなく、ユーザーの認可上限がファイルの機密ラベルより優位にあります。
(1) 指定されたファイルが、特権をサポートしないファイルシステムにあるか (つまり、NFS、TMPFS 以外のファイルシステム)、(2) op に対し不当または未定義の値が指定されています。または、特権 PRIV_FILE_MAC_WRITE
が有効ではありません。
指定されたファイルの MAC 書き込み権が拒否されていて、ユーザーの認可上限がファイルの機密ラベルより優位にないか、(2) PRIV_FILE_SETPRIV
が有効でないか、または (3) 実効 uid が、指定されたファイルの所有者と一致せず、特権 PRIV_FILE_OWNER
が有効ではありません。
指定されたファイルが読み取り専用のファイルシステムにあります。
getppriv(2), setppriv(2), priv_macros(5)