acl_get_file(3) — Linux manual page


ACL_GET_FILE(3)       BSD Library Functions Manual       ACL_GET_FILE(3)

NAME         top

     acl_get_file — get an ACL by filename

LIBRARY         top

     Linux Access Control Lists library (libacl, -lacl).

SYNOPSIS         top

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

     acl_get_file(const char *path_p, acl_type_t type);

DESCRIPTION         top

     The acl_get_file() function retrieves the access ACL associated
     with a file or directory, or the default ACL associated with a
     directory. The pathname for the file or directory is pointed to by
     the argument path_p.  The ACL is placed into working storage and
     acl_get_file() returns a pointer to that storage.

     In order to read an ACL from an object, a process must have read
     access to the object's attributes.

     The value of the argument type is used to indicate whether the
     access ACL or the default ACL associated with path_p is returned.
     If type is ACL_TYPE_ACCESS, the access ACL of path_p is returned.
     If type is ACL_TYPE_DEFAULT, the default ACL of path_p is returned.
     If type is ACL_TYPE_DEFAULT and no default ACL is associated with
     the directory path_p, then an ACL containing zero ACL entries is
     returned. If type specifies a type of ACL that cannot be associated
     with path_p, then the function fails.

     This function may cause memory to be allocated.  The caller should
     free any releasable memory, when the new ACL is no longer required,
     by calling acl_free(3) with the (void*)acl_t returned by
     acl_get_file() as an argument.

RETURN VALUE         top

     On success, this function returns a pointer to the working storage.
     On error, a value of (acl_t)NULL is returned, and errno is set

ERRORS         top

     If any of the following conditions occur, the acl_get_file()
     function returns a value of (acl_t)NULL and sets errno to the
     corresponding value:

     [EACCES]           Search permission is denied for a component of
                        the path prefix or the object exists and the
                        process does not have appropriate access rights.

                        Argument type specifies a type of ACL that
                        cannot be associated with path_p.

     [EINVAL]           The argument type is not ACL_TYPE_ACCESS or

     [ENAMETOOLONG]     The length of the argument path_p is too long.

     [ENOENT]           The named object does not exist or the argument
                        path_p points to an empty string.

     [ENOMEM]           The ACL working storage requires more memory
                        than is allowed by the hardware or system-
                        imposed memory management constraints.

     [ENOTDIR]          A component of the path prefix is not a

     [ENOTSUP]          The file system on which the file identified by
                        path_p is located does not support ACLs, or ACLs
                        are disabled.

STANDARDS         top

     IEEE Std 1003.1e draft 17 (“POSIX.1e”, abandoned)

SEE ALSO         top

     acl_free(3), acl_get_entry(3), acl_get_fd(3), acl_set_file(3),

AUTHOR         top

     Derived from the FreeBSD manual pages written by Robert N M Watson
     <>, and adapted for Linux by Andreas Gruenbacher

COLOPHON         top

     This page is part of the acl (manipulating access control lists)
     project.  Information about the project can be found at  If you have a bug report
     for this manual page, see
     ⟨⟩.  This page was
     obtained from the project's upstream Git repository
     ⟨git://⟩ on 2021-08-27.  (At that
     time, the date of the most recent commit that was found in the
     repository was 2021-03-16.)  If you discover any rendering problems
     in this HTML version of the page, or you believe there is a better
     or more up-to-date source for the page, or you have corrections or
     improvements to the information in this COLOPHON (which is not part
     of the original manual page), send a mail to

Linux ACL                    March 23, 2002                    Linux ACL