#include <sys/acl.h>

sys/acl.h

includes: Availability.h, _bounds.h, sys/kauth.h, sys/_types/_ssize_t.h
48 functions · 10 typedefs · 5 enums · 2 macros

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
underlying type unsigned int
ACL_READ_DATA2
ACL_LIST_DIRECTORY2
ACL_WRITE_DATA4
ACL_ADD_FILE4
ACL_EXECUTE8
8
ACL_DELETE16
ACL_APPEND_DATA32
ACL_ADD_SUBDIRECTORY32
ACL_DELETE_CHILD64
ACL_READ_ATTRIBUTES128
ACL_WRITE_ATTRIBUTES256
ACL_READ_EXTATTRIBUTES512
ACL_WRITE_EXTATTRIBUTES1024
ACL_READ_SECURITY2048
ACL_WRITE_SECURITY4096
ACL_CHANGE_OWNER8192
ACL_SYNCHRONIZE1048576

typedefacl_perm_t

typedef enum acl_perm_t acl_perm_t;

enumacl_tag_t

23.2.5 ACL entry tag type bits - nonstandard
underlying type unsigned int
ACL_UNDEFINED_TAG0
ACL_EXTENDED_ALLOW1
ACL_EXTENDED_DENY2

typedefacl_tag_t

typedef enum acl_tag_t acl_tag_t;

enumacl_type_t

23.2.6 Individual ACL types
underlying type unsigned int
ACL_TYPE_EXTENDED256
ACL_TYPE_ACCESS0Posix 1003.1e types - not supported
ACL_TYPE_DEFAULT1
ACL_TYPE_AFS2The following types are defined on FreeBSD/Linux - not supported
ACL_TYPE_CODA3
ACL_TYPE_NTFS4
ACL_TYPE_NWFS5

typedefacl_type_t

typedef enum acl_type_t acl_type_t;

macroACL_UNDEFINED_ID

#define ACL_UNDEFINED_ID NULL
XXX ?

enumacl_entry_id_t

23.2.8 ACL Entry Constants
underlying type int
ACL_FIRST_ENTRY0
ACL_NEXT_ENTRY-1
ACL_LAST_ENTRY-2

typedefacl_entry_id_t

typedef enum acl_entry_id_t acl_entry_id_t;

enumacl_flag_t

nonstandard ACL / entry flags
underlying type unsigned int
ACL_FLAG_DEFER_INHERIT1tentative
ACL_FLAG_NO_INHERIT131072
ACL_ENTRY_INHERITED16
ACL_ENTRY_FILE_INHERIT32
ACL_ENTRY_DIRECTORY_INHERIT64
ACL_ENTRY_LIMIT_INHERIT128
ACL_ENTRY_ONLY_INHERIT256

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 ACL

functionacl_free

extern int acl_free(void *obj_p)
man page · January 28, 2000
acl_free(3) — free ACL working state

functionacl_init

extern acl_t acl_init(int count)
man page · January 28, 2000
acl_init(3) — initialize ACL working storage

functionacl_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 entry

functionacl_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 entry

functionacl_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 entry

functionacl_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 ACL

functionacl_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 ACL

functionacl_valid

extern int acl_valid(acl_t acl)
man page · December 29, 2002
acl_valid(3) — validate an ACL

functionacl_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 ACL

functionacl_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 ACL

functionacl_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 set

functionacl_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 set

functionacl_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 set

functionacl_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 entry

functionacl_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 entry

functionacl_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 set

functionacl_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 set

functionacl_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 set

functionacl_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 entry

functionacl_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 entry

functionacl_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 entry

functionacl_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 entry

functionacl_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 qualifier

functionacl_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 entry

functionacl_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 file

functionacl_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 file

functionacl_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 file

functionacl_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 file

functionacl_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 file

functionacl_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 file

functionacl_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 representation

functionacl_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 representation

functionacl_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 representation

functionacl_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 representation

functionacl_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 text

functionacl_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 representation

functionacl_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