総合手引 | セクション 9 | English | オプション |
#include <sys/param.h>
#include <sys/vnode.h>
#include <sys/acl.h>
カーネルコンフィギュレーションファイルの中に、 options UFS_ACL
現在は、個々の ACL は以下に定義されるカーネル内で固定サイズの acl 構造体によって表現されます。
struct acl { int acl_cnt; struct acl_entry acl_entry[ACL_MAX_ENTRIES]; };
ACL は、ACL エントリの固定サイズ配列で構成されます。 各 ACL エントリは、 パーミッションの組、主要な名前空間、主要な識別子から構成されます。
個別の ACL エントリは、以下のメンバを持つ構造体の acl_entry_t 型です。
acl_tag_t ae_tag | |
以下は
ae_tag
に設定されるべき ACL の型の定義のリストです。
| |
ACL_UNDEFINED_FIELD | |
未定義の ACL 型。 | |
ACL_USER_OBJ | 実効ユーザ ID がファイルの所有者のユーザ ID と 一致するプロセスのための任意のアクセス権。 |
ACL_USER | 実効ユーザ ID が ACL エントリの権限と 一致するプロセスのための任意のアクセス権。 |
ACL_GROUP_OBJ | 実効グループ ID または全ての追加のグループがファイルの所有者のグループ ID と 一致するプロセスのための任意のアクセス権。 |
ACL_GROUP | 実効グループ ID または全ての追加のグループが ACL エントリの権限と 一致するプロセスのための任意のアクセス権。 |
ACL_MASK | ファイルグループクラスの中のプロセスが許可されることができる 任意のアクセス権の最高限度。 |
ACL_OTHER | その他の ACL エントリによって保護されていない プロセスのための任意のアクセス権。 |
ACL_OTHER_OBJ | ACL_OTHER と同じです。 各々の ACL エントリは、厳密に、1 つの ACL_USER_OBJ と 1 つの ACL_GROUP_OBJ と 1 つの ACL_OTHER を含まなければなりません。 ACL_USER, ACL_GROUP または ACL_OTHER が存在する場合には、厳密に 1 つの ACL_MASK エントリが存在するべきです。 |
uid_t ae_id | |
この ACL がアクセスパーミッションを記述しているユーザのユーザ ID。 | |
acl_perm_t ae_perm | |
このフィールドは、この ACL に適合するプロセスが関連したファイルの アクセスのために、どの種類のアクセスかを定義します。 | |
ACL_EXECUTE | プロセスは関連したファイルの実行が可能です。 |
ACL_WRITE | プロセスは関連したファイルへの書込みが可能です。 |
ACL_READ | プロセスは関連したファイルからの読込みが可能です。 |
ACL_PERM_NONE | プロセスは関連したファイルへの読込み、書込みまたは実行のパーミッションを 所有していません。 |
typedef mode_t *acl_permset_t;/* 内部の ACL 構造体 */ struct acl { int acl_cnt; struct acl_entry acl_entry[ACL_MAX_ENTRIES]; };
/* 外部の ACL 構造体 */ struct acl_t_struct { struct acl ats_acl; int ats_cur_entry; }; typedef struct acl_t_struct *acl_t;
/* * ae_tag フィールドに有効な値 */ #define ACL_UNDEFINED_TAG 0x00000000 #define ACL_USER_OBJ 0x00000001 #define ACL_USER 0x00000002 #define ACL_GROUP_OBJ 0x00000004 #define ACL_GROUP 0x00000008 #define ACL_MASK 0x00000010 #define ACL_OTHER 0x00000020 #define ACL_OTHER_OBJ ACL_OTHER
/* * acl_type_t 引数のために有効な値 */ #define ACL_TYPE_ACCESS 0x00000000 #define ACL_TYPE_DEFAULT 0x00000001 #define ACL_TYPE_AFS 0x00000002 #define ACL_TYPE_CODA 0x00000003 #define ACL_TYPE_NTFS 0x00000004 #define ACL_TYPE_NWFS 0x00000005
/* * ae_perm フィールドに可能なフラグ */ #define ACL_EXECUTE 0x0001 #define ACL_WRITE 0x0002 #define ACL_READ 0x0004 #define ACL_PERM_NONE 0x0000 #define ACL_PERM_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ) #define ACL_POSIX1E_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ)
/* * acl_get_entry() のための entry_id に可能な値 */ #define ACL_FIRST_ENTRY 0 #define ACL_NEXT_ENTRY 1
/* * ae_id フィールドの中の未定義の値 */ #define ACL_UNDEFINED_ID ((uid_t)-1)
ACL (9) | December 23, 1999 |
総合手引 | セクション 9 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.