#include <sys/acl.h>
sys/acl.h
macroACL_MAX_ENTRIES
Implementation constants.
The ACL_TYPE_EXTENDED binary format permits 169 entries plus
the ACL header in a page. Give ourselves some room to grow;
this limit is arbitrary.
#define ACL_MAX_ENTRIES 128
enumacl_perm_t
23.2.2 Individual object access permissions - nonstandard
| ACL_READ_DATA | 2 | |
| ACL_LIST_DIRECTORY | 2 | |
| ACL_WRITE_DATA | 4 | |
| ACL_ADD_FILE | 4 | |
| ACL_EXECUTE | 8 | |
| ACL_SEARCH | 8 | |
| ACL_DELETE | 16 | |
| ACL_APPEND_DATA | 32 | |
| ACL_ADD_SUBDIRECTORY | 32 | |
| ACL_DELETE_CHILD | 64 | |
| ACL_READ_ATTRIBUTES | 128 | |
| ACL_WRITE_ATTRIBUTES | 256 | |
| ACL_READ_EXTATTRIBUTES | 512 | |
| ACL_WRITE_EXTATTRIBUTES | 1024 | |
| ACL_READ_SECURITY | 2048 | |
| ACL_WRITE_SECURITY | 4096 | |
| ACL_CHANGE_OWNER | 8192 | |
| ACL_SYNCHRONIZE | 1048576 |
typedefacl_perm_t
typedef enum acl_perm_t acl_perm_t;
enumacl_tag_t
23.2.5 ACL entry tag type bits - nonstandard
| ACL_UNDEFINED_TAG | 0 | |
| ACL_EXTENDED_ALLOW | 1 | |
| ACL_EXTENDED_DENY | 2 |
typedefacl_tag_t
typedef enum acl_tag_t acl_tag_t;
enumacl_type_t
23.2.6 Individual ACL types
| ACL_TYPE_EXTENDED | 256 | |
| ACL_TYPE_ACCESS | 0 | Posix 1003.1e types - not supported |
| ACL_TYPE_DEFAULT | 1 | |
| ACL_TYPE_AFS | 2 | The following types are defined on FreeBSD/Linux - not supported |
| ACL_TYPE_CODA | 3 | |
| ACL_TYPE_NTFS | 4 | |
| ACL_TYPE_NWFS | 5 |
typedefacl_type_t
typedef enum acl_type_t acl_type_t;
typedefacl_entry_id_t
typedef enum acl_entry_id_t acl_entry_id_t;
enumacl_flag_t
nonstandard ACL / entry flags
| ACL_FLAG_DEFER_INHERIT | 1 | tentative |
| ACL_FLAG_NO_INHERIT | 131072 | |
| ACL_ENTRY_INHERITED | 16 | |
| ACL_ENTRY_FILE_INHERIT | 32 | |
| ACL_ENTRY_DIRECTORY_INHERIT | 64 | |
| ACL_ENTRY_LIMIT_INHERIT | 128 | |
| ACL_ENTRY_ONLY_INHERIT | 256 |
typedefacl_flag_t
typedef enum acl_flag_t acl_flag_t;
typedefacl_t
typedef struct _acl *acl_t
typedefacl_entry_t
typedef struct _acl_entry *acl_entry_t
typedefacl_permset_t
typedef struct _acl_permset *acl_permset_t
typedefacl_flagset_t
typedef struct _acl_flagset *acl_flagset_t
typedefacl_permset_mask_t
typedef u_int64_t acl_permset_mask_t
functionacl_dup
extern acl_t acl_dup(acl_t acl)
23.1.6.1 ACL Storage Management
man page · January 28, 2000
acl_dup(3) — duplicate an ACLfunctionacl_free
extern int acl_free(void *obj_p)
man page · January 28, 2000
acl_free(3) — free ACL working statefunctionacl_init
extern acl_t acl_init(int count)
man page · January 28, 2000
acl_init(3) — initialize ACL working storagefunctionacl_copy_entry
extern int acl_copy_entry(acl_entry_t dest_d, acl_entry_t src_d)
23.1.6.2 (1) ACL Entry manipulation
man page · March 10, 2001
acl_copy_entry(3) — copy an ACL entry to another ACL entryfunctionacl_create_entry
extern int acl_create_entry(acl_t *acl_p, acl_entry_t *entry_p)
man page · March 16, 2001
acl_create_entry(3) — create a new ACL entryfunctionacl_create_entry_np
extern int acl_create_entry_np(acl_t *acl_p, acl_entry_t *entry_p, int entry_index)
man page · March 16, 2001
acl_create_entry_np(3) — create a new ACL entryfunctionacl_delete_entry
extern int acl_delete_entry(acl_t acl, acl_entry_t entry_d)
man page · March 10, 2001
acl_delete_entry(3) — delete an ACL entry from an ACLfunctionacl_get_entry
extern int acl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p)
man page · September 21, 2023
acl_get_entry(3) — retrieve an ACL entry from an ACLfunctionacl_valid
extern int acl_valid(acl_t acl)
man page · December 29, 2002
acl_valid(3) — validate an ACLfunctionacl_valid_fd_np
extern int acl_valid_fd_np(int fd, acl_type_t type, acl_t acl)
man page · December 29, 2002
acl_valid_fd_np(3) — validate an ACLfunctionacl_valid_file_np
extern int acl_valid_file_np(const char *path, acl_type_t type, acl_t acl)
man page · December 29, 2002
acl_valid_file_np(3) — validate an ACLfunctionacl_valid_link_np
extern int acl_valid_link_np(const char *path, acl_type_t type, acl_t acl)
man page · December 29, 2002
acl_valid_link_np(3) — validate an ACLfunctionacl_add_perm
extern int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm)
23.1.6.2 (2) Manipulate permissions within an ACL entry
man page · March 10, 2001
acl_add_perm(3) — add permissions to a permission setfunctionacl_calc_mask
extern int acl_calc_mask( /* not supported */ acl_t *acl_p )
functionacl_clear_perms
extern int acl_clear_perms(acl_permset_t permset_d)
man page · March 10, 2001
acl_clear_perms(3) — clear permissions from a permission setfunctionacl_delete_perm
extern int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm)
man page · March 10, 2001
acl_delete_perm(3) — delete permissions from a permission setfunctionacl_get_perm_np
extern int acl_get_perm_np(acl_permset_t permset_d, acl_perm_t perm)
man page · April 10, 2001
acl_get_perm_np(3) — "check if a permission is set in a permission set"functionacl_get_permset
extern int acl_get_permset(acl_entry_t entry_d, acl_permset_t *permset_p)
man page · March 10, 2001
acl_get_permset(3) — retrieve permission set from an ACL entryfunctionacl_set_permset
extern int acl_set_permset(acl_entry_t entry_d, acl_permset_t permset_d)
man page · March 10, 2001
acl_set_permset(3) — set the permissions of an ACL entryfunctionacl_maximal_permset_mask_np
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3) extern int acl_maximal_permset_mask_np(acl_permset_mask_t * mask_p)
nonstandard - manipulate permissions within an ACL entry using bitmasks
functionacl_get_permset_mask_np
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3) extern int acl_get_permset_mask_np(acl_entry_t entry_d, acl_permset_mask_t * mask_p)
functionacl_set_permset_mask_np
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3) extern int acl_set_permset_mask_np(acl_entry_t entry_d, acl_permset_mask_t mask)
functionacl_add_flag_np
extern int acl_add_flag_np(acl_flagset_t flagset_d, acl_flag_t flag)
nonstandard - manipulate flags on ACLs and entries
man page · March 10, 2001
acl_add_flag_np(3) — add flags to an flag setfunctionacl_clear_flags_np
extern int acl_clear_flags_np(acl_flagset_t flagset_d)
man page · March 10, 2001
acl_clear_flags_np(3) — clear flags from a flag setfunctionacl_delete_flag_np
extern int acl_delete_flag_np(acl_flagset_t flagset_d, acl_flag_t flag)
man page · March 10, 2001
acl_delete_flag_np(3) — delete flags from a flag setfunctionacl_get_flag_np
extern int acl_get_flag_np(acl_flagset_t flagset_d, acl_flag_t flag)
functionacl_get_flagset_np
extern int acl_get_flagset_np(void *obj_p, acl_flagset_t *flagset_p)
man page · March 10, 2001
acl_get_flagset_np(3) — retrieve flag set from an ACL or ACL entryfunctionacl_set_flagset_np
extern int acl_set_flagset_np(void *obj_p, acl_flagset_t flagset_d)
man page · March 10, 2001
acl_set_flagset_np(3) — set the flags of an ACL or ACL entryfunctionacl_get_qualifier
extern void *acl_get_qualifier(acl_entry_t entry_d)
23.1.6.2 (3) Manipulate ACL entry tag type and qualifier
man page · March 13, 2001
acl_get_qualifier(3) — retrieve the qualifier from an ACL entryfunctionacl_get_tag_type
extern int acl_get_tag_type(acl_entry_t entry_d, acl_tag_t *tag_type_p)
man page · March 10, 2001
acl_get_tag_type(3) — retrieve the tag type from an ACL entryfunctionacl_set_qualifier
extern int acl_set_qualifier(acl_entry_t entry_d, const void *tag_qualifier_p)
man page · Sept 2, 2008
acl_set_qualifier(3) — set ACL tag qualifierfunctionacl_set_tag_type
extern int acl_set_tag_type(acl_entry_t entry_d, acl_tag_t tag_type)
man page · March 10, 2001
acl_set_tag_type(3) — set the tag type of an ACL entryfunctionacl_delete_def_file
extern int acl_delete_def_file(
/* not supported */
const char *path_p
)23.1.6.3 ACL manipulation on an Object
functionacl_get_fd
extern acl_t acl_get_fd(int fd)
man page · December 29, 2002
acl_get_fd(3) — get an ACL for a filefunctionacl_get_fd_np
extern acl_t acl_get_fd_np(int fd, acl_type_t type)
man page · December 29, 2002
acl_get_fd_np(3) — get an ACL for a filefunctionacl_get_file
extern acl_t acl_get_file(const char *path_p, acl_type_t type)
man page · December 29, 2002
acl_get_file(3) — get an ACL for a filefunctionacl_get_link_np
extern acl_t acl_get_link_np(const char *path_p, acl_type_t type)
man page · December 29, 2002
acl_get_link_np(3) — get an ACL for a filefunctionacl_set_fd
extern int acl_set_fd(int fd, acl_t acl)
man page · December 29, 2002
acl_set_fd(3) — set an ACL for a filefunctionacl_set_fd_np
extern int acl_set_fd_np(int fd, acl_t acl, acl_type_t acl_type)
man page · December 29, 2002
acl_set_fd_np(3) — set an ACL for a filefunctionacl_set_file
extern int acl_set_file(const char *path_p, acl_type_t type, acl_t acl)
man page · December 29, 2002
acl_set_file(3) — set an ACL for a filefunctionacl_set_link_np
extern int acl_set_link_np(const char *path_p, acl_type_t type, acl_t acl)
man page · December 29, 2002
acl_set_link_np(3) — set an ACL for a filefunctionacl_copy_ext
extern ssize_t acl_copy_ext(void *_LIBC_SIZE(size) buf_p, acl_t acl, ssize_t size)
23.1.6.4 ACL Format translation
man page · February 3, 2011
acl_copy_ext(3) — convert an ACL to and from an external representationfunctionacl_copy_ext_native
extern ssize_t acl_copy_ext_native(void *_LIBC_SIZE(size) buf_p, acl_t acl, ssize_t size)
man page · February 3, 2011
acl_copy_ext_native(3) — convert an ACL to and from an external representationfunctionacl_copy_int
extern acl_t acl_copy_int(const void *_LIBC_UNSAFE_INDEXABLE buf_p)
man page · February 3, 2011
acl_copy_int(3) — convert an ACL to and from an external representationfunctionacl_copy_int_native
extern acl_t acl_copy_int_native(const void *_LIBC_UNSAFE_INDEXABLE buf_p)
man page · February 3, 2011
acl_copy_int_native(3) — convert an ACL to and from an external representationfunctionacl_from_text
extern acl_t acl_from_text(const char *_LIBC_UNSAFE_INDEXABLE buf_p)
man page · January 28, 2000
acl_from_text(3) — create an ACL from textfunctionacl_size
extern ssize_t acl_size(acl_t acl)
man page · February 3, 2011
acl_size(3) — convert an ACL to and from an external representationfunctionacl_to_text
extern char *_LIBC_CSTR acl_to_text(acl_t acl, ssize_t *len_p)
man page · January 28, 2000
acl_to_text(3) — convert an ACL to text