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