acl_add_perm
—
add permissions to a permission set
Standard C Library (libc, -lc)
#include <sys/types.h>
#include <sys/acl.h>
int
acl_add_perm
(acl_permset_t
permset_d, acl_perm_t
perm);
The acl_add_perm
() function is a POSIX.1e call that adds
the permission contained in perm to the permission set
permset_d.
Note: it is not considered an error to attempt to add permissions
that already exist in the permission set.
For POSIX.1e ACLs, valid values are:
ACL_EXECUTE |
Execute permission |
ACL_WRITE |
Write permission |
ACL_READ |
Read permission |
For NFSv4 ACLs, valid values are:
ACL_READ_DATA |
Read permission |
ACL_LIST_DIRECTORY |
Same as ACL_READ_DATA |
ACL_WRITE_DATA |
Write permission, or permission to create files |
ACL_ADD_FILE |
Same as ACL_READ_DATA |
ACL_APPEND_DATA |
Permission to create directories. Ignored for files |
ACL_ADD_SUBDIRECTORY |
Same as ACL_APPEND_DATA |
ACL_READ_NAMED_ATTRS |
Ignored |
ACL_WRITE_NAMED_ATTRS |
Ignored |
ACL_EXECUTE |
Execute permission |
ACL_DELETE_CHILD |
Permission to delete files and subdirectories |
ACL_READ_ATTRIBUTES |
Permission to read basic attributes |
ACL_WRITE_ATTRIBUTES |
Permission to change basic attributes |
ACL_DELETE |
Permission to delete the object this ACL is placed on |
ACL_READ_ACL |
Permission to read ACL |
ACL_WRITE_ACL |
Permission to change the ACL and file mode |
ACL_SYNCHRONIZE |
Ignored |
Calling acl_add_perm
() with
perm equal to ACL_WRITE or ACL_READ brands the ACL as
POSIX. Calling it with ACL_READ_DATA, ACL_LIST_DIRECTORY, ACL_WRITE_DATA,
ACL_ADD_FILE, ACL_APPEND_DATA, ACL_ADD_SUBDIRECTORY, ACL_READ_NAMED_ATTRS,
ACL_WRITE_NAMED_ATTRS, ACL_DELETE_CHILD, ACL_READ_ATTRIBUTES,
ACL_WRITE_ATTRIBUTES, ACL_DELETE, ACL_READ_ACL, ACL_WRITE_ACL or
ACL_SYNCHRONIZE brands the ACL as NFSv4.
The acl_add_perm
() function returns the value 0
if successful; otherwise the value -1 is returned and the global
variable errno is set to indicate the error.
The acl_add_perm
() function fails if:
- [
EINVAL
]
- Argument permset_d is not a valid descriptor for a
permission set within an ACL entry. Argument perm
does not contain a valid acl_perm_t value. ACL is
already branded differently.
POSIX.1e is described in IEEE POSIX.1e draft 17.
POSIX.1e support was introduced in FreeBSD 4.0. The
acl_add_perm
() function was added in
FreeBSD 5.0.
The acl_add_perm
() function was written by
Chris D. Faulhaber
<jedgar@fxp.org>.