xref: /freebsd/lib/libc/posix1e/acl_set.3 (revision 069ac184)
1.\"-
2.\" Copyright (c) 2000, 2002 Robert N. M. Watson
3.\" All rights reserved.
4.\"
5.\" This software was developed by Robert Watson for the TrustedBSD Project.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in the
14.\"    documentation and/or other materials provided with the distribution.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.Dd June 25, 2009
29.Dt ACL_SET 3
30.Os
31.Sh NAME
32.Nm acl_set_fd ,
33.Nm acl_set_fd_np ,
34.Nm acl_set_file ,
35.Nm acl_set_link_np
36.Nd set an ACL for a file
37.Sh LIBRARY
38.Lb libc
39.Sh SYNOPSIS
40.In sys/types.h
41.In sys/acl.h
42.Ft int
43.Fn acl_set_fd "int fd" "acl_t acl"
44.Ft int
45.Fn acl_set_fd_np "int fd" "acl_t acl" "acl_type_t type"
46.Ft int
47.Fn acl_set_file "const char *path_p" "acl_type_t type" "acl_t acl"
48.Ft int
49.Fn acl_set_link_np "const char *path_p" "acl_type_t type" "acl_t acl"
50.Sh DESCRIPTION
51The
52.Fn acl_set_fd ,
53.Fn acl_set_fd_np ,
54.Fn acl_set_file ,
55and
56.Fn acl_set_link_np
57each associate an ACL with an object referred to by
58.Va fd
59or
60.Va path_p .
61The
62.Fn acl_set_fd_np
63and
64.Fn acl_set_link_np
65functions are not POSIX.1e calls.
66The
67.Fn acl_set_fd
68function allows only the setting of ACLs of type ACL_TYPE_ACCESS
69where as
70.Fn acl_set_fd_np
71allows the setting of ACLs of any type.
72The
73.Fn acl_set_link_np
74function acts on a symlink rather than its target, if the target of the
75path is a symlink.
76.Pp
77Valid values for the
78.Va type
79argument are:
80.Bl -column -offset 3n "ACL_TYPE_DEFAULT"
81.It ACL_TYPE_ACCESS	POSIX.1e access ACL
82.It ACL_TYPE_DEFAULT	POSIX.1e default ACL
83.It ACL_TYPE_NFS4	NFSv4 ACL
84.El
85.Pp
86Trying to set ACL_TYPE_NFS4 with
87.Va acl
88branded as POSIX.1e, or ACL_TYPE_ACCESS or ACL_TYPE_DEFAULT with ACL
89branded as NFSv4, will result in error.
90.Sh IMPLEMENTATION NOTES
91.Fx Ns 's
92support for POSIX.1e interfaces and features is still under
93development at this time.
94.Sh RETURN VALUES
95.Rv -std
96.Sh ERRORS
97If any of the following conditions occur, these functions shall return
98-1 and set
99.Va errno
100to the corresponding value:
101.Bl -tag -width Er
102.It Bq Er EACCES
103Search permission is denied for a component of the path prefix, or the
104object exists and the process does not have appropriate access rights.
105.It Bq Er EBADF
106The
107.Va fd
108argument is not a valid file descriptor.
109.It Bq Er EINVAL
110Argument
111.Va acl
112does not point to a valid ACL for this object, or the ACL type
113specified in
114.Va type
115is invalid for this object, or there is branding mismatch.
116.It Bq Er ENAMETOOLONG
117A component of a pathname exceeded 255 characters, or an
118entire path name exceeded 1023 characters.
119.It Bq Er ENOENT
120The named object does not exist, or the
121.Va path_p
122argument points to an empty string.
123.It Bq Er ENOMEM
124Insufficient memory available to fulfill request.
125.It Bq Er ENOSPC
126The directory or file system that would contain the new ACL cannot be
127extended, or the file system is out of file allocation resources.
128.It Bq Er EOPNOTSUPP
129The file system does not support ACL retrieval.
130.It Bq Er EROFS
131This function requires modification of a file system which is currently
132read-only.
133.El
134.Sh SEE ALSO
135.Xr acl 3 ,
136.Xr acl_delete 3 ,
137.Xr acl_get 3 ,
138.Xr acl_get_brand_np 3 ,
139.Xr acl_valid 3 ,
140.Xr posix1e 3
141.Sh STANDARDS
142POSIX.1e is described in IEEE POSIX.1e draft 17.
143Discussion
144of the draft continues on the cross-platform POSIX.1e implementation
145mailing list.
146To join this list, see the
147.Fx
148POSIX.1e implementation
149page for more information.
150.Sh HISTORY
151POSIX.1e support was introduced in
152.Fx 4.0 ,
153and development continues.
154.Sh AUTHORS
155.An Robert N M Watson
156