Data Structures |
| struct | zfs_ace_hdr |
| | All ACEs have a common hdr. More...
|
| struct | zfs_ace |
| | Standard ACE. More...
|
| struct | zfs_object_ace |
| | The following type only applies to ACE_ACCESS_ALLOWED|DENIED_OBJECT_ACE_TYPE and will only be set/retrieved in a CIFS context. More...
|
| struct | zfs_oldace |
| struct | zfs_acl_phys_v0 |
| struct | zfs_acl_phys |
| struct | acl_ops |
| struct | zfs_acl_node |
| struct | zfs_acl |
| | A zfs_acl_t structure is composed of a list of zfs_acl_node_t's. More...
|
| struct | acl_locator_cb |
| struct | zfs_acl_ids |
Defines |
| #define | ACE_SLOT_CNT 6 |
| #define | ZFS_ACL_VERSION_INITIAL 0ULL |
| #define | ZFS_ACL_VERSION_FUID 1ULL |
| #define | ZFS_ACL_VERSION ZFS_ACL_VERSION_FUID |
| #define | ZFS_ACE_SPACE (sizeof (zfs_oldace_t) * ACE_SLOT_CNT) |
| #define | ZFS_ACL_COUNT_SIZE (sizeof (uint16_t)) |
| | Size of ACL count is always 2 bytes.
|
| #define | ACL_DATA_ALLOCED 0x1 |
| #define | ZFS_ACL_SIZE(aclcnt) (sizeof (ace_t) * (aclcnt)) |
| #define | ZFS_ACL_DISCARD 0 |
| #define | ZFS_ACL_NOALLOW 1 |
| #define | ZFS_ACL_GROUPMASK 2 |
| #define | ZFS_ACL_PASSTHROUGH 3 |
| #define | ZFS_ACL_RESTRICTED 4 |
| #define | ZFS_ACL_PASSTHROUGH_X 5 |
Typedefs |
| typedef struct zfs_ace_hdr | zfs_ace_hdr_t |
| | All ACEs have a common hdr.
|
| typedef zfs_ace_hdr_t | zfs_ace_abstract_t |
| typedef struct zfs_ace | zfs_ace_t |
| | Standard ACE.
|
| typedef struct zfs_object_ace | zfs_object_ace_t |
| | The following type only applies to ACE_ACCESS_ALLOWED|DENIED_OBJECT_ACE_TYPE and will only be set/retrieved in a CIFS context.
|
| typedef struct zfs_oldace | zfs_oldace_t |
| typedef struct zfs_acl_phys_v0 | zfs_acl_phys_v0_t |
| typedef struct zfs_acl_phys | zfs_acl_phys_t |
| typedef struct acl_ops | acl_ops_t |
| typedef struct zfs_acl_node | zfs_acl_node_t |
| typedef struct zfs_acl | zfs_acl_t |
| | A zfs_acl_t structure is composed of a list of zfs_acl_node_t's.
|
| typedef struct acl_locator_cb | zfs_acl_locator_cb_t |
| typedef struct zfs_acl_ids | zfs_acl_ids_t |
Functions |
| int | zfs_acl_ids_create (struct znode *, int, vattr_t *, cred_t *, vsecattr_t *, zfs_acl_ids_t *) |
| | Create file system object initial permissions including inheritable ACEs.
|
| void | zfs_acl_ids_free (zfs_acl_ids_t *) |
| | Free ACL and fuid_infop, but not the acl_ids structure.
|
| boolean_t | zfs_acl_ids_overquota (struct zfsvfs *, zfs_acl_ids_t *) |
| int | zfs_getacl (struct znode *, vsecattr_t *, boolean_t, cred_t *) |
| | Retrieve a files ACL.
|
| int | zfs_setacl (struct znode *, vsecattr_t *, boolean_t, cred_t *) |
| | Set a file's ACL.
|
| void | zfs_acl_rele (void *) |
| void | zfs_oldace_byteswap (ace_t *, int) |
| void | zfs_ace_byteswap (void *, size_t, boolean_t) |
| | swap ace_t and ace_oject_t
|
| boolean_t | zfs_has_access (struct znode *zp, cred_t *cr) |
| | Return true if any access whatsoever granted, we don't actually care what access is granted.
|
| int | zfs_zaccess (struct znode *, int, int, boolean_t, cred_t *) |
| | Determine whether Access should be granted/denied.
|
| int | zfs_fastaccesschk_execute (struct znode *, cred_t *) |
| int | zfs_zaccess_rwx (struct znode *, mode_t, int, cred_t *) |
| | Translate traditional unix VREAD/VWRITE/VEXEC mode into native ACL format and call zfs_zaccess()
|
| int | zfs_zaccess_unix (struct znode *, mode_t, cred_t *) |
| | Access function for secpolicy_vnode_setattr.
|
| int | zfs_acl_access (struct znode *, int, cred_t *) |
| int | zfs_acl_chmod_setattr (struct znode *, zfs_acl_t **, uint64_t) |
| int | zfs_zaccess_delete (struct znode *, struct znode *, cred_t *) |
| | Determine whether Access should be granted/deny, without consulting least priv subsystem.
|
| int | zfs_zaccess_rename (struct znode *, struct znode *, struct znode *, struct znode *, cred_t *cr) |
| void | zfs_acl_free (zfs_acl_t *) |
| int | zfs_vsec_2_aclp (struct zfsvfs *, vtype_t, vsecattr_t *, cred_t *, struct zfs_fuid_info **, zfs_acl_t **) |
| int | zfs_aclset_common (struct znode *, zfs_acl_t *, cred_t *, dmu_tx_t *) |
| | Common code for setting ACLs.
|
| uint64_t | zfs_external_acl (struct znode *) |
| int | zfs_znode_acl_version (struct znode *) |
| int | zfs_acl_size (struct znode *, int *) |
| zfs_acl_t * | zfs_acl_alloc (int) |
| zfs_acl_node_t * | zfs_acl_node_alloc (size_t) |
| void | zfs_acl_xform (struct znode *, zfs_acl_t *, cred_t *) |
| | Convert old ACL format to new.
|
| void | zfs_acl_data_locator (void **, uint32_t *, uint32_t, boolean_t, void *) |
| uint64_t | zfs_mode_compute (uint64_t, zfs_acl_t *, uint64_t *, uint64_t, uint64_t) |
| | Determine mode of file based on ACL.
|
| int | zfs_acl_chown_setattr (struct znode *) |
ZFS Access Control Lists.
ZFS ACLs are stored in various forms. Files created with ACL version ZFS_ACL_VERSION_INITIAL will all be created with fixed length ACEs of type zfs_oldace_t.
Files with ACL version ZFS_ACL_VERSION_FUID will be created with various sized ACEs. The abstraction entries will utilize zfs_ace_hdr_t, normal user/group entries will use zfs_ace_t and some specialized CIFS ACEs will use zfs_object_ace_t.
Definition in file zfs_acl.h.