EN JA
ACL(9)
ACL(9) FreeBSD Kernel Developer's Manual ACL(9)

名称

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

書式

#include < sys/param.h>
#include < sys/vnode.h>
#include < sys/acl.h>

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

解説

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

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

struct acl { 
        unsigned int            acl_maxcnt; 
        unsigned int            acl_cnt; 
        int                     acl_spare[4]; 
        struct acl_entry        acl_entry[ACL_MAX_ENTRIES]; 
};

ACL は、ACL エントリの固定サイズ配列で構成されます。各 ACL エントリは、パーミッションの組、主要な名前空間、主要な識別子から構成されます。この実装では、 acl_maxcnt フィールドは、常に ACL_MAX_ENTRIES に設定されています。

個別の 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
ファイルグループクラスの中のプロセスが許可されることができる任意のアクセス権の最高限度。これは、POSIX.1e ACL のためだけに有効です。
ACL_OTHER
その他の ACL エントリによって保護されていないプロセスのための任意のアクセス権。これは、POSIX.1e ACL のためだけに有効です。
ACL_OTHER_OBJ
ACL_OTHER と同じです。
ACL_EVERYONE
すべてのユーザの任意のアクセス権。これは、 NFSv4 ACL のためだけに有効です。

各 POSIX.1e 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_USERACL_GROUP 以外のエントリにおいて、このフィールドは、 ACL_UNDEFINED_ID に設定されるべきです。
acl_perm_t ae_perm
このフィールドは、この ACL に適合するプロセスが関連したファイルのアクセスのために、どの種類のアクセスかを定義します。 POSIX.1e ACL に関して、次は、有効です:
ACL_EXECUTE
プロセスは関連したファイルの実行が可能です。
ACL_WRITE
プロセスは関連したファイルへの書み込みが可能です。
ACL_READ
プロセスは関連したファイルからの読み込みが可能です。
ACL_PERM_NONE
プロセスは関連したファイルへの読み込み、書み込みまたは実行のパーミッションを所有していません。

NFSv4 ACL に関して、次は、有効です:

ACL_READ_DATA
プロセスは、関連するファイルから読み込みます。
ACL_LIST_DIRECTORY
ACL_READ_DATA と同じです。
ACL_WRITE_DATA
プロセスは、関連するファイルに書き込みます。
ACL_ADD_FILE
ACL_ACL_WRITE_DATA と同じです。
ACL_APPEND_DATA
ACL_ADD_SUBDIRECTORY
ACL_APPEND_DATA と同じです。
ACL_READ_NAMED_ATTRS
無視されます。
ACL_WRITE_NAMED_ATTRS
無視されます。
ACL_EXECUTE
プロセスは、関連するファイルを実行します。
ACL_DELETE_CHILD
ACL_READ_ATTRIBUTES
ACL_WRITE_ATTRIBUTES
ACL_DELETE
ACL_READ_ACL
ACL_WRITE_ACL
ACL_WRITE_OWNER
ACL_SYNCHRONIZE
無視されます。
acl_entry_type_t ae_entry_type
このフィールドは、NFSv4 ACL エントリのタイプを定義します。それは、 POSIX.1e ACL で使用されません。次の値は、有効です:
ACL_ENTRY_TYPE_ALLOW
ACL_ENTRY_TYPE_DENY
acl_flag_t ae_flags
このフィールドは、NFSv4 ACL エントリの継承フラグを定義します。それは、POSIX.1e ACL で使用されません。次の値は、有効です:
ACL_ENTRY_FILE_INHERIT
ACL_ENTRY_DIRECTORY_INHERIT
ACL_ENTRY_NO_PROPAGATE_INHERIT
ACL_ENTRY_INHERIT_ONLY

作者

このマニュアルページは、 Robert Watson によって書かれました。
September 18, 2009 FreeBSD