acl_add_perm(3)

acl_add_perm3

Add permissions to a permission set

Usage

#include <sys/types.h>

#include <sys/acl.h>

int

acl_add_perm(acl_permset_t permset_d, acl_perm_t perm);

Library

Standard C Library (libc, -lc)

Overview

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_DATARead permission
ACL_LIST_DIRECTORYSame as ACL_READ_DATA
ACL_WRITE_DATAWrite permission, or permission to create files
ACL_ADD_FILESame as ACL_READ_DATA
ACL_APPEND_DATAPermission to create directories. Ignored for files
ACL_ADD_SUBDIRECTORYSame as ACL_APPEND_DATA
ACL_READ_NAMED_ATTRSIgnored
ACL_WRITE_NAMED_ATTRSIgnored
ACL_EXECUTEExecute permission
ACL_DELETE_CHILDPermission to delete files and subdirectories
ACL_READ_ATTRIBUTESPermission to read basic attributes
ACL_WRITE_ATTRIBUTESPermission to change basic attributes
ACL_DELETEPermission to delete the object this ACL is placed on
ACL_READ_ACLPermission to read ACL
ACL_WRITE_ACLPermission to change the ACL and file mode
ACL_SYNCHRONIZEIgnored

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.

Return values

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.

Errors

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.

Releases

56 releases since FreeBSD 5.0-RELEASE; the text changed 33 times.

  1. 5.0
  2. 5.1–6.3
  3. 6.4
  4. 7.0
  5. 7.1
  6. 7.2
  7. 7.3
  8. 7.4
  9. 8.0
  10. 8.1
  11. 8.2
  12. 8.3
  13. 8.4
  14. 9.0
  15. 9.1
  16. 9.2
  17. 9.3
  18. 10.0
  19. 10.1
  20. 10.2
  21. 10.3
  22. 10.4
  23. 11.0
  24. 11.1
  25. 11.2
  26. 11.3
  27. 11.4
  28. 12.0
  29. 12.1
  30. 12.2
  31. 12.3
  32. 12.4
  33. 13.0–13.2
  34. 13.3–16.0

Standards

POSIX.1e is described in IEEE POSIX.1e draft 17.

History

POSIX.1e support was introduced in FreeBSD 4.0. The acl_add_perm() function was added in FreeBSD 5.0.

Authors

The acl_add_perm() function was written by Chris D. Faulhaber ⟨[email protected]⟩.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.