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

名称

acl_get_fd, acl_get_fd_np, acl_get_file, acl_get_link_npファイルのために ACL を取得する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/types.h>
#include < sys/acl.h>

acl_t
acl_get_fd( int fd);

acl_t
acl_get_fd_np( int fd, acl_type_t type);

acl_t
acl_get_file( const char *path_p, acl_type_t type);

acl_t
acl_get_link_np( const char *path_p, acl_type_t type);

解説

acl_get_fd(), acl_get_file(), acl_get_link_np() と acl_get_fd_np() は、それぞれ、ファイルから ACL の検索を許可します。 acl_get_fd() はファイル記述子からのタイプ ACL_TYPE_ACCESS の ACL の検索を許可する POSIX.1e 呼び出しです。 acl_get_fd_np() 関数は、ファイル記述子からの任意のタイプの ACL の検索を許可する acl_get_fd() の移植性のない形式です。 acl_get_file() 関数は、名前によってファイルから指定された ACL のタイプの取り出しを可能にする POSIX.1e 呼び出しです。 acl_get_link_np() は呼び出しの目標がシンボリックリンクである場合、シンボリックリンクをたどらない acl_get_file() の移植性のないバリエーションです。

メモリはこれらの関数によって割り付けできます。引数として (void *)acl_tacl_free(3) を呼ぶことによって、新しい ACL がもはや要求されない場合、呼び出し側はどんな解放可能なメモリも解放するべきです。

作業用記憶域の ACL は fd によって参照されたオブジェクトに関連した ACL の独立したコピーです。作業用記憶域の ACL は任意のアクセスコントロール決定に参加しません。

type 引数のための有効な値は、次の通りです:

ACL_TYPE_ACCESS POSIX.1e アクセス ACL
ACL_TYPE_DEFAULT POSIX.1e デフォルト ACL
ACL_TYPE_NFS4 NFSv4 ACL

返された ACL は、それに応じて、等級 (brand) が付けられます。

実装に関する注

FreeBSD の POSIX.1e インタフェースおよび特徴のサポートはまだこの時期に開発中です。

戻り値

成功して終了すれば、この関数は、検索された ACL へのポインタを返します。そうでなければ、 (acl_t)NULL の値が返されます。また、 errno は、エラーを示す値が設定されます。

エラー

下記条件のうちのどれかが生じる場合、 acl_get_fd() 関数は、 (acl_t)NULL の値を返し、対応する値を errno に設定します。
[ EACCES]
検索許可はパス接頭辞のコンポーネントのために否定されます。あるいは、オブジェクトは存在します。また、プロセスは適切なアクセス権を持っていません。
[ EBADF]
fd 引数が有効なファイル記述子ではありません。
[ EINVAL]
渡された ACL タイプが、このファイルオブジェクトには無効です。
[ ENAMETOOLONG]
パス名のコンポーネントが 255 文字を超過しました。あるいは、パス名全体が 1023 文字を超過しました。
[ ENOENT]
指定されたオブジェクトが存在しません。あるいは、 path_p 引数は空の文字列を指しています。
[ ENOMEM]
リクエストを遂行するにはメモリが不足しています。
[ EOPNOTSUPP]
ファイルシステムは ACL 検索をサポートしません。

規格

POSIX.1e は、IEEE の POSIX.1e の草案の 17 に記述されています。草案の議論は、クロスプラットフォームの POSIX.1e 実装メーリングリストで継続しています。このリストに加入するための、より詳しい情報については、 FreeBSD POSIX.1e 実装ページを参照してください。

歴史

POSIX.1e サポートは、 FreeBSD 4.0 で導入され、開発は継続しています。

作者

Robert N M Watson
June 25, 2009 FreeBSD