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

名称

mac_get_file, mac_get_link, mac_get_fd, mac_get_peer, mac_get_pid, mac_get_procファイル、ソケット、ソケットピアまたはプロセスのラベルを取得する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/mac.h>

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

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

int
mac_get_fd( int fd, mac_t label);

int
mac_get_peer( int fd, mac_t label);

int
mac_get_pid( pid_t pid, mac_t label);

int
mac_get_proc( mac_t label);

解説

mac_get_file() システムコールは、パス名によって指定されるファイルに関連しているラベルを返します。 mac_get_link() 関数は、シンボリックリンクをたどらないことを除いて、 mac_get_file() と同じです。

mac_get_fd() システムコールは、指定されたファイル記述子によって参照されるオブジェクトに関連しているラベルを返します。ファイルシステムソケットの場合では、返されたラベルが、ソケットのためのランデブとして動作するノードのディスク上のラベルと異なっている、ソケットラベルになることに注意してください。 mac_get_peer() システムコールは、ソケットのリモート終点に関連しているラベルを返します。この呼び出しの正確なセマンティクス (動作) は、プロトコルドメイン、通信タイプ、および終点によって決まります。通常、このラベルは、接続指向のプロトコルインスタンスが最初にセットアップされて、データグラムプロトコルで未定義であるときに、キャッシュされます。

mac_get_pid() と mac_get_proc() システムコールは、任意のプロセス ID、または現在のプロセスに関連しているプロセスラベルを返します。

これらの呼び出しで使用されるラベル記憶域は最初に割り付けられ、 mac_prepare(3) 関数を使用する準備をしなければなりません。アプリケーションがラベルを使用し終わっているとき、メモリは mac_free(3) を使用して返されます。

エラー

[ EACCES]
path の構成要素が検索可能でないか、またはファイルへの MAC 読み込みアクセスが拒否されました。
[ EINVAL]
要求されたラベル操作は、 fd によって参照されるオブジェクトには有効ではありません。
[ ENAMETOOLONG]
path によって指されたパス名が PATH_MAX を超えるか、またはパス名の構成要素が NAME_MAX を超えています。
[ ENOENT]
path の構成要素が存在していません。
[ ENOMEM]
新しい MAC ラベル構造体を割り付けるために利用可能なメモリが不十分です。
[ ENOTDIR]
path の構成要素がディレクトリではありません。

規格

POSIX.1e は、IEEE POSIX.1e ドラフト (草稿) 17 に説明されています。ドラフトの議論は、クロスプラットフォーム POSIX.1e 実装メーリングリストで続けています。このリストに参加するための詳しい情報に関しては、 FreeBSD POSIX.1e 実装ページを参照してください。

歴史

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