acl_set_fd
,
acl_set_fd_np
, acl_set_file
,
acl_set_link_np
— set an ACL
for a file
Standard C Library (libc, -lc)
#include
<sys/types.h>
#include <sys/acl.h>
int
acl_set_fd
(int
fd, acl_t acl);
int
acl_set_fd_np
(int
fd, acl_t acl,
acl_type_t type);
int
acl_set_file
(const
char *path_p, acl_type_t
type, acl_t
acl);
int
acl_set_link_np
(const
char *path_p, acl_type_t
type, acl_t
acl);
The
acl_set_fd
(),
acl_set_fd_np
(),
acl_set_file
(),
and
acl_set_link_np
()
each associate an ACL with an object referred to by fd
or path_p. The acl_set_fd_np
()
and acl_set_link_np
() functions are not POSIX.1e
calls. The acl_set_fd
() function allows only the
setting of ACLs of type ACL_TYPE_ACCESS where as
acl_set_fd_np
() allows the setting of ACLs of any
type. The acl_set_link_np
() function acts on a
symlink rather than its target, if the target of the path is a symlink.
Valid values for the type argument are:
ACL_TYPE_ACCESS |
POSIX.1e access ACL |
ACL_TYPE_DEFAULT |
POSIX.1e default ACL |
ACL_TYPE_NFS4 |
NFSv4 ACL |
Trying to set ACL_TYPE_NFS4 with acl branded
as POSIX.1e, or ACL_TYPE_ACCESS or ACL_TYPE_DEFAULT with ACL branded as
NFSv4, will result in error.
FreeBSD's support for POSIX.1e interfaces
and features is still under development at this time.
Upon successful completion, the value 0 is returned;
otherwise the value -1 is returned and the global variable
errno is set to indicate the error.
If any of the following conditions occur, these functions shall
return -1 and set 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.
- [
EBADF
]
- The fd argument is not a valid file descriptor.
- [
EINVAL
]
- Argument acl does not point to a valid ACL for this
object, or the ACL type specified in type is invalid
for this object, or there is branding mismatch.
- [
ENAMETOOLONG
]
- A component of a pathname exceeded 255 characters, or an entire path name
exceeded 1023 characters.
- [
ENOENT
]
- The named object does not exist, or the path_p
argument points to an empty string.
- [
ENOMEM
]
- Insufficient memory available to fulfill request.
- [
ENOSPC
]
- The directory or file system that would contain the new ACL cannot be
extended, or the file system is out of file allocation resources.
- [
EOPNOTSUPP
]
- The file system does not support ACL retrieval.
- [
EROFS
]
- This function requires modification of a file system which is currently
read-only.
POSIX.1e is described in IEEE POSIX.1e draft 17. Discussion of the
draft continues on the cross-platform POSIX.1e implementation mailing list.
To join this list, see the FreeBSD POSIX.1e
implementation page for more information.
POSIX.1e support was introduced in FreeBSD
4.0, and development continues.