ACL(9)

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

書式
<sys/param.h> <sys/vnode.h> <sys/acl.h>

    typedef int     acl_type_t;
    typedef int     acl_tag_t;
    typedef mode_t  acl_perm_t;
    struct acl_entry {
            acl_tag_t       ae_tag;
            uid_t           ae_id;
            acl_perm_t      ae_perm;
    };
    typedef struct acl_entry        *acl_entry_t;
    struct acl {
            int                     acl_cnt;
            struct acl_entry        acl_entry[ACL_MAX_ENTRIES];
    };
    typedef struct acl      *acl_t;
    /*
     * acl_entry_t の a_tag に有効な値
     */
    #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
    /*
     * a_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
    /*
     * a_perm フィールドに可能なフラグ
     */
    #define ACL_PERM_EXEC      0x0001
    #define ACL_PERM_WRITE     0x0002
    #define ACL_PERM_READ      0x0004
    #define ACL_PERM_NONE      0x0000
    #define ACL_PERM_BITS      (ACL_PERM_EXEC | ACL_PERM_WRITE | ACL_PERM_READ)
    #define ACL_POSIX1E_BITS   (ACL_PERM_EXEC | ACL_PERM_WRITE | ACL_PERM_READ)

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

現在は、個々の ACL はカーネル内で固定サイズの ACL 構造体によって表現されます。 ACL は、ACL エントリの固定サイズ配列で構成されます。 各 ACL エントリは、 パーミッションの組、主要な名前空間、主要な識別子から構成されます。 結びつけられた acl_cnt フィールドの値に依存して、 これらの 0 個以上のエントリが "定義" されることが出来ます。

関連項目
VFS(9), VOP_ACLCHECK(9), VOP_GETACL(9), VOP_SETACL(9)

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