blob: 03cd391362e1d062e682f9e3bc9ae409a0a0e72e [file] [log] [blame]
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -08001.TH MINIJAIL0 "1" "March 2016" "Chromium OS" "User Commands"
Elly Jonescd7a9042011-07-22 13:56:51 -04002.SH NAME
3minijail0 \- sandbox a process
4.SH SYNOPSIS
5.B minijail0
Jorge Lucangeli Obes13650612016-09-02 11:27:29 -04006[\fIOPTION\fR]... <\fIPROGRAM\fR> [\fIargs\fR]...
Elly Jonescd7a9042011-07-22 13:56:51 -04007.SH DESCRIPTION
8.PP
9Runs PROGRAM inside a sandbox.
10.TP
Andrew Brestickereac28942015-11-11 16:04:46 -080011\fB-a <table>\fR
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -080012Run using the alternate syscall table named \fItable\fR. Only available on kernels
Andrew Brestickereac28942015-11-11 16:04:46 -080013and 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>]
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -080016Bind-mount \fIsrc\fR into the chroot directory at \fIdest\fR, optionally writeable.
Elly Jones51a5b6c2011-10-12 19:09:26 -040017.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
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -080027Change root (using chroot(2)) to \fIdir\fR.
Dylan Reid6cae0b22015-11-18 18:47:49 -080028.TP
29\fB-e[file]\fR
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -080030Enter a new network namespace, or if \fIfile\fR is specified, enter an existing
Dylan Reid6cae0b22015-11-18 18:47:49 -080031network 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
Lutz Justen13807cb2017-01-03 17:11:55 +010037\fB-g <group>\fR
38Change groups to \fIgroup\fR, which may be either a group name or a numeric
39group ID.
40.TP
Elly Jonescd7a9042011-07-22 13:56:51 -040041\fB-G\fR
42Inherit all the supplementary groups of the user specified with \fB-u\fR. It
43is an error to use this option without having specified a \fBuser name\fR to
44\fB-u\fR.
45.TP
Elly Jonescd7a9042011-07-22 13:56:51 -040046\fB-h\fR
47Print a help message.
48.TP
Will Drewry32ac9f52011-08-18 21:36:27 -050049\fB-H\fR
50Print a help message detailing supported system call names for seccomp_filter.
51(Other direct numbers may be specified if minijail0 is not in sync with the
52 host kernel or something like 32/64-bit compatibility issues exist.)
53.TP
Brian Norris3b5841b2016-03-16 16:43:49 -070054\fB-I\fR
55Run \fIprogram\fR as init (pid 1) inside a new pid namespace (implies \fB-p\fR).
56.TP
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -080057\fB-k <src>,<dest>,<type>[,<flags>]\fR
58Mount \fIsrc\fR, a \fItype\fR filesystem, into the chroot directory at \fIdest\fR, with optional \fIflags\fR.
59.TP
60\fB-K\fR
61Don't mark all existing mounts as MS_PRIVATE.
62This option is \fBdangerous\fR as it negates most of the functionality of \fB-v\fR.
63You very likely don't need this.
64.TP
Dylan Reidf7942472015-11-18 17:55:26 -080065\fB-l\fR
66Run inside a new IPC namespace. This option makes the program's System V IPC
67namespace independent.
68.TP
Brian Norris3b5841b2016-03-16 16:43:49 -070069\fB-L\fR
70Report blocked syscalls to syslog when using seccomp filter. This option will
71force certain syscalls to be allowed in order to achieve this, depending on the
72system.
73.TP
Dylan Reid6cae0b22015-11-18 18:47:49 -080074\fB-m "<uid> <loweruid> <count>[,<uid> <loweruid> <count>]"\fR
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -080075Set the uid mapping of a user namespace (implies \fB-pU\fR). Same arguments as
76\fBnewuidmap(1)\fR. Multiple mappings should be separated by ','.
Dylan Reid6cae0b22015-11-18 18:47:49 -080077.TP
78\fB-M "<uid> <loweruid> <count>[,<uid> <loweruid> <count>]"\fR
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -080079Set the gid mapping of a user namespace (implies \fB-pU\fR). Same arguments as
80\fBnewgidmap(1)\fR. Multiple mappings should be separated by ','.
Dylan Reid6cae0b22015-11-18 18:47:49 -080081.TP
Brian Norris3b5841b2016-03-16 16:43:49 -070082\fB-n\fR
83Set the process's \fIno_new_privs\fR bit. See \fBprctl(2)\fR and the kernel
84source file \fIDocumentation/prctl/no_new_privs.txt\fR for more info.
85.TP
Dylan Reid87e58512016-07-11 14:35:12 -070086\fB-N\fR
87Run inside a new cgroup namespace. This option runs the program with a cgroup
88view showing the program's cgroup as the root. This is only available on v4.6+
89of the Linux kernel.
90.TP
Elly Jonescd7a9042011-07-22 13:56:51 -040091\fB-p\fR
92Run inside a new PID namespace. This option will make it impossible for the
Elly Jonese58176c2012-01-23 11:46:17 -050093program to see or affect processes that are not its descendants. This implies
94\fB-v\fR and \fB-r\fR, since otherwise the process can see outside its namespace
95by inspecting /proc.
Elly Jonescd7a9042011-07-22 13:56:51 -040096.TP
Dylan Reid6cae0b22015-11-18 18:47:49 -080097\fB-P <dir>\fR
98Set \fIdir\fR as the root fs using \fBpivot_root\fR. Implies \fB-v\fR, not
99compatible with \fB-C\fR.
100.TP
Elly Jonescd7a9042011-07-22 13:56:51 -0400101\fB-r\fR
Dylan Reid6cae0b22015-11-18 18:47:49 -0800102Remount /proc readonly. This implies \fB-v\fR. Remounting /proc readonly means
103that even if the process has write access to a system config knob in /proc
104(e.g., in /sys/kernel), it cannot change the value.
Elly Jonescd7a9042011-07-22 13:56:51 -0400105.TP
106\fB-s\fR
107Enable seccomp(2) in mode 1, which restricts the child process to a very small
Will Drewry32ac9f52011-08-18 21:36:27 -0500108set of system calls.
109.TP
110\fB-S <arch-specific seccomp_filter policy file>\fR
111Enable seccomp(2) in mode 13 which restricts the child process to a set of
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -0800112system calls defined in the policy file. Note that system calls often change
Will Drewry32ac9f52011-08-18 21:36:27 -0500113names based on the architecture or mode. (uname -m is your friend.)
Elly Jonescd7a9042011-07-22 13:56:51 -0400114.TP
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -0800115\fB-t\fR
116Mounts a tmpfs filesystem on /tmp. /tmp must exist in the chroot.
117This must be used with \fB-C\fR. The default filesystem has a max size of 128M
118and has standard /tmp permissions (777).
119.TP
Matthew Dempsky2ed09122016-02-11 09:43:37 -0800120\fB-T <type>\fR
121Assume program's ELF linkage type is \fItype\fR,
122which should be either 'static' or 'dynamic'.
123.TP
Elly Jonescd7a9042011-07-22 13:56:51 -0400124\fB-u <user>\fR
125Change users to \fIuser\fR, which may be either a user name or a numeric user
126ID.
127.TP
Brian Norris3b5841b2016-03-16 16:43:49 -0700128\fB-U\fR
129Enter a new user namespace (implies \fB-p\fR).
130.TP
Elly Jonescd7a9042011-07-22 13:56:51 -0400131\fB-v\fR
132Run inside a new VFS namespace. This option makes the program's mountpoints
133independent of the rest of the system's.
Dylan Reid6cae0b22015-11-18 18:47:49 -0800134.TP
135\fB-V <file>\fR
136Enter the VFS namespace specified by \fIfile\fR.
Jorge Lucangeli Obes13650612016-09-02 11:27:29 -0400137.TP
Lutz Justen13807cb2017-01-03 17:11:55 +0100138\fB-y\fR
139Keep the current user's supplementary groups.
140.TP
Jorge Lucangeli Obes13650612016-09-02 11:27:29 -0400141\fB-Y\fR
142Synchronize seccomp filters across thread group.
Elly Jonescd7a9042011-07-22 13:56:51 -0400143.SH IMPLEMENTATION
144This program is broken up into two parts: \fBminijail0\fR (the frontend) and a helper
145library called \fBlibminijailpreload\fR. Some jailings can only be achieved from
146the process to which they will actually apply - specifically capability use
147(since capabilities are not inherited to an exec'd process unless the exec'd
148process has POSIX file capabilities), seccomp (since we can't exec() once we're
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -0800149seccomp'd), and ptrace-disable (which is always cleared on exec()).
Elly Jonescd7a9042011-07-22 13:56:51 -0400150
151To this end, \fBlibminijailpreload\fR is forcibly loaded into all
152dynamically-linked target programs if any of these restrictions are in effect;
153we pass the specific restrictions in an environment variable which the preloaded
154library looks for. The forcibly-loaded library then applies the restrictions
155to the newly-loaded program.
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -0800156
Elly Jonescd7a9042011-07-22 13:56:51 -0400157.SH AUTHOR
Jorge Lucangeli Obesa521bee2016-03-03 13:47:57 -0800158The Chromium OS Authors <chromiumos-dev@chromium.org>
Elly Jonescd7a9042011-07-22 13:56:51 -0400159.SH COPYRIGHT
160Copyright \(co 2011 The Chromium OS Authors
161License BSD-like.
162.SH "SEE ALSO"
Will Drewry32ac9f52011-08-18 21:36:27 -0500163\fBlibminijail.h\fR \fBminijail0(5)\fR