ACL

Section: Misc. Reference Manual Pages (9)
索引 jman

BSD mandoc
 

索引

名称

acl - 仮想ファイルシステムアクセス制御リスト  

索引

書式

In sys/param.h In sys/vnode.h In sys/acl.h

カーネルコンフィギュレーションファイルの中に、 options UFS_ACL  

索引

解説

アクセス制御リスト、すなわち ACL は、 ファイルおよびディレクトリを表現する vnode に対する権限を、 きめ細かく指定可能とします。 しかしながら、 異なる ACL のセマンティクスを持つファイルシステムが過多にあるため、 vnode インタフェースは ACL の文法のみを理解し、基礎をなすファイルシステムが 細部を実装することを当てにしています。 基礎をなすファイルシステムに依存して、個々のファイルまたはディレクトリは、 関連付けられる 0 個以上の ACL を持つことが可能です。 それぞれ ACL の名前は、適切な vnode ACL 呼び出し VOP_ACLCHECK9, VOP_GETACL9 および VOP_SETACL9 の Fa type フィールドを使用して指定されます。

現在は、個々の ACL は以下に定義されるカーネル内で固定サイズの Vt acl 構造体によって表現されます。

struct acl {
        int                     acl_cnt;
        struct acl_entry        acl_entry[ACL_MAX_ENTRIES];
};

ACL は、ACL エントリの固定サイズ配列で構成されます。 各 ACL エントリは、 パーミッションの組、主要な名前空間、主要な識別子から構成されます。

個別の ACL エントリは、以下のメンバを持つ構造体の Vt acl_entry_t 型です。

Vt 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 エントリが存在するべきです。

Vt uid_t ae_id
この ACL がアクセスパーミッションを記述しているユーザのユーザ ID。
Vt 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(3), vaccess_acl_posix1e9, VFS(9), vaccess(9), VOP_ACLCHECK9, VOP_GETACL9, VOP_SETACL9  

索引

作者

このマニュアルページは An Robert Watson が書きました。


 

索引

Index

名称
書式
解説
実装に関する注
関連項目
作者

jman



Time: 07:07:51 GMT, January 12, 2009