1.\" Copyright (c) 2001 Networks Associates Technology, Inc. 2.\" All rights reserved. 3.\" 4.\" This software was developed for the FreeBSD Project by Chris 5.\" Costello at Safeport Network Services and NAI Labs, the Security 6.\" Research Division of Network Associates, Inc. under DARPA/SPAWAR 7.\" contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA CHATS 8.\" research program. 9.\" 10.\" Redistribution and use in source and binary forms, with or without 11.\" modification, are permitted provided that the following conditions 12.\" are met: 13.\" 1. Redistributions of source code must retain the above copyright 14.\" notice, this list of conditions and the following disclaimer. 15.\" 2. Redistributions in binary form must reproduce the above copyright 16.\" notice, this list of conditions and the following disclaimer in the 17.\" documentation and/or other materials provided with the distribution. 18.\" 19.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29.\" SUCH DAMAGE. 30.\" 31.\" $FreeBSD$ 32.\" 33.Dd January 14, 2003 34.Dt MAC_SET 3 35.Os 36.Sh NAME 37.Nm mac_set_file , 38.Nm mac_set_fd , 39.Nm mac_set_proc 40.Nd set the MAC label for a file or process 41.Sh LIBRARY 42.Lb libc 43.Sh SYNOPSIS 44.In sys/mac.h 45.Ft int 46.Fn mac_set_file "const char *path" "mac_t label" 47.Ft int 48.Fn mac_set_link "const char *path" "mac_t label" 49.Ft int 50.Fn mac_set_fd "int fd" "mac_t label" 51.Ft int 52.Fn mac_set_proc "mac_t label" 53.Sh DESCRIPTION 54The 55.Fn mac_set_file 56and 57.Fn mac_set_fd 58functions associate a MAC label 59specified by 60.Fa label 61to the file referenced to by 62.Fa path_p , 63or to the file descriptor 64.Fa fd , 65respectively. 66Note that this function will fail on socket descriptors. 67For information on 68setting MAC labels on socket descriptors see 69.Xr setsockopt 2 . 70The 71.Fn mac_set_link 72function is the same as 73.Fn mac_set_file , 74except that it does not follow symlinks. 75The 76.Fn mac_set_proc 77function associates the MAC label 78specified by 79.Fa label 80to the calling process. 81.Pp 82A process is allowed to set a label for a file 83only if it has MAC write access to the file, 84and its effective user ID is equal to 85the owner of the file, 86or has appropriate privileges. 87.Sh RETURN VALUES 88.Rv -std mac_set_fd mac_set_file mac_set_link mac_set_proc 89.Sh ERRORS 90.Bl -tag -width Er 91.It Bq Er EACCES 92MAC write access to the file is denied. 93.It Bq Er EBADF 94The 95.Fa fd 96argument 97is not a valid file descriptor. 98.It Bq Er EINVAL 99The 100.Fa label 101argument 102is not a valid MAC label. 103.It Bq Er EOPNOTSUPP 104Setting MAC labels is not supported 105by the file referenced by 106.Fa fd . 107.It Bq Er EPERM 108The calling process had insufficient privilege 109to change the MAC label. 110.It Bq Er EROFS 111File system for the object being modified 112is read only. 113.It Bq Er ENAMETOOLONG 114.\" XXX POSIX_NO_TRUNC? 115The length of the pathname in 116.Fa path_p 117exceeds 118.Dv PATH_MAX , 119or a component of the pathname 120is longer than 121.Dv NAME_MAX . 122.It Bq Er ENOENT 123The file referenced by 124.Fa path_p 125does not exist. 126.It Bq Er ENOTDIR 127A component of the pathname 128referenced by 129.Fa path_p 130is not a directory. 131.El 132.Sh SEE ALSO 133.Xr mac 3 , 134.Xr mac_free 3 , 135.Xr mac_get 3 , 136.Xr mac_is_present_np 3 , 137.Xr mac_prepare 3 , 138.Xr mac_text 3 , 139.Xr mac 4 , 140.Xr mac 9 141.Sh HISTORY 142Support for Mandatory Access Control was introduced in 143.Fx 5.0 144as part of the 145.Tn TrustedBSD 146Project. 147