Updated: 2020/Jul/29


ACL_ADD_PERM(3)            Library Functions Manual            ACL_ADD_PERM(3)

NAME
     acl_add_perm - add permissions to a permission set

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/types.h>
     #include <sys/acl.h>

     int
     acl_add_perm(acl_permset_t permset_d, acl_perm_t perm);

DESCRIPTION
     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.

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.

SEE ALSO
     acl(3), acl_clear_perms(3), acl_delete_perm(3), acl_get_brand_np(3),
     acl_get_permset(3), acl_set_permset(3), posix1e(3)

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
     <jedgar@fxp.org>.

NetBSD 9.99                      June 25, 2009                     NetBSD 9.99