xref: /freebsd/lib/libc/posix1e/mac_set.3 (revision ae83180158c4c937f170e31eff311b18c0286a93)
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.\" 3. The name of the author may not be used to endorse or promote
19.\"    products derived from this software without specific prior written
20.\"    permission.
21.\"
22.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE.
33.\"
34.\" $FreeBSD$
35.Dd December 21, 2001
36.Dt MAC_SET 3
37.Sh NAME
38.Nm mac_set_file ,
39.Nm mac_set_fd ,
40.Nm mac_set_proc
41.Nd set the MAC label for a file or process
42.Sh LIBRARY
43.Lb libc
44.Sh SYNOPSIS
45.In sys/mac.h
46.Ft int
47.Fn mac_set_file "const char *path_p" "mac_t label"
48.Ft int
49.Fn mac_set_fd "int fd" "mac_t label"
50.Ft int
51.Fn mac_set_proc "mac_t label"
52.Sh DESCRIPTION
53The
54.Fn mac_set_file
55and
56.Fn mac_set_fd
57functions associate a MAC label
58specified by
59.Fa label
60to the file referenced to by
61.Fa path_p ,
62or to the file descriptor
63.Fa fd ,
64respectively.  Note this function will
65fail on socket descriptors.  For information on
66setting MAC labels on socket descriptors see
67.Xr setsockopt 2 .
68The
69.Fn mac_set_proc
70function associates the MAC label
71specified by
72.Fa label
73to the calling process.
74.Pp
75A process is allowed to set a label for a file
76only if it has MAC write access to the file,
77and its effective user id is equal to
78the owner of the file,
79or has appropriate privileges.
80.Sh RETURN VALUES
81.Rv -std mac_set_fd mac_set_file mac_set_proc
82.Sh ERRORS
83.Bl -tag -width Er
84.It Bq Er EACCES
85MAC write access to the file is denied.
86.It Bq Er EBADF
87.Fa fd
88is not a valid file descriptor.
89.It Bq Er EINVAL
90.Fa label
91is not a valid MAC label.
92.It Bq Er EOPNOTSUPP
93Setting MAC labels is not supported
94by the file referenced by
95.Fa fd .
96.It Bq Er EPERM
97The calling process had insufficient privelege
98to change the MAC label.
99.It Bq Er EROFS
100File system for the object being modified
101is read only.
102.It Bq Er ENAMETOOLONG
103.\" XXX POSIX_NO_TRUNC?
104The length of the pathname in
105.Fa path_p
106exceeds
107.Dv PATH_MAX ,
108or a component of the pathname
109is longer than
110.Dv NAME_MAX .
111.It Bq Er ENOENT
112The file referenced by
113.Fa path_p
114does not exist.
115.It Bq Er ENOTDIR
116A component of the pathname
117referenced by
118.Fa path_p
119is not a directory.
120.Sh SEE_ALSO
121.Xr mac 3 ,
122.Xr mac_free 3 ,
123.Xr mac_text 3 ,
124.Xr mac_get 3
125