aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/firejail/main.c4
-rw-r--r--src/firejail/usage.c42
-rw-r--r--src/man/firejail-profile.txt98
-rw-r--r--src/man/firejail.txt138
4 files changed, 148 insertions, 134 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c
index 0b7f63a24..b97b1f6ad 100644
--- a/src/firejail/main.c
+++ b/src/firejail/main.c
@@ -1263,9 +1263,9 @@ int main(int argc, char **argv, char **envp) {
1263 arg_debug = 1; 1263 arg_debug = 1;
1264 arg_quiet = 0; 1264 arg_quiet = 0;
1265 } 1265 }
1266 else if (strcmp(argv[i], "--debug-blacklists") == 0) 1266 else if (strcmp(argv[i], "--debug-deny") == 0)
1267 arg_debug_blacklists = 1; 1267 arg_debug_blacklists = 1;
1268 else if (strcmp(argv[i], "--debug-whitelists") == 0) 1268 else if (strcmp(argv[i], "--debug-allow") == 0)
1269 arg_debug_whitelists = 1; 1269 arg_debug_whitelists = 1;
1270 else if (strcmp(argv[i], "--debug-private-lib") == 0) 1270 else if (strcmp(argv[i], "--debug-private-lib") == 0)
1271 arg_debug_private_lib = 1; 1271 arg_debug_private_lib = 1;
diff --git a/src/firejail/usage.c b/src/firejail/usage.c
index 2093a4ed3..b4f3021c7 100644
--- a/src/firejail/usage.c
+++ b/src/firejail/usage.c
@@ -28,6 +28,7 @@ static char *usage_str =
28 "\n" 28 "\n"
29 "Options:\n" 29 "Options:\n"
30 " -- - signal the end of options and disables further option processing.\n" 30 " -- - signal the end of options and disables further option processing.\n"
31 " --allow=filename - allow file system access.\n"
31 " --allow-debuggers - allow tools such as strace and gdb inside the sandbox.\n" 32 " --allow-debuggers - allow tools such as strace and gdb inside the sandbox.\n"
32 " --allusers - all user home directories are visible inside the sandbox.\n" 33 " --allusers - all user home directories are visible inside the sandbox.\n"
33 " --apparmor - enable AppArmor confinement.\n" 34 " --apparmor - enable AppArmor confinement.\n"
@@ -38,13 +39,12 @@ static char *usage_str =
38#endif 39#endif
39 " --bind=dirname1,dirname2 - mount-bind dirname1 on top of dirname2.\n" 40 " --bind=dirname1,dirname2 - mount-bind dirname1 on top of dirname2.\n"
40 " --bind=filename1,filename2 - mount-bind filename1 on top of filename2.\n" 41 " --bind=filename1,filename2 - mount-bind filename1 on top of filename2.\n"
41 " --blacklist=filename - blacklist directory or file.\n" 42 " --build - build a profile for the application.\n"
42 " --build - build a whitelisted profile for the application.\n" 43 " --build=filename - build a profile for the application.\n"
43 " --build=filename - build a whitelisted profile for the application.\n"
44 " --caps - enable default Linux capabilities filter.\n" 44 " --caps - enable default Linux capabilities filter.\n"
45 " --caps.drop=all - drop all capabilities.\n" 45 " --caps.drop=all - drop all capabilities.\n"
46 " --caps.drop=capability,capability - blacklist capabilities filter.\n" 46 " --caps.drop=capability,capability - drop capabilities.\n"
47 " --caps.keep=capability,capability - whitelist capabilities filter.\n" 47 " --caps.keep=capability,capability - allow capabilities.\n"
48 " --caps.print=name|pid - print the caps filter.\n" 48 " --caps.print=name|pid - print the caps filter.\n"
49#ifdef HAVE_FILE_TRANSFER 49#ifdef HAVE_FILE_TRANSFER
50 " --cat=name|pid filename - print content of file from sandbox container.\n" 50 " --cat=name|pid filename - print content of file from sandbox container.\n"
@@ -58,32 +58,35 @@ static char *usage_str =
58#ifdef HAVE_DBUSPROXY 58#ifdef HAVE_DBUSPROXY
59 " --dbus-log=file - set DBus log file location.\n" 59 " --dbus-log=file - set DBus log file location.\n"
60 " --dbus-system=filter|none - set system DBus access policy.\n" 60 " --dbus-system=filter|none - set system DBus access policy.\n"
61 " --dbus-system.broadcast=rule - allow signals on the system DBus according to rule.\n" 61 " --dbus-system.broadcast=rule - allow signals on the system DBus according\n"
62 "\tto rule.\n"
62 " --dbus-system.call=rule - allow calls on the system DBus according to rule.\n" 63 " --dbus-system.call=rule - allow calls on the system DBus according to rule.\n"
63 " --dbus-system.log - turn on logging for the system DBus." 64 " --dbus-system.log - turn on logging for the system DBus.\n"
64 " --dbus-system.own=name - allow ownership of name on the system DBus.\n" 65 " --dbus-system.own=name - allow ownership of name on the system DBus.\n"
65 " --dbus-system.see=name - allow seeing name on the system DBus.\n" 66 " --dbus-system.see=name - allow seeing name on the system DBus.\n"
66 " --dbus-system.talk=name - allow talking to name on the system DBus.\n" 67 " --dbus-system.talk=name - allow talking to name on the system DBus.\n"
67 " --dbus-user=filter|none - set session DBus access policy.\n" 68 " --dbus-user=filter|none - set session DBus access policy.\n"
68 " --dbus-user.broadcast=rule - allow signals on the session DBus according to rule.\n" 69 " --dbus-user.broadcast=rule - allow signals on the session DBus according\n"
70 "\tto rule.\n"
69 " --dbus-user.call=rule - allow calls on the session DBus according to rule.\n" 71 " --dbus-user.call=rule - allow calls on the session DBus according to rule.\n"
70 " --dbus-user.log - turn on logging for the user DBus." 72 " --dbus-user.log - turn on logging for the user DBus.\n"
71 " --dbus-user.own=name - allow ownership of name on the session DBus.\n" 73 " --dbus-user.own=name - allow ownership of name on the session DBus.\n"
72 " --dbus-user.see=name - allow seeing name on the session DBus.\n" 74 " --dbus-user.see=name - allow seeing name on the session DBus.\n"
73 " --dbus-user.talk=name - allow talking to name on the session DBus.\n" 75 " --dbus-user.talk=name - allow talking to name on the session DBus.\n"
74#endif 76#endif
75 " --debug - print sandbox debug messages.\n" 77 " --debug - print sandbox debug messages.\n"
76 " --debug-blacklists - debug blacklisting.\n" 78 " --debug-allow - debug file system access.\n"
79 " --debug-deny - debug file system access.\n"
77 " --debug-caps - print all recognized capabilities.\n" 80 " --debug-caps - print all recognized capabilities.\n"
78 " --debug-errnos - print all recognized error numbers.\n" 81 " --debug-errnos - print all recognized error numbers.\n"
79 " --debug-private-lib - debug for --private-lib option.\n" 82 " --debug-private-lib - debug for --private-lib option.\n"
80 " --debug-protocols - print all recognized protocols.\n" 83 " --debug-protocols - print all recognized protocols.\n"
81 " --debug-syscalls - print all recognized system calls.\n" 84 " --debug-syscalls - print all recognized system calls.\n"
82 " --debug-syscalls32 - print all recognized 32 bit system calls.\n" 85 " --debug-syscalls32 - print all recognized 32 bit system calls.\n"
83 " --debug-whitelists - debug whitelisting.\n"
84#ifdef HAVE_NETWORK 86#ifdef HAVE_NETWORK
85 " --defaultgw=address - configure default gateway.\n" 87 " --defaultgw=address - configure default gateway.\n"
86#endif 88#endif
89 " --deny=filename - deny access to directory or file.\n"
87 " --deterministic-exit-code - always exit with first child's status code.\n" 90 " --deterministic-exit-code - always exit with first child's status code.\n"
88 " --dns=address - set DNS server.\n" 91 " --dns=address - set DNS server.\n"
89 " --dns.print=name|pid - print DNS configuration.\n" 92 " --dns.print=name|pid - print DNS configuration.\n"
@@ -141,14 +144,15 @@ static char *usage_str =
141 " --netfilter.print=name|pid - print the firewall.\n" 144 " --netfilter.print=name|pid - print the firewall.\n"
142 " --netfilter6=filename - enable IPv6 firewall.\n" 145 " --netfilter6=filename - enable IPv6 firewall.\n"
143 " --netfilter6.print=name|pid - print the IPv6 firewall.\n" 146 " --netfilter6.print=name|pid - print the IPv6 firewall.\n"
144 " --netmask=address - define a network mask when dealing with unconfigured" 147 " --netmask=address - define a network mask when dealing with unconfigured\n"
145 "\tparrent interfaces.\n" 148 "\tparrent interfaces.\n"
146 " --netns=name - Run the program in a named, persistent network namespace.\n" 149 " --netns=name - Run the program in a named, persistent network namespace.\n"
147 " --netstats - monitor network statistics.\n" 150 " --netstats - monitor network statistics.\n"
148#endif 151#endif
149 " --nice=value - set nice value.\n" 152 " --nice=value - set nice value.\n"
150 " --no3d - disable 3D hardware acceleration.\n" 153 " --no3d - disable 3D hardware acceleration.\n"
151 " --noblacklist=filename - disable blacklist for file or directory.\n" 154 " --noallow=filename - disable allow command for file or directory.\n"
155 " --nodeny=filename - disable deny command for file or directory.\n"
152 " --nodbus - disable D-Bus access.\n" 156 " --nodbus - disable D-Bus access.\n"
153 " --nodvd - disable DVD and audio CD devices.\n" 157 " --nodvd - disable DVD and audio CD devices.\n"
154 " --noexec=filename - remount the file or directory noexec nosuid and nodev.\n" 158 " --noexec=filename - remount the file or directory noexec nosuid and nodev.\n"
@@ -163,7 +167,6 @@ static char *usage_str =
163 " --noautopulse - disable automatic ~/.config/pulse init.\n" 167 " --noautopulse - disable automatic ~/.config/pulse init.\n"
164 " --novideo - disable video devices.\n" 168 " --novideo - disable video devices.\n"
165 " --nou2f - disable U2F devices.\n" 169 " --nou2f - disable U2F devices.\n"
166 " --nowhitelist=filename - disable whitelist for file or directory.\n"
167#ifdef HAVE_OUTPUT 170#ifdef HAVE_OUTPUT
168 " --output=logfile - stdout logging and log rotation.\n" 171 " --output=logfile - stdout logging and log rotation.\n"
169 " --output-stderr=logfile - stdout and stderr logging and log rotation.\n" 172 " --output-stderr=logfile - stdout and stderr logging and log rotation.\n"
@@ -220,14 +223,14 @@ static char *usage_str =
220#ifdef HAVE_NETWORK 223#ifdef HAVE_NETWORK
221 " --scan - ARP-scan all the networks from inside a network namespace.\n" 224 " --scan - ARP-scan all the networks from inside a network namespace.\n"
222#endif 225#endif
223 " --seccomp - enable seccomp filter and apply the default blacklist.\n" 226 " --seccomp - enable seccomp filter and drop the default syscalls.\n"
224 " --seccomp=syscall,syscall,syscall - enable seccomp filter, blacklist the\n" 227 " --seccomp=syscall,syscall,syscall - enable seccomp filter, drop the\n"
225 "\tdefault syscall list and the syscalls specified by the command.\n" 228 "\tdefault syscall list and the syscalls specified by the command.\n"
226 " --seccomp.block-secondary - build only the native architecture filters.\n" 229 " --seccomp.block-secondary - build only the native architecture filters.\n"
227 " --seccomp.drop=syscall,syscall,syscall - enable seccomp filter, and\n" 230 " --seccomp.drop=syscall,syscall,syscall - enable seccomp filter, and\n"
228 "\tblacklist the syscalls specified by the command.\n" 231 "\tdrop the syscalls specified by the command.\n"
229 " --seccomp.keep=syscall,syscall,syscall - enable seccomp filter, and\n" 232 " --seccomp.keep=syscall,syscall,syscall - enable seccomp filter, and\n"
230 "\twhitelist the syscalls specified by the command.\n" 233 "\tallow the syscalls specified by the command.\n"
231 " --seccomp.print=name|pid - print the seccomp filter for the sandbox\n" 234 " --seccomp.print=name|pid - print the seccomp filter for the sandbox\n"
232 "\tidentified by name or PID.\n" 235 "\tidentified by name or PID.\n"
233 " --seccomp.32[.drop,.keep][=syscall] - like above but for 32 bit architecture.\n" 236 " --seccomp.32[.drop,.keep][=syscall] - like above but for 32 bit architecture.\n"
@@ -242,7 +245,7 @@ static char *usage_str =
242 " --top - monitor the most CPU-intensive sandboxes.\n" 245 " --top - monitor the most CPU-intensive sandboxes.\n"
243 " --trace - trace open, access and connect system calls.\n" 246 " --trace - trace open, access and connect system calls.\n"
244 " --tracelog - add a syslog message for every access to files or\n" 247 " --tracelog - add a syslog message for every access to files or\n"
245 "\tdirectories blacklisted by the security profile.\n" 248 "\tdirectories dropped by the security profile.\n"
246 " --tree - print a tree of all sandboxed processes.\n" 249 " --tree - print a tree of all sandboxed processes.\n"
247 " --tunnel[=devname] - connect the sandbox to a tunnel created by\n" 250 " --tunnel[=devname] - connect the sandbox to a tunnel created by\n"
248 "\tfiretunnel utility.\n" 251 "\tfiretunnel utility.\n"
@@ -250,7 +253,6 @@ static char *usage_str =
250#ifdef HAVE_NETWORK 253#ifdef HAVE_NETWORK
251 " --veth-name=name - use this name for the interface connected to the bridge.\n" 254 " --veth-name=name - use this name for the interface connected to the bridge.\n"
252#endif 255#endif
253 " --whitelist=filename - whitelist directory or file.\n"
254 " --writable-etc - /etc directory is mounted read-write.\n" 256 " --writable-etc - /etc directory is mounted read-write.\n"
255 " --writable-run-user - allow access to /run/user/$UID/systemd and\n" 257 " --writable-run-user - allow access to /run/user/$UID/systemd and\n"
256 "\t/run/user/$UID/gnupg.\n" 258 "\t/run/user/$UID/gnupg.\n"
diff --git a/src/man/firejail-profile.txt b/src/man/firejail-profile.txt
index db58e0910..34f5e8bf9 100644
--- a/src/man/firejail-profile.txt
+++ b/src/man/firejail-profile.txt
@@ -156,7 +156,7 @@ Scripting commands:
156\fBFile and directory names 156\fBFile and directory names
157File and directory names containing spaces are supported. The space character ' ' should not be escaped. 157File and directory names containing spaces are supported. The space character ' ' should not be escaped.
158 158
159Example: "blacklist ~/My Virtual Machines" 159Example: "deny ~/My Virtual Machines"
160 160
161.TP 161.TP
162\fB# this is a comment 162\fB# this is a comment
@@ -170,9 +170,9 @@ net none # this command creates an empty network namespace
170\fB?CONDITIONAL: profile line 170\fB?CONDITIONAL: profile line
171Conditionally add profile line. 171Conditionally add profile line.
172 172
173Example: "?HAS_APPIMAGE: whitelist ${HOME}/special/appimage/dir" 173Example: "?HAS_APPIMAGE: allow ${HOME}/special/appimage/dir"
174 174
175This example will load the whitelist profile line only if the \-\-appimage option has been specified on the command line. 175This example will load the profile line only if the \-\-appimage option has been specified on the command line.
176 176
177Currently the only conditionals supported this way are HAS_APPIMAGE, HAS_NET, HAS_NODBUS, HAS_NOSOUND, HAS_PRIVATE and HAS_X11. The conditionals BROWSER_DISABLE_U2F and BROWSER_ALLOW_DRM 177Currently the only conditionals supported this way are HAS_APPIMAGE, HAS_NET, HAS_NODBUS, HAS_NOSOUND, HAS_PRIVATE and HAS_X11. The conditionals BROWSER_DISABLE_U2F and BROWSER_ALLOW_DRM
178can be enabled or disabled globally in Firejail's configuration file. 178can be enabled or disabled globally in Firejail's configuration file.
@@ -205,16 +205,16 @@ storing modifications to the persistent configuration. Persistent .local files
205are included at the start of regular profile files. 205are included at the start of regular profile files.
206 206
207.TP 207.TP
208\fBnoblacklist file_name 208\fBnoallow file_name
209If the file name matches file_name, the file will not be blacklisted in any blacklist commands that follow. 209If the file name matches file_name, the file will not be allowed in any allow commands that follow.
210 210
211Example: "noblacklist ${HOME}/.mozilla" 211Example: "nowhitelist ~/.config"
212 212
213.TP 213.TP
214\fBnowhitelist file_name 214\fBnodeny file_name
215If the file name matches file_name, the file will not be whitelisted in any whitelist commands that follow. 215If the file name matches file_name, the file will not be denied any deny commands that follow.
216 216
217Example: "nowhitelist ~/.config" 217Example: "nodeny ${HOME}/.mozilla"
218 218
219.TP 219.TP
220\fBignore 220\fBignore
@@ -242,19 +242,17 @@ HOME directories are searched, see the \fBfirejail\f(1) \fBFILE GLOBBING\fR sect
242for more details. 242for more details.
243Examples: 243Examples:
244.TP 244.TP
245\fBblacklist file_or_directory 245\fBallow file_or_directory
246Blacklist directory or file. Examples: 246Allow directory or file. A temporary file system is mounted on the top directory, and the
247allowed files are mount-binded inside. Modifications to allowd files are persistent,
248everything else is discarded when the sandbox is closed. The top directory can be
249all directories in / (except /proc and /sys), /sys/module, /run/user/$UID, $HOME and
250all directories in /usr.
247.br 251.br
248 252
249.br 253.br
250blacklist /usr/bin 254Symbolic link handling: with the exception of user home, both the link and the real file should be in
251.br 255the same top directory. For user home, both the link and the real file should be owned by the user.
252blacklist /usr/bin/gcc*
253.br
254blacklist ${PATH}/ifconfig
255.br
256blacklist ${HOME}/.ssh
257
258.TP 256.TP
259\fBblacklist-nolog file_or_directory 257\fBblacklist-nolog file_or_directory
260When --tracelog flag is set, blacklisting generates syslog messages if the sandbox tries to access the file or directory. 258When --tracelog flag is set, blacklisting generates syslog messages if the sandbox tries to access the file or directory.
@@ -273,6 +271,20 @@ Mount-bind directory1 on top of directory2. This option is only available when r
273\fBbind file1,file2 271\fBbind file1,file2
274Mount-bind file1 on top of file2. This option is only available when running as root. 272Mount-bind file1 on top of file2. This option is only available when running as root.
275.TP 273.TP
274\fBdeny file_or_directory
275Deny access to directory or file. Examples:
276.br
277
278.br
279deny /usr/bin
280.br
281deny /usr/bin/gcc*
282.br
283deny ${PATH}/ifconfig
284.br
285deny ${HOME}/.ssh
286
287.TP
276\fBdisable-mnt 288\fBdisable-mnt
277Disable /mnt, /media, /run/mount and /run/media access. 289Disable /mnt, /media, /run/mount and /run/media access.
278.TP 290.TP
@@ -292,7 +304,7 @@ The directory is created if it doesn't already exist.
292.br 304.br
293 305
294.br 306.br
295Use this command for whitelisted directories you need to preserve 307Use this command for allowed directories you need to preserve
296when the sandbox is closed. Without it, the application will create the directory, and the directory 308when the sandbox is closed. Without it, the application will create the directory, and the directory
297will be deleted when the sandbox is closed. Subdirectories are recursively created. Example from 309will be deleted when the sandbox is closed. Subdirectories are recursively created. Example from
298firefox profile: 310firefox profile:
@@ -305,7 +317,7 @@ whitelist ~/.mozilla
305.br 317.br
306mkdir ~/.cache/mozilla/firefox 318mkdir ~/.cache/mozilla/firefox
307.br 319.br
308whitelist ~/.cache/mozilla/firefox 320allow ~/.cache/mozilla/firefox
309.br 321.br
310 322
311.br 323.br
@@ -411,7 +423,7 @@ expressed as foo/bar -- is disallowed).
411All modifications are discarded when the sandbox is closed. 423All modifications are discarded when the sandbox is closed.
412.TP 424.TP
413\fBprivate-tmp 425\fBprivate-tmp
414Mount an empty temporary filesystem on top of /tmp directory whitelisting /tmp/.X11-unix. 426Mount an empty temporary filesystem on top of /tmp directory allowing /tmp/.X11-unix.
415.TP 427.TP
416\fBread-only file_or_directory 428\fBread-only file_or_directory
417Make directory or file read-only. 429Make directory or file read-only.
@@ -423,25 +435,13 @@ Make directory or file read-write.
423Mount an empty tmpfs filesystem on top of directory. Directories outside user home or not owned by the user are not allowed. Sandboxes running as root are exempt from these restrictions. 435Mount an empty tmpfs filesystem on top of directory. Directories outside user home or not owned by the user are not allowed. Sandboxes running as root are exempt from these restrictions.
424.TP 436.TP
425\fBtracelog 437\fBtracelog
426Blacklist violations logged to syslog. 438File system deny violations logged to syslog.
427.TP
428\fBwhitelist file_or_directory
429Whitelist directory or file. A temporary file system is mounted on the top directory, and the
430whitelisted files are mount-binded inside. Modifications to whitelisted files are persistent,
431everything else is discarded when the sandbox is closed. The top directory can be
432all directories in / (except /proc and /sys), /sys/module, /run/user/$UID, $HOME and
433all directories in /usr.
434.br
435
436.br
437Symbolic link handling: with the exception of user home, both the link and the real file should be in
438the same top directory. For user home, both the link and the real file should be owned by the user.
439.TP 439.TP
440\fBwritable-etc 440\fBwritable-etc
441Mount /etc directory read-write. 441Mount /etc directory read-write.
442.TP 442.TP
443\fBwritable-run-user 443\fBwritable-run-user
444Disable the default blacklisting of run/user/$UID/systemd and /run/user/$UID/gnupg. 444Disable the default denying of run/user/$UID/systemd and /run/user/$UID/gnupg.
445.TP 445.TP
446\fBwritable-var 446\fBwritable-var
447Mount /var directory read-write. 447Mount /var directory read-write.
@@ -455,7 +455,7 @@ The following security filters are currently implemented:
455 455
456.TP 456.TP
457\fBallow-debuggers 457\fBallow-debuggers
458Allow tools such as strace and gdb inside the sandbox by whitelisting system calls ptrace and process_vm_readv. 458Allow tools such as strace and gdb inside the sandbox by allowing system calls ptrace and process_vm_readv.
459#ifdef HAVE_APPARMOR 459#ifdef HAVE_APPARMOR
460.TP 460.TP
461\fBapparmor 461\fBapparmor
@@ -466,13 +466,13 @@ Enable AppArmor confinement.
466Enable default Linux capabilities filter. 466Enable default Linux capabilities filter.
467.TP 467.TP
468\fBcaps.drop capability,capability,capability 468\fBcaps.drop capability,capability,capability
469Blacklist given Linux capabilities. 469Deny given Linux capabilities.
470.TP 470.TP
471\fBcaps.drop all 471\fBcaps.drop all
472Blacklist all Linux capabilities. 472Deny all Linux capabilities.
473.TP 473.TP
474\fBcaps.keep capability,capability,capability 474\fBcaps.keep capability,capability,capability
475Whitelist given Linux capabilities. 475Allow given Linux capabilities.
476.TP 476.TP
477\fBmemory-deny-write-execute 477\fBmemory-deny-write-execute
478Install a seccomp filter to block attempts to create memory mappings 478Install a seccomp filter to block attempts to create memory mappings
@@ -497,32 +497,32 @@ first argument to socket system call. Recognized values: \fBunix\fR,
497\fBinet\fR, \fBinet6\fR, \fBnetlink\fR, \fBpacket\fR and \fBbluetooth\fR. 497\fBinet\fR, \fBinet6\fR, \fBnetlink\fR, \fBpacket\fR and \fBbluetooth\fR.
498.TP 498.TP
499\fBseccomp 499\fBseccomp
500Enable seccomp filter and blacklist the syscalls in the default list. See man 1 firejail for more details. 500Enable seccomp filter and deny the syscalls in the default list. See man 1 firejail for more details.
501.TP 501.TP
502\fBseccomp.32 502\fBseccomp.32
503Enable seccomp filter and blacklist the syscalls in the default list for 32 bit system calls on a 64 bit architecture system. 503Enable seccomp filter and deny the syscalls in the default list for 32 bit system calls on a 64 bit architecture system.
504.TP 504.TP
505\fBseccomp syscall,syscall,syscall 505\fBseccomp syscall,syscall,syscall
506Enable seccomp filter and blacklist the system calls in the list on top of default seccomp filter. 506Enable seccomp filter and deny the system calls in the list on top of default seccomp filter.
507.TP 507.TP
508\fBseccomp.32 syscall,syscall,syscall 508\fBseccomp.32 syscall,syscall,syscall
509Enable seccomp filter and blacklist the system calls in the list on top of default seccomp filter for 32 bit system calls on a 64 bit architecture system. 509Enable seccomp filter and deny the system calls in the list on top of default seccomp filter for 32 bit system calls on a 64 bit architecture system.
510.TP 510.TP
511\fBseccomp.block-secondary 511\fBseccomp.block-secondary
512Enable seccomp filter and filter system call architectures 512Enable seccomp filter and filter system call architectures
513so that only the native architecture is allowed. 513so that only the native architecture is allowed.
514.TP 514.TP
515\fBseccomp.drop syscall,syscall,syscall 515\fBseccomp.drop syscall,syscall,syscall
516Enable seccomp filter and blacklist the system calls in the list. 516Enable seccomp filter and deny the system calls in the list.
517.TP 517.TP
518\fBseccomp.32.drop syscall,syscall,syscall 518\fBseccomp.32.drop syscall,syscall,syscall
519Enable seccomp filter and blacklist the system calls in the list for 32 bit system calls on a 64 bit architecture system. 519Enable seccomp filter and deny the system calls in the list for 32 bit system calls on a 64 bit architecture system.
520.TP 520.TP
521\fBseccomp.keep syscall,syscall,syscall 521\fBseccomp.keep syscall,syscall,syscall
522Enable seccomp filter and whitelist the system calls in the list. 522Enable seccomp filter and allow the system calls in the list.
523.TP 523.TP
524\fBseccomp.32.keep syscall,syscall,syscall 524\fBseccomp.32.keep syscall,syscall,syscall
525Enable seccomp filter and whitelist the system calls in the list for 32 bit system calls on a 64 bit architecture system. 525Enable seccomp filter and allow the system calls in the list for 32 bit system calls on a 64 bit architecture system.
526.TP 526.TP
527\fBseccomp-error-action kill | log | ERRNO 527\fBseccomp-error-action kill | log | ERRNO
528Return a different error instead of EPERM to the process, kill it when 528Return a different error instead of EPERM to the process, kill it when
@@ -534,7 +534,7 @@ attempt.
534Enable X11 sandboxing. 534Enable X11 sandboxing.
535.TP 535.TP
536\fBx11 none 536\fBx11 none
537Blacklist /tmp/.X11-unix directory, ${HOME}/.Xauthority and file specified in ${XAUTHORITY} environment variable. 537Deny access to /tmp/.X11-unix directory, ${HOME}/.Xauthority and file specified in ${XAUTHORITY} environment variable.
538Remove DISPLAY and XAUTHORITY environment variables. 538Remove DISPLAY and XAUTHORITY environment variables.
539Stop with error message if X11 abstract socket will be accessible in jail. 539Stop with error message if X11 abstract socket will be accessible in jail.
540.TP 540.TP
diff --git a/src/man/firejail.txt b/src/man/firejail.txt
index 0462705c0..498ff9aa9 100644
--- a/src/man/firejail.txt
+++ b/src/man/firejail.txt
@@ -99,6 +99,40 @@ $ firejail [OPTIONS] firefox # starting Mozilla Firefox
99\fB\-\- 99\fB\-\-
100Signal the end of options and disables further option processing. 100Signal the end of options and disables further option processing.
101.TP 101.TP
102\fB\-\-allow=dirname_or_filename
103Allow access to a directory or file. A temporary file system is mounted on the top directory, and the
104allowed files are mount-binded inside. Modifications to allowed files are persistent,
105everything else is discarded when the sandbox is closed. The top directory can be
106all directories in / (except /proc and /sys), /sys/module, /run/user/$UID, $HOME and
107all directories in /usr.
108.br
109
110.br
111Symbolic link handling: with the exception of user home, both the link and the real file should be in
112the same top directory. For user home, both the link and the real file should be owned by the user.
113.br
114
115.br
116File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
117.br
118
119.br
120Example:
121.br
122$ firejail \-\-noprofile \-\-allow=~/.mozilla
123.br
124$ firejail \-\-allow=/tmp/.X11-unix --allow=/dev/null
125.br
126$ firejail "\-\-allow=/home/username/My Virtual Machines"
127.br
128$ firejail \-\-allow=~/work* \-\-allow=/var/backups*
129
130
131
132
133
134
135.TP
102\fB\-\-allow-debuggers 136\fB\-\-allow-debuggers
103Allow tools such as strace and gdb inside the sandbox by whitelisting 137Allow tools such as strace and gdb inside the sandbox by whitelisting
104system calls ptrace and process_vm_readv. This option is only 138system calls ptrace and process_vm_readv. This option is only
@@ -169,21 +203,6 @@ Example:
169.br 203.br
170# firejail \-\-bind=/config/etc/passwd,/etc/passwd 204# firejail \-\-bind=/config/etc/passwd,/etc/passwd
171.TP 205.TP
172\fB\-\-blacklist=dirname_or_filename
173Blacklist directory or file. File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
174.br
175
176.br
177Example:
178.br
179$ firejail \-\-blacklist=/sbin \-\-blacklist=/usr/sbin
180.br
181$ firejail \-\-blacklist=~/.mozilla
182.br
183$ firejail "\-\-blacklist=/home/username/My Virtual Machines"
184.br
185$ firejail \-\-blacklist=/home/username/My\\ Virtual\\ Machines
186.TP
187\fB\-\-build 206\fB\-\-build
188The command builds a whitelisted profile. The profile is printed on the screen. If /usr/bin/strace is installed on the system, it also 207The command builds a whitelisted profile. The profile is printed on the screen. If /usr/bin/strace is installed on the system, it also
189builds a whitelisted seccomp profile. The program is run in a very relaxed sandbox, 208builds a whitelisted seccomp profile. The program is run in a very relaxed sandbox,
@@ -243,7 +262,7 @@ $ firejail \-\-caps.drop=all warzone2100
243 262
244.TP 263.TP
245\fB\-\-caps.drop=capability,capability,capability 264\fB\-\-caps.drop=capability,capability,capability
246Define a custom blacklist Linux capabilities filter. 265Define a custom Linux capabilities filter.
247.br 266.br
248 267
249.br 268.br
@@ -624,14 +643,14 @@ Example:
624$ firejail \-\-debug firefox 643$ firejail \-\-debug firefox
625 644
626.TP 645.TP
627\fB\-\-debug-blacklists\fR 646\fB\-\-debug-allow\fR
628Debug blacklisting. 647Debug file system access.
629.br 648.br
630 649
631.br 650.br
632Example: 651Example:
633.br 652.br
634$ firejail \-\-debug-blacklists firefox 653$ firejail \-\-debug-allow firefox
635 654
636.TP 655.TP
637\fB\-\-debug-caps 656\fB\-\-debug-caps
@@ -644,6 +663,16 @@ Example:
644$ firejail \-\-debug-caps 663$ firejail \-\-debug-caps
645 664
646.TP 665.TP
666\fB\-\-debug-deny\fR
667Debug file access.
668.br
669
670.br
671Example:
672.br
673$ firejail \-\-debug-deny firefox
674
675.TP
647\fB\-\-debug-errnos 676\fB\-\-debug-errnos
648Print all recognized error numbers in the current Firejail software build and exit. 677Print all recognized error numbers in the current Firejail software build and exit.
649.br 678.br
@@ -677,15 +706,7 @@ $ firejail \-\-debug-syscalls
677\fB\-\-debug-syscalls32 706\fB\-\-debug-syscalls32
678Print all recognized 32 bit system calls in the current Firejail software build and exit. 707Print all recognized 32 bit system calls in the current Firejail software build and exit.
679.br 708.br
680.TP
681\fB\-\-debug-whitelists\fR
682Debug whitelisting.
683.br
684 709
685.br
686Example:
687.br
688$ firejail \-\-debug-whitelists firefox
689#ifdef HAVE_NETWORK 710#ifdef HAVE_NETWORK
690.TP 711.TP
691\fB\-\-defaultgw=address 712\fB\-\-defaultgw=address
@@ -697,13 +718,32 @@ Example:
697.br 718.br
698$ firejail \-\-net=eth0 \-\-defaultgw=10.10.20.1 firefox 719$ firejail \-\-net=eth0 \-\-defaultgw=10.10.20.1 firefox
699#endif 720#endif
721
722.TP
723\fB\-\-deny=dirname_or_filename
724Deny access to directory or file. File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
725.br
726
727.br
728Example:
729.br
730$ firejail \-\-deny=/sbin \-\-deny=/usr/sbin
731.br
732$ firejail \-\-deny=~/.mozilla
733.br
734$ firejail "\-\-deny=/home/username/My Virtual Machines"
735.br
736$ firejail \-\-deny=/home/username/My\\ Virtual\\ Machines
737
738
739
700.TP 740.TP
701\fB\-\-deterministic-exit-code 741\fB\-\-deterministic-exit-code
702Always exit firejail with the first child's exit status. The default behavior is to use the exit status of the final child to exit, which can be nondeterministic. 742Always exit firejail with the first child's exit status. The default behavior is to use the exit status of the final child to exit, which can be nondeterministic.
703.br 743.br
704.TP 744.TP
705\fB\-\-disable-mnt 745\fB\-\-disable-mnt
706Blacklist /mnt, /media, /run/mount and /run/media access. 746Deny access to /mnt, /media, /run/mount and /run/media.
707.br 747.br
708 748
709.br 749.br
@@ -1471,12 +1511,16 @@ Example:
1471$ firejail --no3d firefox 1511$ firejail --no3d firefox
1472 1512
1473.TP 1513.TP
1514\fB\-\-noallow=dirname_or_filename
1515Disable \-\-allow for this directory or file.
1516
1517.TP
1474\fB\-\-noautopulse \fR(deprecated) 1518\fB\-\-noautopulse \fR(deprecated)
1475See --keep-config-pulse. 1519See --keep-config-pulse.
1476 1520
1477.TP 1521.TP
1478\fB\-\-noblacklist=dirname_or_filename 1522\fB\-\-nodeny=dirname_or_filename
1479Disable blacklist for this directory or file. 1523Disable \-\-deny for this directory or file.
1480.br 1524.br
1481 1525
1482.br 1526.br
@@ -1492,7 +1536,7 @@ $ exit
1492.br 1536.br
1493 1537
1494.br 1538.br
1495$ firejail --noblacklist=/bin/nc 1539$ firejail --nodeny=/bin/nc
1496.br 1540.br
1497$ nc dict.org 2628 1541$ nc dict.org 2628
1498.br 1542.br
@@ -1666,10 +1710,6 @@ $ firejail \-\-nou2f
1666Disable video devices. 1710Disable video devices.
1667.br 1711.br
1668 1712
1669.TP
1670\fB\-\-nowhitelist=dirname_or_filename
1671Disable whitelist for this directory or file.
1672
1673#ifdef HAVE_OUTPUT 1713#ifdef HAVE_OUTPUT
1674.TP 1714.TP
1675\fB\-\-output=logfile 1715\fB\-\-output=logfile
@@ -2733,34 +2773,6 @@ Example:
2733.br 2773.br
2734$ firejail \-\-net=br0 --veth-name=if0 2774$ firejail \-\-net=br0 --veth-name=if0
2735#endif 2775#endif
2736.TP
2737\fB\-\-whitelist=dirname_or_filename
2738Whitelist directory or file. A temporary file system is mounted on the top directory, and the
2739whitelisted files are mount-binded inside. Modifications to whitelisted files are persistent,
2740everything else is discarded when the sandbox is closed. The top directory can be
2741all directories in / (except /proc and /sys), /sys/module, /run/user/$UID, $HOME and
2742all directories in /usr.
2743.br
2744
2745.br
2746Symbolic link handling: with the exception of user home, both the link and the real file should be in
2747the same top directory. For user home, both the link and the real file should be owned by the user.
2748.br
2749
2750.br
2751File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
2752.br
2753
2754.br
2755Example:
2756.br
2757$ firejail \-\-noprofile \-\-whitelist=~/.mozilla
2758.br
2759$ firejail \-\-whitelist=/tmp/.X11-unix --whitelist=/dev/null
2760.br
2761$ firejail "\-\-whitelist=/home/username/My Virtual Machines"
2762.br
2763$ firejail \-\-whitelist=~/work* \-\-whitelist=/var/backups*
2764 2776
2765.TP 2777.TP
2766\fB\-\-writable-etc 2778\fB\-\-writable-etc