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.