EN JA
MAC_SET(3)
MAC_SET(3) FreeBSD Library Functions Manual MAC_SET(3)

名称

mac_set_file, mac_set_fd, mac_set_procファイルまたはプロセスに MAC ラベルを設定する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/mac.h>

int
mac_set_file( const char *path, mac_t label);

int
mac_set_link( const char *path, mac_t label);

int
mac_set_fd( int fd, mac_t label);

int
mac_set_proc( mac_t label);

解説

mac_set_file() と mac_set_fd() 関数は、 label によって指定された MAC ラベルを、それぞれ path_p によって参照されるファイルまたはファイル記述子 fd に関連づけます。ファイル記述子がソケットに参照するとき、ファイル記述子でのラベル操作はソケットをバインドするときランデブとして使用されたファイルではなく、ソケットで動作することに注意してください。 mac_set_link() 関数は、シンボリックリンクをたどらないことを除いて、 mac_set_file() と同じです。

mac_set_proc() 関数は、 label によって指定された MAC ラベルを呼び出しプロセスに関連づけます。

プロセスは、ファイルへの MAC 書き込みアクセスがある場合にだけファイルにラベルを設定することができ、その実効ユーザ ID はファイルの所有者と等しいか、または適切な特権があります。

戻り値

The mac_set_fd(), mac_set_file(), mac_set_link(), and mac_set_proc() functions return the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

[ EACCES]
ファイルへの MAC 書き込みアクセスが拒否されました。
[ EBADF]
fd 引数が有効なファイル記述子ではありません。
[ EINVAL]
label 引数が有効な MAC ラベルではないか、 fd によって参照されたオブジェクトはラベル操作に適切ではありません。
[ EOPNOTSUPP]
MAC ラベルの設定が、 fd によって参照されたファイルでサポートされていません。
[ EPERM]
呼び出しプロセスは MAC ラベルを変更するための十分な特権がありません。
[ EROFS]
変更されるオブジェクトのファイルシステムは読み込み専用です。
[ ENAMETOOLONG]
path_p のパス名の長さが PATH_MAX を超えているか、またはパス名の構成要素が NAME_MAX より長いです。
[ ENOENT]
path_p によって参照されるファイルは存在していません。
[ ENOTDIR]
path_p によって参照されるパス名の構成要素が、ディレクトリではありません。

歴史

Mandatory Access Control (強制的アクセス制御) のサポートは、 TrustedBSD プロジェクトの一環として FreeBSD 5.0 で導入されました。
January 14, 2003 FreeBSD