ACL formats
QNX SDP8.0Programmer's GuideDeveloper
There are several ways to represent an ACL, depending on how it's to be used.
- External form
- The exportable, contiguous, persistent representation of an ACL in user-managed space. A program such as tar could (but currently doesn't) use this representation so that it could later restore the ACLs, even on a different filesystem.
- Internal form
- The internal representation of an ACL in working storage, which you'll work with in your program. As described below, this form uses various data types to represent an ACL, its entries, and each entry's tag and permissions.
- text form
- The structured textual representation of an ACL, such as getfacl and setfacl use.
The internal form uses the following data types:
- acl_t
- A pointer to an opaque ACL data structure in working storage.
- acl_entry_t
- An opaque descriptor for an entry in an ACL.
- acl_permset_t
- An opaque set of permissions in an ACL entry.
- acl_perm_t
- An individual permission; one of:
- ACL_EXECUTE
- ACL_READ
- ACL_WRITE
- acl_tag_t
- The type of tag; one of the following:
- ACL_GROUP — a named group.
- ACL_GROUP_OBJ — the owning group.
- ACL_MASK — the maximum permissions allowed for named users, named groups, and the owning group.
- ACL_OTHER — users whose process attributes don't match any other
ACL entry; the
world
. - ACL_USER — named users.
- ACL_USER_OBJ — the owning user.
- acl_type_t
- The type of ACL; one of:
- ACL_TYPE_ACCESS — an access ACL.
(If you expand the abbreviation, this term becomes
access access control list
, but that's what the POSIX draft called it.) - ACL_TYPE_DEFAULT — a default ACL that a directory can have.
It specifies the initial ACL for files and directories created in that directory.
Note:Default ACLs aren't currently implemented.
- ACL_TYPE_ACCESS — an access ACL.
(If you expand the abbreviation, this term becomes
You can use these functions to translate from one form of an ACL to another:
- acl_copy_ext()
- Copy an ACL from system space to user space (i.e., translate from the external form to the internal).
- acl_copy_int()
- Copy an ACL from user space to system space (i.e., translate from the internal form to the external).
- acl_from_text()
- Create an internal form of an ACL from a text form.
- acl_size()
- Determine the size of the external form of an ACL.
- acl_to_text()
- Convert an internal form of an ACL into a text form.
Page updated: