GETACL(2)
NAME
getacl, fgetacl − get access control list (ACL) information
SYNOPSIS
#include <unistd.h>
#include <sys/acl.h>
int getacl (path, nentries, acl)
char∗path;
intnentries;
structacl_entry acl[];
int fgetacl (fildes, nentries, acl)
intfildes;
intnentries;
structacl_entry acl[];
Remarks:
To ensure continued conformance with emerging industry standards, features described in this manual entry are likely to change in a future release.
DESCRIPTION
Getacl returns a complete listing of all ACL entries (uid.gid, mode) in an existing file’s access control list. Path points to a path name of a file.
Similarly, fgetacl returns a complete listing of all ACL entries for an open file known by the file descriptor fildes.
The nentries parameter is the number of entries being reported on, and is never more than the constant NACLENTRIES defined in <sys/acl.h>. If nentries is non-zero, it must be at least as large as the number of entries in the file’s ACL, including base entries (see setacl(2)). Getacl returns the number of entries in the file’s ACL, as well as the ACL entries themselves in the array of structures acl declared by the calling program.
If nentries is zero, getacl returns the number of entries in the file’s ACL, including base ACL entries, and acl is ignored.
Entries are reported in groups of decreasing order of specificity (see setacl(2)), then sorted in each group by user ID and group ID. The content of array entries beyond the number of defined entries for the file is undefined.
RETURN VALUE
Upon successful completion, getacl and fgetacl return a non-negative value. If an error occurs, a value of −1 is returned, and the global variable errno is set to indicate the error.
ERRORS
Getacl or fgetacl fail to modify the acl array if any of the following is true:
[ENOTDIR] A component of the path prefix is not a directory.
[ENOENT] The named file does not exist (for example, path is null or a component of path does not exist).
[EBADF] Fildes is not a valid file descriptor.
[EACCES] A component of the path prefix denies search permission.
[EFAULT] Path or a portion of acl to be written points outside the allocated address space of the process.
[EINVAL] Nentries is non-zero and less than the number of entries in the file’s ACL, or it is greater than NACLENTRIES.
[EOPNOTSUPP] Getacl is not supported on remote files by some networking services.
[ENFILE] The system file table is full.
[ENAMETOOLONG]
The length of path exceeds PATH_MAX bytes, or the length of a component of path exceeds NAME_MAX bytes while _POSIX_NO_TRUNC is in effect.
[ELOOP] Too many symbolic links were encountered in translating the path name.
EXAMPLES
The following call returns the number of entries in the ACL on file “/users/bill/mcfile”.
#include <sys/acl.h>
entries = getacl ("/users/bill/mcfile", 0, (struct acl_entry ∗) 0);
The following call returns in acl all entries in the ACL on the file opened with file descriptor 5.
#include <sys/acl.h>
int nentries;
struct acl_entry acl [NACLENTRIES];
entries = fgetacl (5, NACLENTRIES, acl);
DEPENDENCIES
RFA and NFS
Getacl and fsetacl are not supported on remote files.
AUTHOR
Getacl and fgetacl were developed by HP.
SEE ALSO
access(2), chmod(2), getaccess(2), setacl(2), stat(2), unistd(5).
Hewlett-Packard Company — HP-UX Release 7.0: Sept 1989