aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README2
-rwxr-xr-xcontrib/sort.py39
-rw-r--r--etc/inc/disable-passwdmgr.inc1
-rw-r--r--etc/inc/disable-programs.inc4
-rw-r--r--etc/profile-a-l/audio-recorder.profile7
-rw-r--r--etc/profile-a-l/digikam.profile1
-rw-r--r--etc/profile-a-l/discord-common.profile1
-rw-r--r--etc/profile-a-l/etr.profile1
-rw-r--r--etc/profile-a-l/firefox.profile8
-rw-r--r--etc/profile-a-l/gl-117-wrapper.profie14
-rw-r--r--etc/profile-a-l/glaxium-wrapper.profie14
-rw-r--r--etc/profile-a-l/kcalc.profile12
-rw-r--r--etc/profile-a-l/keepassxc.profile2
-rw-r--r--etc/profile-m-z/mrrescue.profile6
-rw-r--r--etc/profile-m-z/neverball-wrapper.profie14
-rw-r--r--etc/profile-m-z/neverball.profile16
-rw-r--r--etc/profile-m-z/neverputt-wrapper.profie14
-rw-r--r--etc/profile-m-z/okular.profile8
-rw-r--r--etc/profile-m-z/pinball-wrapper.profie14
-rw-r--r--etc/profile-m-z/pingus.profile4
-rw-r--r--etc/profile-m-z/regextester.profile11
-rw-r--r--etc/profile-m-z/spectacle.profile2
-rw-r--r--etc/profile-m-z/steam.profile18
-rw-r--r--etc/profile-m-z/supertux2.profile3
-rw-r--r--etc/profile-m-z/virtualbox.profile2
-rw-r--r--etc/profile-m-z/xfce4-mixer.profile2
-rw-r--r--src/fbuilder/build_bin.c2
-rw-r--r--src/fbuilder/build_fs.c12
-rw-r--r--src/fbuilder/build_home.c2
-rw-r--r--src/fbuilder/build_profile.c23
-rw-r--r--src/man/firejail-profile.txt12
-rw-r--r--src/man/firejail.txt14
32 files changed, 138 insertions, 147 deletions
diff --git a/README b/README
index c2736a7b6..eb8a8e374 100644
--- a/README
+++ b/README
@@ -827,7 +827,7 @@ soredake (https://github.com/soredake)
827 - fix handling of STEAM_RUNTIME_PREFER_HOST_LIBRARIES in steam profile 827 - fix handling of STEAM_RUNTIME_PREFER_HOST_LIBRARIES in steam profile
828 - fix keepassxc.profile 828 - fix keepassxc.profile
829 - fix qtox.profile 829 - fix qtox.profile
830 - add ocaltime to private-etc to make qtox show correct time 830 - add localtime to private-etc to make qtox show correct time
831 - fixes for the keepassxc 2.2.5 version 831 - fixes for the keepassxc 2.2.5 version
832SkewedZeppelin (https://github.com/SkewedZeppelin) 832SkewedZeppelin (https://github.com/SkewedZeppelin)
833 - added Bless, Gnome 2048, Gnome Calculator, Gnome Contacts, JD-GUI, Lollypop, MultiMC5 profiles 833 - added Bless, Gnome 2048, Gnome Calculator, Gnome Contacts, JD-GUI, Lollypop, MultiMC5 profiles
diff --git a/contrib/sort.py b/contrib/sort.py
index 9e5062c3c..c7325facb 100755
--- a/contrib/sort.py
+++ b/contrib/sort.py
@@ -35,43 +35,16 @@ def sort_alphabetical(raw_items):
35 35
36def sort_protocol(protocols): 36def sort_protocol(protocols):
37 """sort the given protocole into this scheme: unix,inet,inet6,netlink,packet,bluetooth""" 37 """sort the given protocole into this scheme: unix,inet,inet6,netlink,packet,bluetooth"""
38
38 # shortcut for common protocol lines 39 # shortcut for common protocol lines
39 if protocols in ("unix", "unix,inet,inet6"): 40 if protocols in ("unix", "unix,inet,inet6"):
40 return protocols 41 return protocols
42
41 fixed_protocols = "" 43 fixed_protocols = ""
42 present_protocols = { 44 for protocol in ("unix", "inet", "inet6", "netlink", "packet", "bluetooth"):
43 "unix": False, 45 for prefix in ("", "-", "+", "="):
44 "inet": False, 46 if f",{prefix}{protocol}," in f",{protocols},":
45 "inet6": False, 47 fixed_protocols += f"{prefix}{protocol},"
46 "netlink": False,
47 "packet": False,
48 "bluetooth": False,
49 }
50 for protocol in protocols.split(","):
51 if protocol == "unix":
52 present_protocols["unix"] = True
53 elif protocol == "inet":
54 present_protocols["inet"] = True
55 elif protocol == "inet6":
56 present_protocols["inet6"] = True
57 elif protocol == "netlink":
58 present_protocols["netlink"] = True
59 elif protocol == "packet":
60 present_protocols["packet"] = True
61 elif protocol == "bluetooth":
62 present_protocols["bluetooth"] = True
63 if present_protocols["unix"]:
64 fixed_protocols += "unix,"
65 if present_protocols["inet"]:
66 fixed_protocols += "inet,"
67 if present_protocols["inet6"]:
68 fixed_protocols += "inet6,"
69 if present_protocols["netlink"]:
70 fixed_protocols += "netlink,"
71 if present_protocols["packet"]:
72 fixed_protocols += "packet,"
73 if present_protocols["bluetooth"]:
74 fixed_protocols += "bluetooth,"
75 return fixed_protocols[:-1] 48 return fixed_protocols[:-1]
76 49
77 50
diff --git a/etc/inc/disable-passwdmgr.inc b/etc/inc/disable-passwdmgr.inc
index 316378cb8..3ed9a1b14 100644
--- a/etc/inc/disable-passwdmgr.inc
+++ b/etc/inc/disable-passwdmgr.inc
@@ -7,6 +7,7 @@ blacklist ${HOME}/.config/KeePass
7blacklist ${HOME}/.config/keepass 7blacklist ${HOME}/.config/keepass
8blacklist ${HOME}/.config/keepassx 8blacklist ${HOME}/.config/keepassx
9blacklist ${HOME}/.config/keepassxc 9blacklist ${HOME}/.config/keepassxc
10blacklist ${HOME}/.config/KeePassXCrc
10blacklist ${HOME}/.config/Sinew Software Systems 11blacklist ${HOME}/.config/Sinew Software Systems
11blacklist ${HOME}/.fpm 12blacklist ${HOME}/.fpm
12blacklist ${HOME}/.keepass 13blacklist ${HOME}/.keepass
diff --git a/etc/inc/disable-programs.inc b/etc/inc/disable-programs.inc
index cf9ef44bf..1e1734a9e 100644
--- a/etc/inc/disable-programs.inc
+++ b/etc/inc/disable-programs.inc
@@ -138,6 +138,7 @@ blacklist ${HOME}/.config/Rambox
138blacklist ${HOME}/.config/Riot 138blacklist ${HOME}/.config/Riot
139blacklist ${HOME}/.config/Rocket.Chat 139blacklist ${HOME}/.config/Rocket.Chat
140blacklist ${HOME}/.config/RogueLegacy 140blacklist ${HOME}/.config/RogueLegacy
141blacklist ${HOME}/.config/RogueLegacyStorageContainer
141blacklist ${HOME}/.config/Signal 142blacklist ${HOME}/.config/Signal
142blacklist ${HOME}/.config/Sinew Software Systems 143blacklist ${HOME}/.config/Sinew Software Systems
143blacklist ${HOME}/.config/Slack 144blacklist ${HOME}/.config/Slack
@@ -612,7 +613,8 @@ blacklist ${HOME}/.local/share/QGIS
612blacklist ${HOME}/.local/share/QMediathekView 613blacklist ${HOME}/.local/share/QMediathekView
613blacklist ${HOME}/.local/share/QuiteRss 614blacklist ${HOME}/.local/share/QuiteRss
614blacklist ${HOME}/.local/share/Ricochet 615blacklist ${HOME}/.local/share/Ricochet
615blacklist ${HOME}/.local/share/RogueLegacy* 616blacklist ${HOME}/.local/share/RogueLegacy
617blacklist ${HOME}/.local/share/RogueLegacyStorageContainer
616blacklist ${HOME}/.local/share/Shortwave 618blacklist ${HOME}/.local/share/Shortwave
617blacklist ${HOME}/.local/share/Steam 619blacklist ${HOME}/.local/share/Steam
618blacklist ${HOME}/.local/share/SteamWorldDig 620blacklist ${HOME}/.local/share/SteamWorldDig
diff --git a/etc/profile-a-l/audio-recorder.profile b/etc/profile-a-l/audio-recorder.profile
index b2ed3b030..2c7fdc812 100644
--- a/etc/profile-a-l/audio-recorder.profile
+++ b/etc/profile-a-l/audio-recorder.profile
@@ -20,6 +20,7 @@ include disable-xdg.inc
20whitelist ${MUSIC} 20whitelist ${MUSIC}
21whitelist ${DOWNLOADS} 21whitelist ${DOWNLOADS}
22whitelist /usr/share/audio-recorder 22whitelist /usr/share/audio-recorder
23whitelist /usr/share/gstreamer-1.0
23include whitelist-common.inc 24include whitelist-common.inc
24include whitelist-usr-share-common.inc 25include whitelist-usr-share-common.inc
25include whitelist-var-common.inc 26include whitelist-var-common.inc
@@ -44,7 +45,11 @@ tracelog
44disable-mnt 45disable-mnt
45# private-bin audio-recorder 46# private-bin audio-recorder
46private-cache 47private-cache
47private-etc alternatives,fonts 48private-etc alternatives,fonts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload
48private-tmp 49private-tmp
49 50
51dbus-user filter
52dbus-user.talk ca.desrt.dconf
53dbus-system none
54
50# memory-deny-write-execute - breaks on Arch 55# memory-deny-write-execute - breaks on Arch
diff --git a/etc/profile-a-l/digikam.profile b/etc/profile-a-l/digikam.profile
index ae4a63c62..2ca7bd400 100644
--- a/etc/profile-a-l/digikam.profile
+++ b/etc/profile-a-l/digikam.profile
@@ -10,6 +10,7 @@ noblacklist ${HOME}/.config/digikam
10noblacklist ${HOME}/.config/digikamrc 10noblacklist ${HOME}/.config/digikamrc
11noblacklist ${HOME}/.kde/share/apps/digikam 11noblacklist ${HOME}/.kde/share/apps/digikam
12noblacklist ${HOME}/.kde4/share/apps/digikam 12noblacklist ${HOME}/.kde4/share/apps/digikam
13noblacklist ${HOME}/.local/share/kxmlgui5/digikam
13noblacklist ${PICTURES} 14noblacklist ${PICTURES}
14 15
15include disable-common.inc 16include disable-common.inc
diff --git a/etc/profile-a-l/discord-common.profile b/etc/profile-a-l/discord-common.profile
index b583f1a1d..b83e626d9 100644
--- a/etc/profile-a-l/discord-common.profile
+++ b/etc/profile-a-l/discord-common.profile
@@ -18,6 +18,7 @@ ignore dbus-user none
18ignore dbus-system none 18ignore dbus-system none
19 19
20ignore noexec ${HOME} 20ignore noexec ${HOME}
21ignore novideo
21 22
22whitelist ${HOME}/.config/BetterDiscord 23whitelist ${HOME}/.config/BetterDiscord
23whitelist ${HOME}/.local/share/betterdiscordctl 24whitelist ${HOME}/.local/share/betterdiscordctl
diff --git a/etc/profile-a-l/etr.profile b/etc/profile-a-l/etr.profile
index f55d23778..6d31f3042 100644
--- a/etc/profile-a-l/etr.profile
+++ b/etc/profile-a-l/etr.profile
@@ -37,6 +37,7 @@ nou2f
37novideo 37novideo
38protocol unix,netlink 38protocol unix,netlink
39seccomp 39seccomp
40seccomp.block-secondary
40shell none 41shell none
41tracelog 42tracelog
42 43
diff --git a/etc/profile-a-l/firefox.profile b/etc/profile-a-l/firefox.profile
index cefba93d4..b22a78458 100644
--- a/etc/profile-a-l/firefox.profile
+++ b/etc/profile-a-l/firefox.profile
@@ -6,6 +6,14 @@ include firefox.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# NOTE: sandboxing web browsers is as important as it is complex. Users might be
10# interested in creating custom profiles depending on use case (e.g. one for
11# general browsing, another for banking, ...). Consult our FAQ/issue tracker for more
12# info. Here are a few links to get you going.
13# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#firefox-doesnt-open-in-a-new-sandbox-instead-it-opens-a-new-tab-in-an-existing-firefox-instance
14# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#how-do-i-run-two-instances-of-firefox
15# https://github.com/netblue30/firejail/issues/4206#issuecomment-824806968
16
9noblacklist ${HOME}/.cache/mozilla 17noblacklist ${HOME}/.cache/mozilla
10noblacklist ${HOME}/.mozilla 18noblacklist ${HOME}/.mozilla
11 19
diff --git a/etc/profile-a-l/gl-117-wrapper.profie b/etc/profile-a-l/gl-117-wrapper.profie
deleted file mode 100644
index d783940f3..000000000
--- a/etc/profile-a-l/gl-117-wrapper.profie
+++ /dev/null
@@ -1,14 +0,0 @@
1# Firejail profile for gl-117-wrapper
2# This file is overwritten after every install/update
3# Persistent local customizations
4include gl-117-wrapper.local
5# Persistent global definitions
6# added by included profile
7#include globals.local
8
9include allow-opengl-game.inc
10
11private-bin gl-117-wrapper
12
13# Redirect
14include gl-117.profile
diff --git a/etc/profile-a-l/glaxium-wrapper.profie b/etc/profile-a-l/glaxium-wrapper.profie
deleted file mode 100644
index 7dc2cf65e..000000000
--- a/etc/profile-a-l/glaxium-wrapper.profie
+++ /dev/null
@@ -1,14 +0,0 @@
1# Firejail profile for glaxium-wrapper
2# This file is overwritten after every install/update
3# Persistent local customizations
4include glaxium-wrapper.local
5# Persistent global definitions
6# added by included profile
7#include globals.local
8
9include allow-opengl-game.inc
10
11private-bin glaxium-wrapper
12
13# Redirect
14include glaxium.profile
diff --git a/etc/profile-a-l/kcalc.profile b/etc/profile-a-l/kcalc.profile
index fa82e76f3..c1414472b 100644
--- a/etc/profile-a-l/kcalc.profile
+++ b/etc/profile-a-l/kcalc.profile
@@ -15,6 +15,7 @@ include disable-interpreters.inc
15include disable-passwdmgr.inc 15include disable-passwdmgr.inc
16include disable-programs.inc 16include disable-programs.inc
17include disable-shell.inc 17include disable-shell.inc
18include disable-xdg.inc
18 19
19mkdir ${HOME}/.local/share/kxmlgui5/kcalc 20mkdir ${HOME}/.local/share/kxmlgui5/kcalc
20mkfile ${HOME}/.config/kcalcrc 21mkfile ${HOME}/.config/kcalcrc
@@ -24,7 +25,12 @@ whitelist ${HOME}/.config/kcalcrc
24whitelist ${HOME}/.kde/share/config/kcalcrc 25whitelist ${HOME}/.kde/share/config/kcalcrc
25whitelist ${HOME}/.kde4/share/config/kcalcrc 26whitelist ${HOME}/.kde4/share/config/kcalcrc
26whitelist ${HOME}/.local/share/kxmlgui5/kcalc 27whitelist ${HOME}/.local/share/kxmlgui5/kcalc
28whitelist /usr/share/config.kcfg/kcalc.kcfg
29whitelist /usr/share/kcalc
30whitelist /usr/share/kconf_update/kcalcrc.upd
27include whitelist-common.inc 31include whitelist-common.inc
32include whitelist-runuser-common.inc
33include whitelist-usr-share-common.inc
28include whitelist-var-common.inc 34include whitelist-var-common.inc
29 35
30apparmor 36apparmor
@@ -41,13 +47,19 @@ nou2f
41novideo 47novideo
42protocol unix 48protocol unix
43seccomp 49seccomp
50seccomp.block-secondary
44shell none 51shell none
52tracelog
45 53
46disable-mnt 54disable-mnt
47private-bin kcalc 55private-bin kcalc
56private-cache
48private-dev 57private-dev
58private-etc alternatives,fonts,ld.so.cache,locale,locale.conf
49# private-lib - problems on Arch 59# private-lib - problems on Arch
50private-tmp 60private-tmp
51 61
52dbus-user none 62dbus-user none
53dbus-system none 63dbus-system none
64
65#memory-deny-write-execute
diff --git a/etc/profile-a-l/keepassxc.profile b/etc/profile-a-l/keepassxc.profile
index 11c279911..3c7737063 100644
--- a/etc/profile-a-l/keepassxc.profile
+++ b/etc/profile-a-l/keepassxc.profile
@@ -10,6 +10,7 @@ noblacklist ${HOME}/*.kdb
10noblacklist ${HOME}/*.kdbx 10noblacklist ${HOME}/*.kdbx
11noblacklist ${HOME}/.cache/keepassxc 11noblacklist ${HOME}/.cache/keepassxc
12noblacklist ${HOME}/.config/keepassxc 12noblacklist ${HOME}/.config/keepassxc
13noblacklist ${HOME}/.config/KeePassXCrc
13noblacklist ${HOME}/.keepassxc 14noblacklist ${HOME}/.keepassxc
14noblacklist ${DOCUMENTS} 15noblacklist ${DOCUMENTS}
15 16
@@ -51,6 +52,7 @@ include disable-xdg.inc
51#mkdir ${HOME}/.config/keepassxc 52#mkdir ${HOME}/.config/keepassxc
52#whitelist ${HOME}/.cache/keepassxc 53#whitelist ${HOME}/.cache/keepassxc
53#whitelist ${HOME}/.config/keepassxc 54#whitelist ${HOME}/.config/keepassxc
55#whitelist ${HOME}/.config/KeePassXCrc
54#include whitelist-common.inc 56#include whitelist-common.inc
55 57
56whitelist /usr/share/keepassxc 58whitelist /usr/share/keepassxc
diff --git a/etc/profile-m-z/mrrescue.profile b/etc/profile-m-z/mrrescue.profile
index f02a4f357..5b2164bae 100644
--- a/etc/profile-m-z/mrrescue.profile
+++ b/etc/profile-m-z/mrrescue.profile
@@ -8,18 +8,23 @@ include globals.local
8 8
9noblacklist ${HOME}/.local/share/love 9noblacklist ${HOME}/.local/share/love
10 10
11include allow-bin-sh.inc
12include allow-lua.inc
13
11include disable-common.inc 14include disable-common.inc
12include disable-devel.inc 15include disable-devel.inc
13include disable-exec.inc 16include disable-exec.inc
14include disable-interpreters.inc 17include disable-interpreters.inc
15include disable-passwdmgr.inc 18include disable-passwdmgr.inc
16include disable-programs.inc 19include disable-programs.inc
20include disable-shell.inc
17include disable-xdg.inc 21include disable-xdg.inc
18 22
19mkdir ${HOME}/.local/share/love 23mkdir ${HOME}/.local/share/love
20whitelist ${HOME}/.local/share/love 24whitelist ${HOME}/.local/share/love
21whitelist /usr/share/mrrescue 25whitelist /usr/share/mrrescue
22include whitelist-common.inc 26include whitelist-common.inc
27include whitelist-runuser-common.inc
23include whitelist-usr-share-common.inc 28include whitelist-usr-share-common.inc
24include whitelist-var-common.inc 29include whitelist-var-common.inc
25 30
@@ -35,6 +40,7 @@ nou2f
35novideo 40novideo
36protocol unix,netlink 41protocol unix,netlink
37seccomp 42seccomp
43seccomp.block-secondary
38shell none 44shell none
39tracelog 45tracelog
40 46
diff --git a/etc/profile-m-z/neverball-wrapper.profie b/etc/profile-m-z/neverball-wrapper.profie
deleted file mode 100644
index 534e41dd1..000000000
--- a/etc/profile-m-z/neverball-wrapper.profie
+++ /dev/null
@@ -1,14 +0,0 @@
1# Firejail profile for neverball-wrapper
2# This file is overwritten after every install/update
3# Persistent local customizations
4include neverball-wrapper.local
5# Persistent global definitions
6# added by included profile
7#include globals.local
8
9include allow-opengl-game.inc
10
11private-bin neverball-wrapper
12
13# Redirect
14include neverball.profile
diff --git a/etc/profile-m-z/neverball.profile b/etc/profile-m-z/neverball.profile
index 84c634549..2695f2f90 100644
--- a/etc/profile-m-z/neverball.profile
+++ b/etc/profile-m-z/neverball.profile
@@ -14,13 +14,19 @@ include disable-exec.inc
14include disable-interpreters.inc 14include disable-interpreters.inc
15include disable-passwdmgr.inc 15include disable-passwdmgr.inc
16include disable-programs.inc 16include disable-programs.inc
17include disable-shell.inc
18include disable-xdg.inc
17 19
18mkdir ${HOME}/.neverball 20mkdir ${HOME}/.neverball
19whitelist ${HOME}/.neverball 21whitelist ${HOME}/.neverball
22whitelist /usr/share/neverball
20include whitelist-common.inc 23include whitelist-common.inc
24include whitelist-runuser-common.inc
25include whitelist-usr-share-common.inc
26include whitelist-var-common.inc
21 27
22caps.drop all 28caps.drop all
23netfilter 29net none
24nodvd 30nodvd
25nogroups 31nogroups
26nonewprivs 32nonewprivs
@@ -28,12 +34,18 @@ noroot
28notv 34notv
29nou2f 35nou2f
30novideo 36novideo
31protocol unix,netlink 37protocol unix
32seccomp 38seccomp
39seccomp.block-secondary
33shell none 40shell none
41tracelog
34 42
35disable-mnt 43disable-mnt
36private-bin neverball 44private-bin neverball
45private-cache
37private-dev 46private-dev
47private-etc alternatives,fonts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,machine-id
38private-tmp 48private-tmp
39 49
50dbus-user none
51dbus-system none
diff --git a/etc/profile-m-z/neverputt-wrapper.profie b/etc/profile-m-z/neverputt-wrapper.profie
deleted file mode 100644
index dacd113cc..000000000
--- a/etc/profile-m-z/neverputt-wrapper.profie
+++ /dev/null
@@ -1,14 +0,0 @@
1# Firejail profile for neverputt-wrapper
2# This file is overwritten after every install/update
3# Persistent local customizations
4include neverputt-wrapper.local
5# Persistent global definitions
6# added by included profile
7#include globals.local
8
9include allow-opengl-game.inc
10
11private-bin neverputt-wrapper
12
13# Redirect
14include neverputt.profile
diff --git a/etc/profile-m-z/okular.profile b/etc/profile-m-z/okular.profile
index e21ac997a..3f75d4f09 100644
--- a/etc/profile-m-z/okular.profile
+++ b/etc/profile-m-z/okular.profile
@@ -28,10 +28,16 @@ include disable-programs.inc
28include disable-shell.inc 28include disable-shell.inc
29include disable-xdg.inc 29include disable-xdg.inc
30 30
31whitelist /usr/share/config.kcfg 31whitelist /usr/share/config.kcfg/gssettings.kcfg
32whitelist /usr/share/config.kcfg/pdfsettings.kcfg
33whitelist /usr/share/config.kcfg/okular.kcfg
34whitelist /usr/share/config.kcfg/okular_core.kcfg
35whitelist /usr/share/ghostscript
36whitelist /usr/share/kconf_update/okular.upd
32whitelist /usr/share/kxmlgui5/okular 37whitelist /usr/share/kxmlgui5/okular
33whitelist /usr/share/okular 38whitelist /usr/share/okular
34whitelist /usr/share/poppler 39whitelist /usr/share/poppler
40include whitelist-runuser-common.inc
35include whitelist-usr-share-common.inc 41include whitelist-usr-share-common.inc
36include whitelist-var-common.inc 42include whitelist-var-common.inc
37 43
diff --git a/etc/profile-m-z/pinball-wrapper.profie b/etc/profile-m-z/pinball-wrapper.profie
deleted file mode 100644
index 2b5ed6e27..000000000
--- a/etc/profile-m-z/pinball-wrapper.profie
+++ /dev/null
@@ -1,14 +0,0 @@
1# Firejail profile for pinball-wrapper
2# This file is overwritten after every install/update
3# Persistent local customizations
4include pinball-wrapper.local
5# Persistent global definitions
6# added by included profile
7#include globals.local
8
9include allow-opengl-game.inc
10
11private-bin pinball-wrapper
12
13# Redirect
14include pinball.profile
diff --git a/etc/profile-m-z/pingus.profile b/etc/profile-m-z/pingus.profile
index ebfd236aa..e3b20e59f 100644
--- a/etc/profile-m-z/pingus.profile
+++ b/etc/profile-m-z/pingus.profile
@@ -8,12 +8,15 @@ include globals.local
8 8
9noblacklist ${HOME}/.pingus 9noblacklist ${HOME}/.pingus
10 10
11include allow-bin-sh.inc
12
11include disable-common.inc 13include disable-common.inc
12include disable-devel.inc 14include disable-devel.inc
13include disable-exec.inc 15include disable-exec.inc
14include disable-interpreters.inc 16include disable-interpreters.inc
15include disable-passwdmgr.inc 17include disable-passwdmgr.inc
16include disable-programs.inc 18include disable-programs.inc
19include disable-shell.inc
17include disable-xdg.inc 20include disable-xdg.inc
18 21
19mkdir ${HOME}/.pingus 22mkdir ${HOME}/.pingus
@@ -36,6 +39,7 @@ nou2f
36novideo 39novideo
37protocol unix,netlink 40protocol unix,netlink
38seccomp 41seccomp
42seccomp.block-secondary
39shell none 43shell none
40tracelog 44tracelog
41 45
diff --git a/etc/profile-m-z/regextester.profile b/etc/profile-m-z/regextester.profile
index 6fb0d4b5f..bab2badb5 100644
--- a/etc/profile-m-z/regextester.profile
+++ b/etc/profile-m-z/regextester.profile
@@ -16,9 +16,8 @@ include disable-shell.inc
16include disable-xdg.inc 16include disable-xdg.inc
17 17
18whitelist /usr/share/com.github.artemanufrij.regextester 18whitelist /usr/share/com.github.artemanufrij.regextester
19include whitelist-usr-share-common.inc
20
21include whitelist-common.inc 19include whitelist-common.inc
20include whitelist-usr-share-common.inc
22include whitelist-var-common.inc 21include whitelist-var-common.inc
23 22
24apparmor 23apparmor
@@ -48,11 +47,9 @@ private-etc alternatives,fonts
48private-lib libgranite.so.* 47private-lib libgranite.so.*
49private-tmp 48private-tmp
50 49
51# makes settings immutable 50dbus-user filter
52# dbus-user none 51dbus-user.talk ca.desrt.dconf
53# dbus-system none 52dbus-system none
54
55memory-deny-write-execute
56 53
57# never write anything 54# never write anything
58read-only ${HOME} 55read-only ${HOME}
diff --git a/etc/profile-m-z/spectacle.profile b/etc/profile-m-z/spectacle.profile
index cedff0b83..f99246ad6 100644
--- a/etc/profile-m-z/spectacle.profile
+++ b/etc/profile-m-z/spectacle.profile
@@ -26,6 +26,8 @@ include disable-xdg.inc
26mkfile ${HOME}/.config/spectaclerc 26mkfile ${HOME}/.config/spectaclerc
27whitelist ${HOME}/.config/spectaclerc 27whitelist ${HOME}/.config/spectaclerc
28whitelist ${PICTURES} 28whitelist ${PICTURES}
29whitelist /usr/share/kconf_update/spectacle_newConfig.upd
30whitelist /usr/share/kconf_update/spectacle_shortcuts.upd
29include whitelist-common.inc 31include whitelist-common.inc
30include whitelist-runuser-common.inc 32include whitelist-runuser-common.inc
31include whitelist-usr-share-common.inc 33include whitelist-usr-share-common.inc
diff --git a/etc/profile-m-z/steam.profile b/etc/profile-m-z/steam.profile
index 0bcbe6da2..922823f98 100644
--- a/etc/profile-m-z/steam.profile
+++ b/etc/profile-m-z/steam.profile
@@ -10,6 +10,7 @@ noblacklist ${HOME}/.config/Epic
10noblacklist ${HOME}/.config/Loop_Hero 10noblacklist ${HOME}/.config/Loop_Hero
11noblacklist ${HOME}/.config/ModTheSpire 11noblacklist ${HOME}/.config/ModTheSpire
12noblacklist ${HOME}/.config/RogueLegacy 12noblacklist ${HOME}/.config/RogueLegacy
13noblacklist ${HOME}/.config/RogueLegacyStorageContainer
13noblacklist ${HOME}/.killingfloor 14noblacklist ${HOME}/.killingfloor
14noblacklist ${HOME}/.klei 15noblacklist ${HOME}/.klei
15noblacklist ${HOME}/.local/share/3909/PapersPlease 16noblacklist ${HOME}/.local/share/3909/PapersPlease
@@ -22,7 +23,8 @@ noblacklist ${HOME}/.local/share/feral-interactive
22noblacklist ${HOME}/.local/share/IntoTheBreach 23noblacklist ${HOME}/.local/share/IntoTheBreach
23noblacklist ${HOME}/.local/share/Paradox Interactive 24noblacklist ${HOME}/.local/share/Paradox Interactive
24noblacklist ${HOME}/.local/share/PillarsOfEternity 25noblacklist ${HOME}/.local/share/PillarsOfEternity
25noblacklist ${HOME}/.local/share/RogueLegacy* 26noblacklist ${HOME}/.local/share/RogueLegacy
27noblacklist ${HOME}/.local/share/RogueLegacyStorageContainer
26noblacklist ${HOME}/.local/share/Steam 28noblacklist ${HOME}/.local/share/Steam
27noblacklist ${HOME}/.local/share/SteamWorldDig 29noblacklist ${HOME}/.local/share/SteamWorldDig
28noblacklist ${HOME}/.local/share/SteamWorld Dig 2 30noblacklist ${HOME}/.local/share/SteamWorld Dig 2
@@ -69,7 +71,7 @@ mkdir ${HOME}/.local/share/feral-interactive
69mkdir ${HOME}/.local/share/IntoTheBreach 71mkdir ${HOME}/.local/share/IntoTheBreach
70mkdir ${HOME}/.local/share/Paradox Interactive 72mkdir ${HOME}/.local/share/Paradox Interactive
71mkdir ${HOME}/.local/share/PillarsOfEternity 73mkdir ${HOME}/.local/share/PillarsOfEternity
72mkdir ${HOME}/.local/share/RogueLegacy* 74mkdir ${HOME}/.local/share/RogueLegacy
73mkdir ${HOME}/.local/share/Steam 75mkdir ${HOME}/.local/share/Steam
74mkdir ${HOME}/.local/share/SteamWorldDig 76mkdir ${HOME}/.local/share/SteamWorldDig
75mkdir ${HOME}/.local/share/SteamWorld Dig 2 77mkdir ${HOME}/.local/share/SteamWorld Dig 2
@@ -86,6 +88,7 @@ whitelist ${HOME}/.config/Epic
86whitelist ${HOME}/.config/Loop_Hero 88whitelist ${HOME}/.config/Loop_Hero
87whitelist ${HOME}/.config/ModTheSpire 89whitelist ${HOME}/.config/ModTheSpire
88whitelist ${HOME}/.config/RogueLegacy 90whitelist ${HOME}/.config/RogueLegacy
91whitelist ${HOME}/.config/RogueLegacyStorageContainer
89whitelist ${HOME}/.config/unity3d 92whitelist ${HOME}/.config/unity3d
90whitelist ${HOME}/.killingfloor 93whitelist ${HOME}/.killingfloor
91whitelist ${HOME}/.klei 94whitelist ${HOME}/.klei
@@ -99,7 +102,8 @@ whitelist ${HOME}/.local/share/feral-interactive
99whitelist ${HOME}/.local/share/IntoTheBreach 102whitelist ${HOME}/.local/share/IntoTheBreach
100whitelist ${HOME}/.local/share/Paradox Interactive 103whitelist ${HOME}/.local/share/Paradox Interactive
101whitelist ${HOME}/.local/share/PillarsOfEternity 104whitelist ${HOME}/.local/share/PillarsOfEternity
102whitelist ${HOME}/.local/share/RogueLegacy* 105whitelist ${HOME}/.local/share/RogueLegacy
106whitelist ${HOME}/.local/share/RogueLegacyStorageContainer
103whitelist ${HOME}/.local/share/Steam 107whitelist ${HOME}/.local/share/Steam
104whitelist ${HOME}/.local/share/SteamWorldDig 108whitelist ${HOME}/.local/share/SteamWorldDig
105whitelist ${HOME}/.local/share/SteamWorld Dig 2 109whitelist ${HOME}/.local/share/SteamWorld Dig 2
@@ -115,6 +119,14 @@ whitelist ${HOME}/.steampid
115include whitelist-common.inc 119include whitelist-common.inc
116include whitelist-var-common.inc 120include whitelist-var-common.inc
117 121
122# Note: The following were intentionally left out as they are alternative
123# (i.e.: unnecessary and/or legacy) paths whose existence may potentially
124# clobber other paths (see #4225). If you use any, either add the entry to
125# steam.local or move the contents to a path listed above (or open an issue if
126# it's missing above).
127#mkdir ${HOME}/.config/RogueLegacyStorageContainer
128#mkdir ${HOME}/.local/share/RogueLegacyStorageContainer
129
118caps.drop all 130caps.drop all
119#ipc-namespace 131#ipc-namespace
120netfilter 132netfilter
diff --git a/etc/profile-m-z/supertux2.profile b/etc/profile-m-z/supertux2.profile
index 9cc023765..d31f25c0d 100644
--- a/etc/profile-m-z/supertux2.profile
+++ b/etc/profile-m-z/supertux2.profile
@@ -14,6 +14,7 @@ include disable-exec.inc
14include disable-interpreters.inc 14include disable-interpreters.inc
15include disable-passwdmgr.inc 15include disable-passwdmgr.inc
16include disable-programs.inc 16include disable-programs.inc
17include disable-shell.inc
17include disable-xdg.inc 18include disable-xdg.inc
18 19
19mkdir ${HOME}/.local/share/supertux2 20mkdir ${HOME}/.local/share/supertux2
@@ -42,6 +43,8 @@ tracelog
42 43
43disable-mnt 44disable-mnt
44# private-bin supertux2 45# private-bin supertux2
46private-cache
47private-etc machine-id
45private-dev 48private-dev
46private-tmp 49private-tmp
47 50
diff --git a/etc/profile-m-z/virtualbox.profile b/etc/profile-m-z/virtualbox.profile
index 64d787bfb..c22fb0ff9 100644
--- a/etc/profile-m-z/virtualbox.profile
+++ b/etc/profile-m-z/virtualbox.profile
@@ -44,7 +44,7 @@ shell none
44tracelog 44tracelog
45 45
46#disable-mnt 46#disable-mnt
47#private-bin basename,bash,env,gawk,grep,ps,readlink,sh,virtualbox,VirtualBox,VBox*,vbox*,whoami 47#private-bin awk,basename,bash,env,gawk,grep,ps,readlink,sh,virtualbox,VirtualBox,VBox*,vbox*,whoami
48private-cache 48private-cache
49private-etc alsa,asound.conf,ca-certificates,conf.d,crypto-policies,dconf,fonts,hostname,hosts,ld.so.cache,localtime,machine-id,pki,pulse,resolv.conf,ssl 49private-etc alsa,asound.conf,ca-certificates,conf.d,crypto-policies,dconf,fonts,hostname,hosts,ld.so.cache,localtime,machine-id,pki,pulse,resolv.conf,ssl
50private-tmp 50private-tmp
diff --git a/etc/profile-m-z/xfce4-mixer.profile b/etc/profile-m-z/xfce4-mixer.profile
index 78cb2862c..d9d1cd393 100644
--- a/etc/profile-m-z/xfce4-mixer.profile
+++ b/etc/profile-m-z/xfce4-mixer.profile
@@ -19,7 +19,7 @@ include disable-xdg.inc
19 19
20mkfile ${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml 20mkfile ${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml
21whitelist ${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml 21whitelist ${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml
22whitelist /usr/share/gstreamer 22whitelist /usr/share/gstreamer-*
23whitelist /usr/share/xfce4 23whitelist /usr/share/xfce4
24whitelist /usr/share/xfce4-mixer 24whitelist /usr/share/xfce4-mixer
25include whitelist-common.inc 25include whitelist-common.inc
diff --git a/src/fbuilder/build_bin.c b/src/fbuilder/build_bin.c
index 96bd351f3..431aebee6 100644
--- a/src/fbuilder/build_bin.c
+++ b/src/fbuilder/build_bin.c
@@ -121,6 +121,6 @@ void build_bin(const char *fname, FILE *fp) {
121 ptr = ptr->next; 121 ptr = ptr->next;
122 } 122 }
123 fprintf(fp, "\n"); 123 fprintf(fp, "\n");
124 fprintf(fp, "# private-lib\n"); 124 fprintf(fp, "#private-lib\n");
125 } 125 }
126} 126}
diff --git a/src/fbuilder/build_fs.c b/src/fbuilder/build_fs.c
index 495f71ab8..ac0cd455a 100644
--- a/src/fbuilder/build_fs.c
+++ b/src/fbuilder/build_fs.c
@@ -220,6 +220,10 @@ static void tmp_callback(char *ptr) {
220 // skip strace file 220 // skip strace file
221 if (strncmp(ptr, "/tmp/firejail-strace", 20) == 0) 221 if (strncmp(ptr, "/tmp/firejail-strace", 20) == 0)
222 return; 222 return;
223 if (strncmp(ptr, "/tmp/runtime-", 13) == 0)
224 return;
225 if (strcmp(ptr, "/tmp") == 0)
226 return;
223 227
224 tmp_out = filedb_add(tmp_out, ptr); 228 tmp_out = filedb_add(tmp_out, ptr);
225} 229}
@@ -232,8 +236,7 @@ void build_tmp(const char *fname, FILE *fp) {
232 if (tmp_out == NULL) 236 if (tmp_out == NULL)
233 fprintf(fp, "private-tmp\n"); 237 fprintf(fp, "private-tmp\n");
234 else { 238 else {
235 fprintf(fp, "\n"); 239 fprintf(fp, "#private-tmp\n");
236 fprintf(fp, "# private-tmp\n");
237 fprintf(fp, "# File accessed in /tmp directory:\n"); 240 fprintf(fp, "# File accessed in /tmp directory:\n");
238 fprintf(fp, "# "); 241 fprintf(fp, "# ");
239 FileDB *ptr = tmp_out; 242 FileDB *ptr = tmp_out;
@@ -310,9 +313,8 @@ void build_dev(const char *fname, FILE *fp) {
310 if (dev_out == NULL) 313 if (dev_out == NULL)
311 fprintf(fp, "private-dev\n"); 314 fprintf(fp, "private-dev\n");
312 else { 315 else {
313 fprintf(fp, "\n"); 316 fprintf(fp, "#private-dev\n");
314 fprintf(fp, "# private-dev\n"); 317 fprintf(fp, "# This is the list of devices accessed on top of regular private-dev devices:\n");
315 fprintf(fp, "# This is the list of devices accessed (on top of regular private-dev devices:\n");
316 fprintf(fp, "# "); 318 fprintf(fp, "# ");
317 FileDB *ptr = dev_out; 319 FileDB *ptr = dev_out;
318 while (ptr) { 320 while (ptr) {
diff --git a/src/fbuilder/build_home.c b/src/fbuilder/build_home.c
index 683009b71..d7706282a 100644
--- a/src/fbuilder/build_home.c
+++ b/src/fbuilder/build_home.c
@@ -141,7 +141,7 @@ void process_home(const char *fname, char *home, int home_len) {
141 } 141 }
142 142
143 // skip files and directories in whitelist-common.inc 143 // skip files and directories in whitelist-common.inc
144 if (filedb_find(db_skip, toadd)) { 144 if (strlen(toadd) == 0 || filedb_find(db_skip, toadd)) {
145 if (dir) 145 if (dir)
146 free(dir); 146 free(dir);
147 continue; 147 continue;
diff --git a/src/fbuilder/build_profile.c b/src/fbuilder/build_profile.c
index 96a83954d..0c1b57384 100644
--- a/src/fbuilder/build_profile.c
+++ b/src/fbuilder/build_profile.c
@@ -150,12 +150,12 @@ void build_profile(int argc, char **argv, int index, FILE *fp) {
150 150
151 fprintf(fp, "### basic blacklisting\n"); 151 fprintf(fp, "### basic blacklisting\n");
152 fprintf(fp, "include disable-common.inc\n"); 152 fprintf(fp, "include disable-common.inc\n");
153 fprintf(fp, "# include disable-devel.inc\n"); 153 fprintf(fp, "#include disable-devel.inc\n");
154 fprintf(fp, "# include disable-exec.inc\n"); 154 fprintf(fp, "#include disable-exec.inc\n");
155 fprintf(fp, "# include disable-interpreters.inc\n"); 155 fprintf(fp, "#include disable-interpreters.inc\n");
156 fprintf(fp, "include disable-passwdmgr.inc\n"); 156 fprintf(fp, "include disable-passwdmgr.inc\n");
157 fprintf(fp, "# include disable-programs.inc\n"); 157 fprintf(fp, "#include disable-programs.inc\n");
158 fprintf(fp, "# include disable-xdg.inc\n"); 158 fprintf(fp, "#include disable-xdg.inc\n");
159 fprintf(fp, "\n"); 159 fprintf(fp, "\n");
160 160
161 fprintf(fp, "### home directory whitelisting\n"); 161 fprintf(fp, "### home directory whitelisting\n");
@@ -163,18 +163,17 @@ void build_profile(int argc, char **argv, int index, FILE *fp) {
163 fprintf(fp, "\n"); 163 fprintf(fp, "\n");
164 164
165 fprintf(fp, "### filesystem\n"); 165 fprintf(fp, "### filesystem\n");
166 fprintf(fp, "# /usr/share:\n"); 166 fprintf(fp, "### /usr/share:\n");
167 build_share(trace_output, fp); 167 build_share(trace_output, fp);
168 fprintf(fp, "# /var:\n"); 168 fprintf(fp, "### /var:\n");
169 build_var(trace_output, fp); 169 build_var(trace_output, fp);
170 fprintf(fp, "\n"); 170 fprintf(fp, "### /bin:\n");
171 fprintf(fp, "# $PATH:\n");
172 build_bin(trace_output, fp); 171 build_bin(trace_output, fp);
173 fprintf(fp, "# /dev:\n"); 172 fprintf(fp, "### /dev:\n");
174 build_dev(trace_output, fp); 173 build_dev(trace_output, fp);
175 fprintf(fp, "# /etc:\n"); 174 fprintf(fp, "### /etc:\n");
176 build_etc(trace_output, fp); 175 build_etc(trace_output, fp);
177 fprintf(fp, "# /tmp:\n"); 176 fprintf(fp, "### /tmp:\n");
178 build_tmp(trace_output, fp); 177 build_tmp(trace_output, fp);
179 fprintf(fp, "\n"); 178 fprintf(fp, "\n");
180 179
diff --git a/src/man/firejail-profile.txt b/src/man/firejail-profile.txt
index ee685da73..2bb57cee2 100644
--- a/src/man/firejail-profile.txt
+++ b/src/man/firejail-profile.txt
@@ -295,7 +295,9 @@ Use the options no3d, nodvd, nosound, notv, nou2f and novideo for additional res
295Build a new /etc in a temporary 295Build a new /etc in a temporary
296filesystem, and copy the files and directories in the list. 296filesystem, and copy the files and directories in the list.
297The files and directories in the list must be expressed as relative to 297The files and directories in the list must be expressed as relative to
298the /etc directory. 298the /etc directory, and must not contain the / character
299(e.g., /etc/foo must be expressed as foo, but /etc/foo/bar --
300expressed as foo/bar -- is disallowed).
299All modifications are discarded when the sandbox is closed. 301All modifications are discarded when the sandbox is closed.
300#ifdef HAVE_PRIVATE_HOME 302#ifdef HAVE_PRIVATE_HOME
301.TP 303.TP
@@ -319,14 +321,18 @@ This feature is still under development, see \fBman 1 firejail\fR for some examp
319Build a new /opt in a temporary 321Build a new /opt in a temporary
320filesystem, and copy the files and directories in the list. 322filesystem, and copy the files and directories in the list.
321The files and directories in the list must be expressed as relative to 323The files and directories in the list must be expressed as relative to
322the /opt directory. 324the /opt directory, and must not contain the / character
325(e.g., /opt/foo must be expressed as foo, but /opt/foo/bar --
326expressed as foo/bar -- is disallowed).
323All modifications are discarded when the sandbox is closed. 327All modifications are discarded when the sandbox is closed.
324.TP 328.TP
325\fBprivate-srv file,directory 329\fBprivate-srv file,directory
326Build a new /srv in a temporary 330Build a new /srv in a temporary
327filesystem, and copy the files and directories in the list. 331filesystem, and copy the files and directories in the list.
328The files and directories in the list must be expressed as relative to 332The files and directories in the list must be expressed as relative to
329the /srv directory. 333the /srv directory, and must not contain the / character
334(e.g., /srv/foo must be expressed as foo, but /srv/foo/bar --
335expressed as foo/bar -- is disallowed).
330All modifications are discarded when the sandbox is closed. 336All modifications are discarded when the sandbox is closed.
331.TP 337.TP
332\fBprivate-tmp 338\fBprivate-tmp
diff --git a/src/man/firejail.txt b/src/man/firejail.txt
index f27379a2d..1ee7ab1f1 100644
--- a/src/man/firejail.txt
+++ b/src/man/firejail.txt
@@ -1883,7 +1883,9 @@ $
1883Build a new /etc in a temporary 1883Build a new /etc in a temporary
1884filesystem, and copy the files and directories in the list. 1884filesystem, and copy the files and directories in the list.
1885The files and directories in the list must be expressed as relative to 1885The files and directories in the list must be expressed as relative to
1886the /etc directory. 1886the /etc directory, and must not contain the / character
1887(e.g., /etc/foo must be expressed as foo, but /etc/foo/bar --
1888expressed as foo/bar -- is disallowed).
1887If no listed file is found, /etc directory will be empty. 1889If no listed file is found, /etc directory will be empty.
1888All modifications are discarded when the sandbox is closed. 1890All modifications are discarded when the sandbox is closed.
1889.br 1891.br
@@ -1893,7 +1895,7 @@ Example:
1893.br 1895.br
1894$ firejail --private-etc=group,hostname,localtime, \\ 1896$ firejail --private-etc=group,hostname,localtime, \\
1895.br 1897.br
1896nsswitch.conf,passwd,resolv.conf,default/motd-news 1898nsswitch.conf,passwd,resolv.conf
1897#ifdef HAVE_PRIVATE_HOME 1899#ifdef HAVE_PRIVATE_HOME
1898.TP 1900.TP
1899\fB\-\-private-home=file,directory 1901\fB\-\-private-home=file,directory
@@ -1968,7 +1970,9 @@ $
1968Build a new /opt in a temporary 1970Build a new /opt in a temporary
1969filesystem, and copy the files and directories in the list. 1971filesystem, and copy the files and directories in the list.
1970The files and directories in the list must be expressed as relative to 1972The files and directories in the list must be expressed as relative to
1971the /opt directory. 1973the /opt directory, and must not contain the / character
1974(e.g., /opt/foo must be expressed as foo, but /opt/foo/bar --
1975expressed as foo/bar -- is disallowed).
1972If no listed file is found, /opt directory will be empty. 1976If no listed file is found, /opt directory will be empty.
1973All modifications are discarded when the sandbox is closed. 1977All modifications are discarded when the sandbox is closed.
1974.br 1978.br
@@ -1983,7 +1987,9 @@ $ firejail --private-opt=firefox /opt/firefox/firefox
1983Build a new /srv in a temporary 1987Build a new /srv in a temporary
1984filesystem, and copy the files and directories in the list. 1988filesystem, and copy the files and directories in the list.
1985The files and directories in the list must be expressed as relative to 1989The files and directories in the list must be expressed as relative to
1986the /srv directory. 1990the /srv directory, and must not contain the / character
1991(e.g., /opt/srv must be expressed as foo, but /srv/foo/bar --
1992expressed as srv/bar -- is disallowed).
1987If no listed file is found, /srv directory will be empty. 1993If no listed file is found, /srv directory will be empty.
1988All modifications are discarded when the sandbox is closed. 1994All modifications are discarded when the sandbox is closed.
1989.br 1995.br