blob: dbec74dde525c5c8d909dd8c802a19699fc5d286 [file] [log] [blame]
Elly Jonese58176c2012-01-23 11:46:17 -05001.TH MINIJAIL0 "1" "January 2012" "Chromium OS" "User Commands"
Elly Jonescd7a9042011-07-22 13:56:51 -04002.SH NAME
3minijail0 \- sandbox a process
4.SH SYNOPSIS
5.B minijail0
6[\fIOPTION\fR]... <\fIprogram\fR> [\fIargs\fR]...
7.SH DESCRIPTION
8.PP
9Runs PROGRAM inside a sandbox.
10.TP
Andrew Brestickereac28942015-11-11 16:04:46 -080011\fB-a <table>\fR
12Run using the alternate syscall table named <table>. Only available on kernels
13and architectures that support the PR_ALT_SYSCALL option of prctl(2).
14.TP
Elly Jones51a5b6c2011-10-12 19:09:26 -040015\fB-b <src>,<dest>[,<writeable>]
16Bind-mount <src> into the chroot directory at <dest>, optionally writeable.
17.TP
Elly Jonescd7a9042011-07-22 13:56:51 -040018\fB-c <caps>\fR
19Restrict capabilities to \fIcaps\fR. When used in conjunction with \fB-u\fR and
20\fB-g\fR, this allows a program to have access to only certain parts of root's
21default privileges while running as another user and group ID altogether. Note
22that these capabilities are not inherited by subprocesses of the process given
23capabilities unless those subprocesses have POSIX file capabilities. See
24\fBcapabilities\fR(7).
25.TP
Dylan Reid6cae0b22015-11-18 18:47:49 -080026\fB-C <dir>\fR
27Change root (using chroot(2)) to <dir>.
28.TP
29\fB-e[file]\fR
30Enter a new network namespace, or if \fIfile\fR is specified, Enter an existing
31network namespace specified by \fIfile\fR which is typically of the form
32/proc/<pid>/ns/net.
33.TP
34\fB-f <file>\fR
35Write the pid of the jailed process to \fIfile\fR.
36.TP
37\fB-t\fR
38Mounts a tmpfs filesystem on /tmp. /tmp must exist in the chroot.
39This must be used with -C. The default filesystem has a max size of 128M
40and has standard /tmp permissions (777).
41.TP
Elly Jonescd7a9042011-07-22 13:56:51 -040042\fB-G\fR
43Inherit all the supplementary groups of the user specified with \fB-u\fR. It
44is an error to use this option without having specified a \fBuser name\fR to
45\fB-u\fR.
46.TP
47\fB-g <group>\fR
48Change groups to \fIgroup\fR, which may be either a group name or a numeric
49group ID.
50.TP
51\fB-h\fR
52Print a help message.
53.TP
Will Drewry32ac9f52011-08-18 21:36:27 -050054\fB-H\fR
55Print a help message detailing supported system call names for seccomp_filter.
56(Other direct numbers may be specified if minijail0 is not in sync with the
57 host kernel or something like 32/64-bit compatibility issues exist.)
58.TP
Dylan Reidf7942472015-11-18 17:55:26 -080059\fB-l\fR
60Run inside a new IPC namespace. This option makes the program's System V IPC
61namespace independent.
62.TP
Dylan Reid6cae0b22015-11-18 18:47:49 -080063\fB-m "<uid> <loweruid> <count>[,<uid> <loweruid> <count>]"\fR
64Set the uid mapping of a user namespace (implies \fB-pU\fR). Same arguments as
65\fBnewuidmap(1)\fR. Multiple mappings should be separated by ','.
66.TP
67\fB-M "<uid> <loweruid> <count>[,<uid> <loweruid> <count>]"\fR
68Set the gid mapping of a user namespace (implies \fB-pU\fR). Same arguments as
69\fBnewgidmap(1)\fR. Multiple mappings should be separated by ','.
70.TP
Elly Jonescd7a9042011-07-22 13:56:51 -040071\fB-p\fR
72Run inside a new PID namespace. This option will make it impossible for the
Elly Jonese58176c2012-01-23 11:46:17 -050073program to see or affect processes that are not its descendants. This implies
74\fB-v\fR and \fB-r\fR, since otherwise the process can see outside its namespace
75by inspecting /proc.
Elly Jonescd7a9042011-07-22 13:56:51 -040076.TP
Dylan Reid6cae0b22015-11-18 18:47:49 -080077\fB-P <dir>\fR
78Set \fIdir\fR as the root fs using \fBpivot_root\fR. Implies \fB-v\fR, not
79compatible with \fB-C\fR.
80.TP
Elly Jonescd7a9042011-07-22 13:56:51 -040081\fB-r\fR
Dylan Reid6cae0b22015-11-18 18:47:49 -080082Remount /proc readonly. This implies \fB-v\fR. Remounting /proc readonly means
83that even if the process has write access to a system config knob in /proc
84(e.g., in /sys/kernel), it cannot change the value.
Elly Jonescd7a9042011-07-22 13:56:51 -040085.TP
86\fB-s\fR
87Enable seccomp(2) in mode 1, which restricts the child process to a very small
Will Drewry32ac9f52011-08-18 21:36:27 -050088set of system calls.
89.TP
90\fB-S <arch-specific seccomp_filter policy file>\fR
91Enable seccomp(2) in mode 13 which restricts the child process to a set of
92system calls defined in the policy file. Note that system calls often change
93names based on the architecture or mode. (uname -m is your friend.)
Elly Jonescd7a9042011-07-22 13:56:51 -040094.TP
95\fB-u <user>\fR
96Change users to \fIuser\fR, which may be either a user name or a numeric user
97ID.
98.TP
99\fB-v\fR
100Run inside a new VFS namespace. This option makes the program's mountpoints
101independent of the rest of the system's.
Dylan Reid6cae0b22015-11-18 18:47:49 -0800102.TP
103\fB-V <file>\fR
104Enter the VFS namespace specified by \fIfile\fR.
Elly Jonescd7a9042011-07-22 13:56:51 -0400105.SH IMPLEMENTATION
106This program is broken up into two parts: \fBminijail0\fR (the frontend) and a helper
107library called \fBlibminijailpreload\fR. Some jailings can only be achieved from
108the process to which they will actually apply - specifically capability use
109(since capabilities are not inherited to an exec'd process unless the exec'd
110process has POSIX file capabilities), seccomp (since we can't exec() once we're
111seccomp'd), and ptrace-disable (which is always cleared on exec().
112
113To this end, \fBlibminijailpreload\fR is forcibly loaded into all
114dynamically-linked target programs if any of these restrictions are in effect;
115we pass the specific restrictions in an environment variable which the preloaded
116library looks for. The forcibly-loaded library then applies the restrictions
117to the newly-loaded program.
118.SH AUTHOR
119Written by Elly Jones (ellyjones@chromium.org)
120.SH COPYRIGHT
121Copyright \(co 2011 The Chromium OS Authors
122License BSD-like.
123.SH "SEE ALSO"
Will Drewry32ac9f52011-08-18 21:36:27 -0500124\fBlibminijail.h\fR \fBminijail0(5)\fR