#include <tsol/fsattr.h>int getfsattr(char *path, u_long type, void *buf_p, int len);
getfsattr()は、マウントされているファイルシステムのファイルシステムセキュリティ属性を返します。path は、マウントされているファイルシステムにある任意のファイルのパス名です。type は、要求された属性のタイプです。type の値は次のとおりです。
ファイルシステムのアクセス ACL の数
ファイルシステムのアクセス ACL
ファイルシステムの許容された特権セット
ファイルシステムの強制された特権セット
ファイルシステムの CMW ラベル
ファイルシステムの属性フラグ
ファイルシステムのラベル範囲
ファイルシステムの MLD 接頭辞文字列
buf_p は要求された属性を保持するバッファへのポインタ、len はバッファの長さです。
fgetfsattr() は同じ情報を返しますが、その情報は記述子 fd が参照する開いたファイルのものです。buf_p と len は getfsattr() の場合と同じです。
path や fd の情報ラベルは変更されません。呼び出し元プロセスの情報ラベルも変更されません。
次の条件のどれかが該当する場合、getfsattr() の処理は失敗します。
path のパス接頭辞の構成要素に対する検索権限が拒否されています。この制約を除くには、呼び出し元プロセスで PRIV_FILE_DAC_SEARCH
か PRIV_FILE_MAC_SEARCH
特権の一方または両方を表明します。
buf_p か path が無効なアドレスを指しています。
要求された属性は設定されていません。
ファイルシステムの読み取りで入出力エラーが発生しました。
path を変換するときに検出されたシンボリックリンクの数が多すぎます。
パス引数の長さが PATH_MAX を超えています。
_POSIX_NO_TRUNC が有効なときにパス名の構成要素の長さが NAME_MAX [sysconf(3C) を参照] を超えています [pathconf(2) を参照]。
path で参照されているファイルは存在しません。
path のパス接頭辞にディレクトリでない構成要素があります。
次の条件のどれかが該当する場合、fgetfsattr() の処理は失敗します。
fd は開いたファイルの有効な記述子ではありません。
buf_p が無効なアドレスを指しています。
fd の参照先がファイルではなくソケットです。または要求された属性が設定されていません。
ファイルシステムの読み取りで入出力エラーが発生しました。