]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - lib/libc/sys/cap_enter.2
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / lib / libc / sys / cap_enter.2
1 .\"
2 .\" Copyright (c) 2008-2009 Robert N. M. Watson
3 .\" All rights reserved.
4 .\"
5 .\" This software was developed at the University of Cambridge Computer
6 .\" Laboratory with support from a grant from Google, Inc.
7 .\"
8 .\" Redistribution and use in source and binary forms, with or without
9 .\" modification, are permitted provided that the following conditions
10 .\" are met:
11 .\" 1. Redistributions of source code must retain the above copyright
12 .\"    notice, this list of conditions and the following disclaimer.
13 .\" 2. Redistributions in binary form must reproduce the above copyright
14 .\"    notice, this list of conditions and the following disclaimer in the
15 .\"    documentation and/or other materials provided with the distribution.
16 .\"
17 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 .\" SUCH DAMAGE.
28 .\"
29 .\" $FreeBSD$
30 .\"
31 .Dd February 25, 2012
32 .Dt CAP_ENTER 2
33 .Os
34 .Sh NAME
35 .Nm cap_enter ,
36 .Nm cap_getmode
37 .Nd Capability mode system calls
38 .Sh LIBRARY
39 .Lb libc
40 .Sh SYNOPSIS
41 .In sys/capability.h
42 .Ft int
43 .Fn cap_enter "void"
44 .Ft int
45 .Fn cap_getmode "u_int *modep"
46 .Sh DESCRIPTION
47 .Fn cap_enter
48 places the current process into capability mode, a mode of execution in which
49 processes may only issue system calls operating on file descriptors or
50 reading limited global system state.
51 Access to global name spaces, such as file system or IPC name spaces, is
52 prevented.
53 If the process is already in a capability mode sandbox, the system call is a
54 no-op.
55 Future process descendants create with
56 .Xr fork 2
57 or
58 .Xr pdfork 2
59 will be placed in capability mode from inception.
60 .Pp
61 When combined with
62 .Xr cap_rights_limit 2 ,
63 .Xr cap_ioctls_limit 2 ,
64 .Xr cap_fcntls_limit 2 ,
65 .Fn cap_enter
66 may be used to create kernel-enforced sandboxes in which
67 appropriately-crafted applications or application components may be run.
68 .Pp
69 .Fn cap_getmode
70 returns a flag indicating whether or not the process is in a capability mode
71 sandbox.
72 .Sh CAVEAT
73 Creating effective process sandboxes is a tricky process that involves
74 identifying the least possible rights required by the process and then
75 passing those rights into the process in a safe manner.
76 Consumers of
77 .Fn cap_enter
78 should also be aware of other inherited rights, such as access to VM
79 resources, memory contents, and other process properties that should be
80 considered.
81 It is advisable to use
82 .Xr fexecve 2
83 to create a runtime environment inside the sandbox that has as few implicitly
84 acquired rights as possible.
85 .Sh RETURN VALUES
86 .Rv -std cap_enter cap_getmode
87 .Sh ERRORS
88 The
89 .Fn cap_enter
90 and
91 .Fn cap_getmode
92 system calls
93 will fail if:
94 .Bl -tag -width Er
95 .It Bq Er ENOSYS
96 The kernel is compiled without:
97 .Pp
98 .Cd "options CAPABILITY_MODE"
99 .El
100 .Pp
101 The
102 .Fn cap_getmode
103 system call may also return the following error:
104 .Bl -tag -width Er
105 .It Bq Er EFAULT
106 Pointer
107 .Fa modep
108 points outside the process's allocated address space.
109 .El
110 .Sh SEE ALSO
111 .Xr cap_fcntls_limit 2 ,
112 .Xr cap_ioctls_limit 2 ,
113 .Xr cap_rights_limit 2 ,
114 .Xr fexecve 2 ,
115 .Xr cap_sandboxed 3 ,
116 .Xr capsicum 4
117 .Sh HISTORY
118 Support for capabilities and capabilities mode was developed as part of the
119 .Tn TrustedBSD
120 Project.
121 .Sh AUTHORS
122 These functions and the capability facility were created by
123 .An "Robert N. M. Watson"
124 at the University of Cambridge Computer Laboratory with support from a grant
125 from Google, Inc.