acl_get_file() - ファイル名による ACL の取得

標準

標準/拡張機能 C/C++ 依存項目

z/OS UNIX

両方 z/OS V1R3

形式

#define _OPEN_SYS	1
#include <sys/acl.h>

int  acl_get_file (const char *path_p, acl_type_t type_d, lacl_t acl_d, int *num);

機能説明

ファイルおよびディレクトリーへのアクセスを制御するために、許可ビットと一緒にアクセス制御 リスト (ACL) を使用してください。現在、ACL は HFS、TFS、および zFS ファイル・システムによってサポートされています。ご使用のセキュリティー製品で ACL がサポートされているかどうかについて、および ファイル・アクセスを決定するときに使用される規則について知っている必要があります。詳細は、「z/OS UNIX System Services 計画」を参照してください。

acl_get_file() 関数は、ファイル名によりオブジェクトに関連付けられたオブジェクト について type_d 引数を基にして ACL を検索します。ACL は、acl_d が指す、指定された作業用ストレージに取り出されます。 type_d = ACL_ACCESS の場合、acl_get_file() は、基本 ACL エントリーと拡張 ACL エントリーの 両方を取得します 基本 ACL エントリーは、ACL_ACCESS ACL だけに適用されます。

作業用ストレージは、acl_init() 関数を使用して割り振る必要があります。バッファーの大きさが十分でない場合、errno=E2BIG によって acl_get_fd() は失敗 し、fd が指す ACL 内の ACL の数が num に入ります。ユーザーは、num 値を使用してより大きい acl_t 構造体バッファーを取得 し、acl_get_fd() を再発行することができます。

指定した ACL が、ファイル記述子に関連付けられたオブジェクトにはない 場合、ACL エントリーがゼロの ACL が戻ります。ディレクトリー以外のオブジェクトが引数 fd によって参照されるとき に、type_d の値がディレクトリーおよびファイルのデフォルトである場合は、この関数は失敗します。

acl_get_fd() を呼び出した後で acl_get_entry() をはじめて呼び出したときには、システムによる順序付けに従って、ACL 内の最初の拡張 ACL エントリーが取得されます。acl_set_fd() を使用して、または OpType = ACL_ADD により acl_set_file() を使用して その同じ ACL を設定するために、acl_get_fd() の結果を使用できます。

戻り値

正常終了の場合は、関数がゼロを戻します。

以下の条件のいずれかが検出された場合、acl_get_file() 関数は NULL の値を戻し、errno に対応する値を設定します。

エラー・コード
説明
EACCES
パス接頭部のコンポーネントに対する検索許可が拒否されている、または オブジェクトが存在していて、適切なアクセス権がサブジェクトにありません。
EINVAL
引数 type_d は、無効な ACL 型です。引数 acl_d が、ACL 構造体を指していません。
ENAMETOOLONG
path name 引数の長さが PATH_MAX を超えているか、もしくは path name コンポーネントが NAME_MAX よりも長く、そのファイルに対して {_POSIX_NO_TRUNC} が有効です。シンボリック・リンクの場合、シンボリック・リンクの代わりに使われる パス名のストリングの長さが PATH_MAX を超えています。PATH_MAX と NAME_MAX の値は、pathconf() を使 用して判別することができます。
ENOENT
指定されたオブジェクトが存在しません。または、path_p 引数が空ストリングを指しています。
ENOTDIR
指定した型はディレクトリーおよびファイルのデフォルトでしたが、引数 path_p がディレクトリーではないか、あるいは パス接頭部のコンポーネントがディレクトリーではありません。
E2BIG
提供されたバッファーは、すべての拡張 ACL エントリーには小さすぎます。Num 値は、バッファー内に収まらなければならない ACL エントリーの数に なります。

関連情報