aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md4
-rw-r--r--README2
-rw-r--r--README.md2
-rw-r--r--RELNOTES2
-rw-r--r--etc/inc/allow-common-devel.inc9
-rw-r--r--etc/inc/allow-nodejs.inc6
-rw-r--r--etc/inc/disable-common.inc2
-rw-r--r--etc/inc/disable-programs.inc14
-rw-r--r--etc/profile-a-l/agetpkg.profile60
-rw-r--r--etc/profile-a-l/apostrophe.profile3
-rw-r--r--etc/profile-a-l/atom.profile1
-rw-r--r--etc/profile-a-l/balsa.profile12
-rw-r--r--etc/profile-a-l/discord-common.profile2
-rw-r--r--etc/profile-a-l/evince.profile9
-rw-r--r--etc/profile-a-l/fractal.profile5
-rw-r--r--etc/profile-a-l/gajim.profile30
-rw-r--r--etc/profile-a-l/liferea.profile11
-rw-r--r--etc/profile-a-l/lsar.profile13
-rw-r--r--etc/profile-m-z/marker.profile59
-rw-r--r--etc/profile-m-z/mattermost-desktop.profile33
-rw-r--r--etc/profile-m-z/mdr.profile55
-rw-r--r--etc/profile-m-z/nodejs-common.profile54
-rw-r--r--etc/profile-m-z/npm.profile29
-rw-r--r--etc/profile-m-z/openshot.profile9
-rw-r--r--etc/profile-m-z/qnapi.profile55
-rw-r--r--etc/profile-m-z/shotwell.profile60
-rw-r--r--etc/profile-m-z/signal-desktop.profile2
-rw-r--r--etc/profile-m-z/ssh.profile2
-rw-r--r--etc/profile-m-z/steam.profile3
-rw-r--r--etc/profile-m-z/trojita.profile3
-rw-r--r--etc/profile-m-z/tutanota-desktop.profile31
-rw-r--r--etc/profile-m-z/unar.profile13
-rw-r--r--etc/profile-m-z/yarn.profile29
-rw-r--r--etc/templates/syscalls.txt2
-rw-r--r--src/fbuilder/build_home.c2
-rw-r--r--src/fbuilder/build_profile.c26
-rw-r--r--src/firecfg/firecfg.config4
-rw-r--r--src/firejail/fs_lib.c2
-rw-r--r--src/firejail/join.c10
-rw-r--r--src/firejail/util.c31
-rw-r--r--src/lib/syscall.c1
-rw-r--r--src/man/firejail-profile.txt5
-rw-r--r--src/man/firejail.txt2
43 files changed, 626 insertions, 83 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 47e099cde..bf58e1dff 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -31,9 +31,9 @@ Steps to reproduce the behavior:
31Other context about the problem like related errors to understand the problem. 31Other context about the problem like related errors to understand the problem.
32 32
33**Checklist** 33**Checklist**
34 - [ ] The upstream profile (and redirect profile if exists) have no changes fixing it. 34 - [ ] The profile (and redirect profile if exists) hasn't already been fixed [upstream](https://github.com/netblue30/firejail/tree/master/etc).
35 - [ ] The program has a profile. (If not, request one in `https://github.com/netblue30/firejail/issues/1139`) 35 - [ ] The program has a profile. (If not, request one in `https://github.com/netblue30/firejail/issues/1139`)
36 - [ ] A short search for duplicates was performed. 36 - [ ] I have performed a short search for similar issues (to avoid opening a duplicate).
37 - [ ] If it is a AppImage, `--profile=PROFILENAME` is used to set the right profile. 37 - [ ] If it is a AppImage, `--profile=PROFILENAME` is used to set the right profile.
38 - [ ] Used `LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 PROGRAM` to get english error-messages. 38 - [ ] Used `LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 PROGRAM` to get english error-messages.
39 - [ ] I'm aware of `browser-allow-drm yes`/`browser-disable-u2f no` in `firejail.config` to allow DRM/U2F in browsers. 39 - [ ] I'm aware of `browser-allow-drm yes`/`browser-disable-u2f no` in `firejail.config` to allow DRM/U2F in browsers.
diff --git a/README b/README
index 6c86dcc5a..a271f6170 100644
--- a/README
+++ b/README
@@ -69,7 +69,7 @@ Adrian L. Shaw (https://github.com/adrianlshaw)
69 - add profanity profile 69 - add profanity profile
70 - add barrirer profile 70 - add barrirer profile
71Aidan Gauland (https://github.com/aidalgol) 71Aidan Gauland (https://github.com/aidalgol)
72 - added electron and riot-web profiles 72 - added electron, riot-web and npm profiles
73Akhil Hans Maulloo (https://github.com/kouul) 73Akhil Hans Maulloo (https://github.com/kouul)
74 - xz profile 74 - xz profile
75Alexey Kuznetsov (kuznet@ms2.inr.ac.ru) 75Alexey Kuznetsov (kuznet@ms2.inr.ac.ru)
diff --git a/README.md b/README.md
index 8d3b3c3bb..69e059bba 100644
--- a/README.md
+++ b/README.md
@@ -195,4 +195,4 @@ Stats:
195 195
196### New profiles: 196### New profiles:
197 197
198spectacle, chromium-browser-privacy, gtk-straw-viewer, gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer, straw-viewer, lutris, dolphin-emu, authenticator-rs, servo 198spectacle, chromium-browser-privacy, gtk-straw-viewer, gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer, straw-viewer, lutris, dolphin-emu, authenticator-rs, servo, tutanota-desktop, npm, marker, yarn, lsar, unar, agetpkg, mdr, shotwell, qnapi
diff --git a/RELNOTES b/RELNOTES
index 5f5b451e1..705ef8500 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -3,9 +3,11 @@ firejail (0.9.65) baseline; urgency=low
3 * --disable-usertmpfs compile time option 3 * --disable-usertmpfs compile time option
4 * allow AF_BLUETOOTH via --protocol=bluetooth 4 * allow AF_BLUETOOTH via --protocol=bluetooth
5 * Setup guide for new users: contrib/firejail-welcome.sh 5 * Setup guide for new users: contrib/firejail-welcome.sh
6 * implement netns in profiles
6 * new profiles: spectacle, chromium-browser-privacy, gtk-straw-viewer 7 * new profiles: spectacle, chromium-browser-privacy, gtk-straw-viewer
7 * new profiles: gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer 8 * new profiles: gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer
8 * new profiles: straw-viewer, lutris, dolphin-emu, authenticator-rs, servo 9 * new profiles: straw-viewer, lutris, dolphin-emu, authenticator-rs, servo
10 * new profiles: npm, marker
9 11
10 -- netblue30 <netblue30@yahoo.com> Wed, 21 Oct 2020 09:00:00 -0500 12 -- netblue30 <netblue30@yahoo.com> Wed, 21 Oct 2020 09:00:00 -0500
11 13
diff --git a/etc/inc/allow-common-devel.inc b/etc/inc/allow-common-devel.inc
index 7cd087b14..41643657d 100644
--- a/etc/inc/allow-common-devel.inc
+++ b/etc/inc/allow-common-devel.inc
@@ -11,6 +11,15 @@ noblacklist ${HOME}/.git-credentials
11noblacklist ${HOME}/.gradle 11noblacklist ${HOME}/.gradle
12noblacklist ${HOME}/.java 12noblacklist ${HOME}/.java
13 13
14# Node.js
15noblacklist ${HOME}/.node-gyp
16noblacklist ${HOME}/.npm
17noblacklist ${HOME}/.npmrc
18noblacklist ${HOME}/.yarn
19noblacklist ${HOME}/.yarn-config
20noblacklist ${HOME}/.yarncache
21noblacklist ${HOME}/.yarnrc
22
14# Python 23# Python
15noblacklist ${HOME}/.pylint.d 24noblacklist ${HOME}/.pylint.d
16noblacklist ${HOME}/.python-history 25noblacklist ${HOME}/.python-history
diff --git a/etc/inc/allow-nodejs.inc b/etc/inc/allow-nodejs.inc
new file mode 100644
index 000000000..78a4bed80
--- /dev/null
+++ b/etc/inc/allow-nodejs.inc
@@ -0,0 +1,6 @@
1# This file is overwritten during software install.
2# Persistent customizations should go in a .local file.
3include allow-nodejs.local
4
5noblacklist ${PATH}/node
6noblacklist /usr/include/node
diff --git a/etc/inc/disable-common.inc b/etc/inc/disable-common.inc
index d88506d90..0de539d57 100644
--- a/etc/inc/disable-common.inc
+++ b/etc/inc/disable-common.inc
@@ -310,6 +310,7 @@ read-only ${HOME}/.msmtprc
310read-only ${HOME}/.mutt/muttrc 310read-only ${HOME}/.mutt/muttrc
311read-only ${HOME}/.muttrc 311read-only ${HOME}/.muttrc
312read-only ${HOME}/.nano 312read-only ${HOME}/.nano
313read-only ${HOME}/.npmrc
313read-only ${HOME}/.pythonrc.py 314read-only ${HOME}/.pythonrc.py
314read-only ${HOME}/.reportbugrc 315read-only ${HOME}/.reportbugrc
315read-only ${HOME}/.tmux.conf 316read-only ${HOME}/.tmux.conf
@@ -318,6 +319,7 @@ read-only ${HOME}/.viminfo
318read-only ${HOME}/.vimrc 319read-only ${HOME}/.vimrc
319read-only ${HOME}/.xmonad 320read-only ${HOME}/.xmonad
320read-only ${HOME}/.xscreensaver 321read-only ${HOME}/.xscreensaver
322read-only ${HOME}/.yarnrc
321read-only ${HOME}/_exrc 323read-only ${HOME}/_exrc
322read-only ${HOME}/_gvimrc 324read-only ${HOME}/_gvimrc
323read-only ${HOME}/_vimrc 325read-only ${HOME}/_vimrc
diff --git a/etc/inc/disable-programs.inc b/etc/inc/disable-programs.inc
index 7ab11e620..26bcb987f 100644
--- a/etc/inc/disable-programs.inc
+++ b/etc/inc/disable-programs.inc
@@ -357,6 +357,7 @@ blacklist ${HOME}/.config/psi
357blacklist ${HOME}/.config/psi+ 357blacklist ${HOME}/.config/psi+
358blacklist ${HOME}/.config/qBittorrent 358blacklist ${HOME}/.config/qBittorrent
359blacklist ${HOME}/.config/qBittorrentrc 359blacklist ${HOME}/.config/qBittorrentrc
360blacklist ${HOME}/.config/qnapi.ini
360blacklist ${HOME}/.config/qpdfview 361blacklist ${HOME}/.config/qpdfview
361blacklist ${HOME}/.config/qupzilla 362blacklist ${HOME}/.config/qupzilla
362blacklist ${HOME}/.config/qutebrowser 363blacklist ${HOME}/.config/qutebrowser
@@ -395,6 +396,8 @@ blacklist ${HOME}/.config/tox
395blacklist ${HOME}/.config/transgui 396blacklist ${HOME}/.config/transgui
396blacklist ${HOME}/.config/transmission 397blacklist ${HOME}/.config/transmission
397blacklist ${HOME}/.config/truecraft 398blacklist ${HOME}/.config/truecraft
399blacklist ${HOME}/.config/tuta_integration
400blacklist ${HOME}/.config/tutanota-desktop
398blacklist ${HOME}/.config/tvbrowser 401blacklist ${HOME}/.config/tvbrowser
399blacklist ${HOME}/.config/uGet 402blacklist ${HOME}/.config/uGet
400blacklist ${HOME}/.config/ungoogled-chromium 403blacklist ${HOME}/.config/ungoogled-chromium
@@ -598,6 +601,7 @@ blacklist ${HOME}/.local/share/baloo
598blacklist ${HOME}/.local/share/barrier 601blacklist ${HOME}/.local/share/barrier
599blacklist ${HOME}/.local/share/bibletime 602blacklist ${HOME}/.local/share/bibletime
600blacklist ${HOME}/.local/share/bijiben 603blacklist ${HOME}/.local/share/bijiben
604blacklist ${HOME}/.local/share/bohemiainteractive
601blacklist ${HOME}/.local/share/caja-python 605blacklist ${HOME}/.local/share/caja-python
602blacklist ${HOME}/.local/share/cantata 606blacklist ${HOME}/.local/share/cantata
603blacklist ${HOME}/.local/share/cdprojektred 607blacklist ${HOME}/.local/share/cdprojektred
@@ -707,6 +711,7 @@ blacklist ${HOME}/.local/share/remmina
707blacklist ${HOME}/.local/share/rhythmbox 711blacklist ${HOME}/.local/share/rhythmbox
708blacklist ${HOME}/.local/share/rtv 712blacklist ${HOME}/.local/share/rtv
709blacklist ${HOME}/.local/share/scribus 713blacklist ${HOME}/.local/share/scribus
714blacklist ${HOME}/.local/share/shotwell
710blacklist ${HOME}/.local/share/signal-cli 715blacklist ${HOME}/.local/share/signal-cli
711blacklist ${HOME}/.local/share/sink 716blacklist ${HOME}/.local/share/sink
712blacklist ${HOME}/.local/share/smuxi 717blacklist ${HOME}/.local/share/smuxi
@@ -758,6 +763,9 @@ blacklist ${HOME}/.neverball
758blacklist ${HOME}/.newsbeuter 763blacklist ${HOME}/.newsbeuter
759blacklist ${HOME}/.newsboat 764blacklist ${HOME}/.newsboat
760blacklist ${HOME}/.nicotine 765blacklist ${HOME}/.nicotine
766blacklist ${HOME}/.node-gyp
767blacklist ${HOME}/.npm
768blacklist ${HOME}/.npmrc
761blacklist ${HOME}/.nv 769blacklist ${HOME}/.nv
762blacklist ${HOME}/.nylas-mail 770blacklist ${HOME}/.nylas-mail
763blacklist ${HOME}/.openarena 771blacklist ${HOME}/.openarena
@@ -844,6 +852,10 @@ blacklist ${HOME}/.xmr-stak
844blacklist ${HOME}/.xonotic 852blacklist ${HOME}/.xonotic
845blacklist ${HOME}/.xournalpp 853blacklist ${HOME}/.xournalpp
846blacklist ${HOME}/.xpdfrc 854blacklist ${HOME}/.xpdfrc
855blacklist ${HOME}/.yarn
856blacklist ${HOME}/.yarn-config
857blacklist ${HOME}/.yarncache
858blacklist ${HOME}/.yarnrc
847blacklist ${HOME}/.zoom 859blacklist ${HOME}/.zoom
848blacklist /tmp/akonadi-* 860blacklist /tmp/akonadi-*
849blacklist /tmp/ssh-* 861blacklist /tmp/ssh-*
@@ -948,6 +960,7 @@ blacklist ${HOME}/.cache/librewolf
948blacklist ${HOME}/.cache/liferea 960blacklist ${HOME}/.cache/liferea
949blacklist ${HOME}/.cache/lutris 961blacklist ${HOME}/.cache/lutris
950blacklist ${HOME}/.cache/Mendeley Ltd. 962blacklist ${HOME}/.cache/Mendeley Ltd.
963blacklist ${HOME}/.cache/marker
951blacklist ${HOME}/.cache/matrix-mirage 964blacklist ${HOME}/.cache/matrix-mirage
952blacklist ${HOME}/.cache/microsoft-edge-dev 965blacklist ${HOME}/.cache/microsoft-edge-dev
953blacklist ${HOME}/.cache/midori 966blacklist ${HOME}/.cache/midori
@@ -983,6 +996,7 @@ blacklist ${HOME}/.cache/qBittorrent
983blacklist ${HOME}/.cache/qupzilla 996blacklist ${HOME}/.cache/qupzilla
984blacklist ${HOME}/.cache/qutebrowser 997blacklist ${HOME}/.cache/qutebrowser
985blacklist ${HOME}/.cache/rhythmbox 998blacklist ${HOME}/.cache/rhythmbox
999blacklist ${HOME}/.cache/shotwell
986blacklist ${HOME}/.cache/simple-scan 1000blacklist ${HOME}/.cache/simple-scan
987blacklist ${HOME}/.cache/slimjet 1001blacklist ${HOME}/.cache/slimjet
988blacklist ${HOME}/.cache/smuxi 1002blacklist ${HOME}/.cache/smuxi
diff --git a/etc/profile-a-l/agetpkg.profile b/etc/profile-a-l/agetpkg.profile
new file mode 100644
index 000000000..6d5dab41a
--- /dev/null
+++ b/etc/profile-a-l/agetpkg.profile
@@ -0,0 +1,60 @@
1# Firejail profile for agetpkg
2# Description: CLI tool to list/get/install packages from the Arch Linux Archive
3# This file is overwritten after every install/update
4quiet
5# Persistent local customizations
6include agetpkg.local
7# Persistent global definitions
8include globals.local
9
10blacklist /tmp/.X11-unix
11blacklist ${RUNUSER}/wayland-*
12
13# Allow python (blacklisted by disable-interpreters.inc)
14#include allow-python2.inc
15include allow-python3.inc
16
17include disable-common.inc
18include disable-devel.inc
19include disable-exec.inc
20include disable-interpreters.inc
21include disable-passwdmgr.inc
22include disable-programs.inc
23include disable-shell.inc
24include disable-xdg.inc
25
26whitelist ${DOWNLOADS}
27include whitelist-common.inc
28include whitelist-usr-share-common.inc
29include whitelist-var-common.inc
30
31caps.drop all
32hostname agetpkg
33ipc-namespace
34machine-id
35noautopulse
36netfilter
37no3d
38nodvd
39nogroups
40nonewprivs
41noroot
42nosound
43notv
44nou2f
45novideo
46protocol inet,inet6
47seccomp
48shell none
49tracelog
50
51private-bin agetpkg,python3
52private-cache
53private-dev
54private-etc ca-certificates,crypto-policies,pki,resolv.conf,ssl
55private-tmp
56
57dbus-user none
58dbus-system none
59
60memory-deny-write-execute
diff --git a/etc/profile-a-l/apostrophe.profile b/etc/profile-a-l/apostrophe.profile
index 9c0b92598..4986ac63a 100644
--- a/etc/profile-a-l/apostrophe.profile
+++ b/etc/profile-a-l/apostrophe.profile
@@ -9,6 +9,9 @@ include globals.local
9noblacklist ${DOCUMENTS} 9noblacklist ${DOCUMENTS}
10noblacklist ${PICTURES} 10noblacklist ${PICTURES}
11 11
12# Allow lua (blacklisted by disable-interpreters.inc)
13include allow-lua.inc
14
12# Allow python (blacklisted by disable-interpreters.inc) 15# Allow python (blacklisted by disable-interpreters.inc)
13include allow-python3.inc 16include allow-python3.inc
14 17
diff --git a/etc/profile-a-l/atom.profile b/etc/profile-a-l/atom.profile
index f21a5febf..5f237ac59 100644
--- a/etc/profile-a-l/atom.profile
+++ b/etc/profile-a-l/atom.profile
@@ -25,7 +25,6 @@ noblacklist ${HOME}/.config/Atom
25include allow-common-devel.inc 25include allow-common-devel.inc
26 26
27# net none 27# net none
28netfilter
29nosound 28nosound
30 29
31# Redirect 30# Redirect
diff --git a/etc/profile-a-l/balsa.profile b/etc/profile-a-l/balsa.profile
index cda6b1aa0..d755fd803 100644
--- a/etc/profile-a-l/balsa.profile
+++ b/etc/profile-a-l/balsa.profile
@@ -9,6 +9,7 @@ include globals.local
9noblacklist ${HOME}/.balsa 9noblacklist ${HOME}/.balsa
10noblacklist ${HOME}/.gnupg 10noblacklist ${HOME}/.gnupg
11noblacklist ${HOME}/.mozilla 11noblacklist ${HOME}/.mozilla
12noblacklist ${HOME}/.signature
12noblacklist ${HOME}/mail 13noblacklist ${HOME}/mail
13noblacklist /var/mail 14noblacklist /var/mail
14noblacklist /var/spool/mail 15noblacklist /var/spool/mail
@@ -24,10 +25,12 @@ include disable-xdg.inc
24 25
25mkdir ${HOME}/.balsa 26mkdir ${HOME}/.balsa
26mkdir ${HOME}/.gnupg 27mkdir ${HOME}/.gnupg
28mkfile ${HOME}/.signature
27mkdir ${HOME}/mail 29mkdir ${HOME}/mail
28whitelist ${HOME}/.balsa 30whitelist ${HOME}/.balsa
29whitelist ${HOME}/.gnupg 31whitelist ${HOME}/.gnupg
30whitelist ${HOME}/.mozilla/firefox/profiles.ini 32whitelist ${HOME}/.mozilla/firefox/profiles.ini
33whitelist ${HOME}/.signature
31whitelist ${HOME}/mail 34whitelist ${HOME}/mail
32whitelist ${RUNUSER}/gnupg 35whitelist ${RUNUSER}/gnupg
33whitelist /usr/share/balsa 36whitelist /usr/share/balsa
@@ -58,9 +61,9 @@ shell none
58tracelog 61tracelog
59 62
60# disable-mnt 63# disable-mnt
61# Add "gpg,gpg2,gpg-agent,pinentry-curses,pinentry-emacs,pinentry-fltk,pinentry-gnome3,pinentry-gtk,pinentry-gtk2,pinentry-gtk-2,pinentry-qt,pinentry-qt4,pinentry-tty,pinentry-x2go,pinentry-kwallet" for gpg 64# Add "pinentry-curses,pinentry-emacs,pinentry-fltk,pinentry-gnome3,pinentry-gtk,pinentry-gtk2,pinentry-gtk-2,pinentry-qt,pinentry-qt4,pinentry-tty,pinentry-x2go,pinentry-kwallet" for gpg
62# Add "ignore private-bin" for hyperlinks or have a look at the private-bins in firefox.profile and firefox-common.profile. 65# Add "ignore private-bin" for hyperlinks or have a look at the private-bins in firefox.profile and firefox-common.profile.
63private-bin balsa,balsa-ab 66private-bin balsa,balsa-ab,gpg,gpg-agent,gpg2,gpgsm
64private-cache 67private-cache
65private-dev 68private-dev
66private-etc alternatives,ca-certificates,crypto-policies,dconf,fonts,gcrypt,groups,gtk-2.0,gtk-3.0,hostname,hosts,mailname,passwd,pki,resolv.conf,selinux,ssl,xdg 69private-etc alternatives,ca-certificates,crypto-policies,dconf,fonts,gcrypt,groups,gtk-2.0,gtk-3.0,hostname,hosts,mailname,passwd,pki,resolv.conf,selinux,ssl,xdg
@@ -71,8 +74,9 @@ writable-var
71dbus-user filter 74dbus-user filter
72dbus-user.own org.desktop.Balsa 75dbus-user.own org.desktop.Balsa
73dbus-user.talk ca.desrt.dconf 76dbus-user.talk ca.desrt.dconf
74dbus-user.talk org.freedesktop.secrets
75dbus-user.talk org.freedesktop.Notifications 77dbus-user.talk org.freedesktop.Notifications
78dbus-user.talk org.freedesktop.secrets
79dbus-user.talk org.gnome.keyring.SystemPrompter
76dbus-system none 80dbus-system none
77 81
78read-only ${HOME}/.mozilla/firefox/profiles.ini 82read-only ${HOME}/.mozilla/firefox/profiles.ini \ No newline at end of file
diff --git a/etc/profile-a-l/discord-common.profile b/etc/profile-a-l/discord-common.profile
index e6edbd7eb..b583f1a1d 100644
--- a/etc/profile-a-l/discord-common.profile
+++ b/etc/profile-a-l/discord-common.profile
@@ -23,7 +23,7 @@ whitelist ${HOME}/.config/BetterDiscord
23whitelist ${HOME}/.local/share/betterdiscordctl 23whitelist ${HOME}/.local/share/betterdiscordctl
24 24
25private-bin bash,cut,echo,egrep,fish,grep,head,sed,sh,tclsh,tr,xdg-mime,xdg-open,zsh 25private-bin bash,cut,echo,egrep,fish,grep,head,sed,sh,tclsh,tr,xdg-mime,xdg-open,zsh
26private-etc alternatives,ca-certificates,crypto-policies,fonts,group,ld.so.cache,localtime,login.defs,machine-id,password,pki,resolv.conf,ssl 26private-etc alternatives,ca-certificates,crypto-policies,fonts,group,ld.so.cache,localtime,login.defs,machine-id,password,pki,pulse,resolv.conf,ssl
27 27
28# Redirect 28# Redirect
29include electron.profile 29include electron.profile
diff --git a/etc/profile-a-l/evince.profile b/etc/profile-a-l/evince.profile
index c0c16e929..25d5196fc 100644
--- a/etc/profile-a-l/evince.profile
+++ b/etc/profile-a-l/evince.profile
@@ -6,6 +6,10 @@ include evince.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# Uncomment this line and the bottom ones to use bookmarks
10# NOTE: This possibly exposes information, including file history from other programs.
11#noblacklist ${HOME}/.local/share/gvfs-metadata
12
9noblacklist ${HOME}/.config/evince 13noblacklist ${HOME}/.config/evince
10noblacklist ${DOCUMENTS} 14noblacklist ${DOCUMENTS}
11 15
@@ -54,5 +58,8 @@ private-lib evince,gcc/*/*/libgcc_s.so.*,gcc/*/*/libstdc++.so.*,gconv,gdk-pixbuf
54private-tmp 58private-tmp
55 59
56# might break two-page-view on some systems 60# might break two-page-view on some systems
57dbus-user none 61dbus-user filter
62# Also uncomment these two lines if you want to use bookmarks
63#dbus-user.talk org.gtk.vfs.Daemon
64#dbus-user.talk org.gtk.vfs.Metadata
58dbus-system none 65dbus-system none
diff --git a/etc/profile-a-l/fractal.profile b/etc/profile-a-l/fractal.profile
index c3af29e15..dc8d6e3ad 100644
--- a/etc/profile-a-l/fractal.profile
+++ b/etc/profile-a-l/fractal.profile
@@ -8,6 +8,9 @@ include globals.local
8 8
9noblacklist ${HOME}/.cache/fractal 9noblacklist ${HOME}/.cache/fractal
10 10
11include allow-python2.inc
12include allow-python3.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
@@ -49,6 +52,6 @@ private-tmp
49dbus-user filter 52dbus-user filter
50dbus-user.own org.gnome.Fractal 53dbus-user.own org.gnome.Fractal
51dbus-user.talk ca.desrt.dconf 54dbus-user.talk ca.desrt.dconf
52dbus-user.talk org.freedesktop.secrets
53dbus-user.talk org.freedesktop.Notifications 55dbus-user.talk org.freedesktop.Notifications
56dbus-user.talk org.freedesktop.secrets
54dbus-system none 57dbus-system none
diff --git a/etc/profile-a-l/gajim.profile b/etc/profile-a-l/gajim.profile
index 85d9b9bd9..125ddf79c 100644
--- a/etc/profile-a-l/gajim.profile
+++ b/etc/profile-a-l/gajim.profile
@@ -6,6 +6,7 @@ include gajim.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9noblacklist ${HOME}/.gnupg
9noblacklist ${HOME}/.cache/gajim 10noblacklist ${HOME}/.cache/gajim
10noblacklist ${HOME}/.config/gajim 11noblacklist ${HOME}/.config/gajim
11noblacklist ${HOME}/.local/share/gajim 12noblacklist ${HOME}/.local/share/gajim
@@ -20,19 +21,27 @@ include disable-exec.inc
20include disable-interpreters.inc 21include disable-interpreters.inc
21include disable-passwdmgr.inc 22include disable-passwdmgr.inc
22include disable-programs.inc 23include disable-programs.inc
23# Comment the following line if you need to whitelist other folders than ~/Downloads 24# Comment the following line if you need to whitelist folders other than ~/Downloads
24include disable-xdg.inc 25include disable-xdg.inc
25 26
27mkdir ${HOME}/.gnupg
26mkdir ${HOME}/.cache/gajim 28mkdir ${HOME}/.cache/gajim
27mkdir ${HOME}/.config/gajim 29mkdir ${HOME}/.config/gajim
28mkdir ${HOME}/.local/share/gajim 30mkdir ${HOME}/.local/share/gajim
31whitelist ${HOME}/.gnupg
29whitelist ${HOME}/.cache/gajim 32whitelist ${HOME}/.cache/gajim
30whitelist ${HOME}/.config/gajim 33whitelist ${HOME}/.config/gajim
31whitelist ${HOME}/.local/share/gajim 34whitelist ${HOME}/.local/share/gajim
32whitelist ${DOWNLOADS} 35whitelist ${DOWNLOADS}
36whitelist ${RUNUSER}/gnupg
37whitelist /usr/share/gnupg
38whitelist /usr/share/gnupg2
33include whitelist-common.inc 39include whitelist-common.inc
40include whitelist-runuser-common.inc
41include whitelist-usr-share-common.inc
34include whitelist-var-common.inc 42include whitelist-var-common.inc
35 43
44apparmor
36caps.drop all 45caps.drop all
37netfilter 46netfilter
38nodvd 47nodvd
@@ -47,9 +56,24 @@ shell none
47tracelog 56tracelog
48 57
49disable-mnt 58disable-mnt
50private-bin bash,gajim,gajim-history-manager,gpg,gpg2,paplay,python,python3,sh,zsh 59private-bin bash,gajim,gajim-history-manager,gpg,gpg2,paplay,python*,sh,zsh
60private-cache
51private-dev 61private-dev
52private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,group,hostname,hosts,ld.so.cache,ld.so.conf,localtime,machine-id,passwd,pki,pulse,resolv.conf,ssl 62private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,group,hostname,hosts,ld.so.cache,ld.so.conf,localtime,machine-id,passwd,pki,pulse,resolv.conf,ssl,xdg
53private-tmp 63private-tmp
64writable-run-user
65
66dbus-user filter
67dbus-user.own org.gajim.Gajim
68dbus-user.talk org.gnome.Mutter.IdleMonitor
69dbus-user.talk ca.desrt.dconf
70dbus-user.talk org.freedesktop.Notifications
71dbus-user.talk org.freedesktop.secrets
72dbus-user.talk org.kde.kwalletd5
73dbus-user.talk org.mpris.MediaPlayer2.*
74dbus-system filter
75dbus-system.talk org.freedesktop.login1
76# Uncomment for location plugin support
77#dbus-system.talk org.freedesktop.GeoClue2
54 78
55join-or-start gajim 79join-or-start gajim
diff --git a/etc/profile-a-l/liferea.profile b/etc/profile-a-l/liferea.profile
index 7cfd4fc10..a122e9bbc 100644
--- a/etc/profile-a-l/liferea.profile
+++ b/etc/profile-a-l/liferea.profile
@@ -42,7 +42,7 @@ noroot
42# nosound 42# nosound
43notv 43notv
44nou2f 44nou2f
45# novideo 45novideo
46protocol unix,inet,inet6 46protocol unix,inet,inet6
47seccomp 47seccomp
48shell none 48shell none
@@ -51,3 +51,12 @@ tracelog
51disable-mnt 51disable-mnt
52private-dev 52private-dev
53private-tmp 53private-tmp
54
55dbus-user filter
56dbus-user.own net.sourceforge.liferea
57dbus-user.talk ca.desrt.dconf
58# Uncomment the below if you use the 'Popup Notifications' plugin or add 'dbus-user.talk org.freedesktop.Notifications' to your liferea.local
59#dbus-user.talk org.freedesktop.Notifications
60# Uncomment the below if you use the 'Libsecret Support' plugin or add 'dbus-user.talk org.freedesktop.secrets' to your liferea.local
61#dbus-user.talk org.freedesktop.secrets
62dbus-system none
diff --git a/etc/profile-a-l/lsar.profile b/etc/profile-a-l/lsar.profile
new file mode 100644
index 000000000..faf5bb7f9
--- /dev/null
+++ b/etc/profile-a-l/lsar.profile
@@ -0,0 +1,13 @@
1# Firejail profile for lsar
2# This file is overwritten after every install/update
3quiet
4# Persistent local customizations
5include lsar.local
6# Persistent global definitions
7# added by included profile
8#include globals.local
9
10private-bin lsar
11
12# Redirect
13include ar.profile
diff --git a/etc/profile-m-z/marker.profile b/etc/profile-m-z/marker.profile
new file mode 100644
index 000000000..55865fe72
--- /dev/null
+++ b/etc/profile-m-z/marker.profile
@@ -0,0 +1,59 @@
1# Firejail profile for marker
2# Description: Marker is a markdown editor for Linux made with Gtk+-3.0
3# This file is overwritten after every install/update
4# Persistent local customizations
5include marker.local
6# Persistent global definitions
7include globals.local
8
9# Uncomment (or add to your marker.local) if you need internet access.
10#ignore net none
11#protocol unix,inet,inet6
12#private-etc ca-certificates,ssl,pki,crypto-policies,nsswitch.conf,resolv.conf
13
14noblacklist ${HOME}/.cache/marker
15
16include disable-common.inc
17include disable-devel.inc
18include disable-exec.inc
19include disable-interpreters.inc
20include disable-passwdmgr.inc
21include disable-programs.inc
22include disable-shell.inc
23include disable-xdg.inc
24
25whitelist /usr/share/com.github.fabiocolacio.marker
26include whitelist-runuser-common.inc
27include whitelist-usr-share-common.inc
28include whitelist-var-common.inc
29
30apparmor
31caps.drop all
32machine-id
33net none
34netfilter
35no3d
36nodvd
37nogroups
38nonewprivs
39noroot
40nosound
41notv
42nou2f
43novideo
44protocol unix
45seccomp
46seccomp.block-secondary
47shell none
48tracelog
49
50private-bin marker
51private-cache
52private-dev
53private-etc alternatives,dconfgtk-3.0,fonts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,localtime,pango,X11
54private-tmp
55
56dbus-user filter
57dbus-user.own com.github.fabiocolacio.marker
58dbus-user.talk ca.desrt.dconf
59dbus-system none
diff --git a/etc/profile-m-z/mattermost-desktop.profile b/etc/profile-m-z/mattermost-desktop.profile
index e4487c8aa..3c2bf4fa3 100644
--- a/etc/profile-m-z/mattermost-desktop.profile
+++ b/etc/profile-m-z/mattermost-desktop.profile
@@ -5,42 +5,25 @@ include mattermost-desktop.local
5# Persistent global definitions 5# Persistent global definitions
6include globals.local 6include globals.local
7 7
8# Disabled until someone reported positive feedback
9ignore apparmor
10ignore dbus-user none
11ignore dbus-system none
12
8noblacklist ${HOME}/.config/Mattermost 13noblacklist ${HOME}/.config/Mattermost
9 14
10include disable-common.inc
11include disable-devel.inc
12include disable-exec.inc
13include disable-interpreters.inc
14include disable-programs.inc
15include disable-passwdmgr.inc
16include disable-shell.inc 15include disable-shell.inc
17include disable-xdg.inc
18 16
19mkdir ${HOME}/.config/Mattermost 17mkdir ${HOME}/.config/Mattermost
20whitelist ${DOWNLOADS}
21whitelist ${HOME}/.config/Mattermost 18whitelist ${HOME}/.config/Mattermost
22include whitelist-common.inc
23include whitelist-runuser-common.inc
24include whitelist-usr-share-common.inc
25include whitelist-var-common.inc
26
27caps.keep sys_admin,sys_chroot
28netfilter
29nodvd
30nogroups
31notv
32nou2f
33novideo
34shell none
35 19
36disable-mnt
37private-cache
38private-dev
39private-etc alternatives,ca-certificates,crypto-policies,fonts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,machine-id,nsswitch.conf,pki,resolv.conf,ssl 20private-etc alternatives,ca-certificates,crypto-policies,fonts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,machine-id,nsswitch.conf,pki,resolv.conf,ssl
40private-tmp
41 21
42# Not tested 22# Not tested
43#dbus-user filter 23#dbus-user filter
44#dbus-user.own com.mattermost.Desktop 24#dbus-user.own com.mattermost.Desktop
45#dbus-user.talk org.freedesktop.Notifications 25#dbus-user.talk org.freedesktop.Notifications
46#dbus-system none 26#dbus-system none
27
28# Redirect
29include electron.profile
diff --git a/etc/profile-m-z/mdr.profile b/etc/profile-m-z/mdr.profile
new file mode 100644
index 000000000..fb97daa27
--- /dev/null
+++ b/etc/profile-m-z/mdr.profile
@@ -0,0 +1,55 @@
1# Firejail profile for mdr
2# Description: A standalone Markdown renderer for the terminal
3# Persistent local customizations
4include mdr.local
5# Persistent global definitions
6include globals.local
7
8blacklist ${RUNUSER}/wayland-*
9
10include disable-common.inc
11include disable-devel.inc
12include disable-exec.inc
13include disable-interpreters.inc
14include disable-passwdmgr.inc
15include disable-programs.inc
16include disable-shell.inc
17include disable-xdg.inc
18
19whitelist ${DOWNLOADS}
20include whitelist-usr-share-common.inc
21include whitelist-var-common.inc
22
23apparmor
24caps.drop all
25hostname mdr
26ipc-namespace
27machine-id
28net none
29no3d
30nodvd
31nogroups
32nonewprivs
33noroot
34nosound
35notv
36nou2f
37novideo
38protocol unix
39seccomp
40shell none
41tracelog
42x11 none
43
44disable-mnt
45private-bin mdr
46private-cache
47private-dev
48private-etc none
49private-lib
50private-tmp
51
52dbus-user none
53dbus-system none
54
55memory-deny-write-execute
diff --git a/etc/profile-m-z/nodejs-common.profile b/etc/profile-m-z/nodejs-common.profile
new file mode 100644
index 000000000..acef622c2
--- /dev/null
+++ b/etc/profile-m-z/nodejs-common.profile
@@ -0,0 +1,54 @@
1# Firejail profile for Node.js
2# Description: Common profile for npm/yarn
3# This file is overwritten after every install/update
4# Persistent local customizations
5include nodejs-common.local
6# Persistent global definitions
7# added by caller profile
8#include globals.local
9
10blacklist /tmp/.X11-unix
11blacklist ${RUNUSER}
12
13ignore noexec ${HOME}
14
15noblacklist ${PATH}/bash
16noblacklist ${PATH}/dash
17noblacklist ${PATH}/sh
18
19include disable-common.inc
20include disable-exec.inc
21include disable-passwdmgr.inc
22include disable-programs.inc
23include disable-shell.inc
24include disable-xdg.inc
25
26include whitelist-runuser-common.inc
27include whitelist-usr-share-common.inc
28include whitelist-var-common.inc
29
30caps.drop all
31ipc-namespace
32machine-id
33netfilter
34no3d
35nodvd
36nogroups
37nonewprivs
38noroot
39nosound
40notv
41nou2f
42novideo
43protocol unix,inet,inet6,netlink
44seccomp
45seccomp.block-secondary
46shell none
47
48disable-mnt
49private-dev
50private-etc alternatives,ca-certificates,crypto-policies,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,localtime,login.defs,mime.types,nsswitch.conf,pki,protocols,resolv.conf,rpc,services,ssl,xdg
51private-tmp
52
53dbus-user none
54dbus-system none
diff --git a/etc/profile-m-z/npm.profile b/etc/profile-m-z/npm.profile
new file mode 100644
index 000000000..e95e875be
--- /dev/null
+++ b/etc/profile-m-z/npm.profile
@@ -0,0 +1,29 @@
1# Firejail profile for npm
2# Description: The Node.js Package Manager
3quiet
4# This file is overwritten after every install/update
5# Persistent local customizations
6include npm.local
7# Persistent global definitions
8include globals.local
9
10ignore read-only ${HOME}/.npm-packages
11ignore read-only ${HOME}/.npmrc
12
13noblacklist ${HOME}/.node-gyp
14noblacklist ${HOME}/.npm
15noblacklist ${HOME}/.npmrc
16
17# If you want whitelisting, change ${HOME}/Projects below to your npm projects directory
18# and uncomment the lines below.
19#mkdir ${HOME}/.node-gyp
20#mkdir ${HOME}/.npm
21#mkfile ${HOME}/.npmrc
22#whitelist ${HOME}/.node-gyp
23#whitelist ${HOME}/.npm
24#whitelist ${HOME}/.npmrc
25#whitelist ${HOME}/Projects
26#include whitelist-common.inc
27
28# Redirect
29include nodejs-common.profile
diff --git a/etc/profile-m-z/openshot.profile b/etc/profile-m-z/openshot.profile
index e1839c724..ac960345a 100644
--- a/etc/profile-m-z/openshot.profile
+++ b/etc/profile-m-z/openshot.profile
@@ -19,6 +19,10 @@ include disable-interpreters.inc
19include disable-passwdmgr.inc 19include disable-passwdmgr.inc
20include disable-programs.inc 20include disable-programs.inc
21 21
22whitelist /usr/share/blender
23whitelist /usr/share/inkscape
24include whitelist-runuser-common.inc
25include whitelist-usr-share-common.inc
22include whitelist-var-common.inc 26include whitelist-var-common.inc
23 27
24apparmor 28apparmor
@@ -32,11 +36,14 @@ notv
32nou2f 36nou2f
33protocol unix,inet,inet6,netlink 37protocol unix,inet,inet6,netlink
34seccomp 38seccomp
39seccomp.block-secondary
35shell none 40shell none
36tracelog 41tracelog
37 42
43private-bin blender,inkscape,openshot,openshot-qt,python3*
44private-cache
38private-dev 45private-dev
39private-tmp 46private-tmp
40 47
41dbus-user none 48dbus-user filter
42dbus-system none 49dbus-system none
diff --git a/etc/profile-m-z/qnapi.profile b/etc/profile-m-z/qnapi.profile
new file mode 100644
index 000000000..0d1f9c3de
--- /dev/null
+++ b/etc/profile-m-z/qnapi.profile
@@ -0,0 +1,55 @@
1# Firejail profile for qnapi
2# Description: Qt client for downloading movie subtitles from NapiProjekt, OpenSubtitles and Napisy24
3# This file is overwritten after every install/update
4# Persistent local customizations
5include qnapi.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.config/qnapi.ini
10
11ignore noexec /tmp
12
13include disable-common.inc
14include disable-devel.inc
15include disable-exec.inc
16include disable-interpreters.inc
17include disable-passwdmgr.inc
18include disable-programs.inc
19include disable-shell.inc
20include disable-xdg.inc
21
22mkfile ${HOME}/.config/qnapi.ini
23whitelist ${HOME}/.config/qnapi.ini
24whitelist ${DOWNLOADS}
25include whitelist-common.inc
26include whitelist-usr-share-common.inc
27include whitelist-runuser-common.inc
28include whitelist-var-common.inc
29
30apparmor
31caps.drop all
32ipc-namespace
33netfilter
34nodvd
35nogroups
36nonewprivs
37noroot
38nosound
39notv
40nou2f
41novideo
42protocol unix,inet,inet6,netlink
43seccomp
44shell none
45tracelog
46
47private-bin 7z,qnapi
48private-cache
49private-dev
50private-etc alternatives,fonts
51private-opt none
52private-tmp
53
54dbus-user none
55dbus-system none
diff --git a/etc/profile-m-z/shotwell.profile b/etc/profile-m-z/shotwell.profile
new file mode 100644
index 000000000..749029530
--- /dev/null
+++ b/etc/profile-m-z/shotwell.profile
@@ -0,0 +1,60 @@
1# Firejail profile for shotwell
2# Description: A digital photo organizer designed for the GNOME desktop environment
3# This file is overwritten after every install/update
4# Persistent local customizations
5include shotwell.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.cache/shotwell
10noblacklist ${HOME}/.local/share/shotwell
11
12noblacklist ${PICTURES}
13include disable-common.inc
14include disable-devel.inc
15include disable-exec.inc
16include disable-interpreters.inc
17include disable-passwdmgr.inc
18include disable-programs.inc
19include disable-shell.inc
20include disable-xdg.inc
21
22mkdir ${HOME}/.cache/shotwell
23mkdir ${HOME}/.local/share/shotwell
24whitelist ${HOME}/.cache/shotwell
25whitelist ${HOME}/.local/share/shotwell
26whitelist ${PICTURES}
27include whitelist-common.inc
28include whitelist-runuser-common.inc
29include whitelist-usr-share-common.inc
30include whitelist-var-common.inc
31
32apparmor
33caps.drop all
34machine-id
35netfilter
36nodvd
37nogroups
38nonewprivs
39noroot
40nosound
41notv
42nou2f
43novideo
44protocol unix
45seccomp
46shell none
47tracelog
48
49private-bin shotwell
50private-cache
51private-dev
52private-etc alternatives,fonts,machine-id
53private-opt none
54private-tmp
55
56dbus-user filter
57dbus-user.own org.gnome.Shotwell
58dbus-user.talk ca.desrt.dconf
59dbus-user.talk org.gtk.vfs.UDisks2VolumeMonitor
60dbus-system none
diff --git a/etc/profile-m-z/signal-desktop.profile b/etc/profile-m-z/signal-desktop.profile
index 08e1c1f03..666a37def 100644
--- a/etc/profile-m-z/signal-desktop.profile
+++ b/etc/profile-m-z/signal-desktop.profile
@@ -21,8 +21,6 @@ noblacklist ${HOME}/.mozilla
21whitelist ${HOME}/.mozilla/firefox/profiles.ini 21whitelist ${HOME}/.mozilla/firefox/profiles.ini
22read-only ${HOME}/.mozilla/firefox/profiles.ini 22read-only ${HOME}/.mozilla/firefox/profiles.ini
23 23
24include disable-exec.inc
25
26mkdir ${HOME}/.config/Signal 24mkdir ${HOME}/.config/Signal
27whitelist ${HOME}/.config/Signal 25whitelist ${HOME}/.config/Signal
28 26
diff --git a/etc/profile-m-z/ssh.profile b/etc/profile-m-z/ssh.profile
index d873a5672..e3e2b4541 100644
--- a/etc/profile-m-z/ssh.profile
+++ b/etc/profile-m-z/ssh.profile
@@ -19,8 +19,8 @@ include disable-exec.inc
19include disable-passwdmgr.inc 19include disable-passwdmgr.inc
20include disable-programs.inc 20include disable-programs.inc
21 21
22whitelist ${RUNUSER}/keyring/ssh
23whitelist ${RUNUSER}/gnupg/S.gpg-agent.ssh 22whitelist ${RUNUSER}/gnupg/S.gpg-agent.ssh
23whitelist ${RUNUSER}/keyring/ssh
24include whitelist-usr-share-common.inc 24include whitelist-usr-share-common.inc
25include whitelist-runuser-common.inc 25include whitelist-runuser-common.inc
26 26
diff --git a/etc/profile-m-z/steam.profile b/etc/profile-m-z/steam.profile
index 55078d993..758b37815 100644
--- a/etc/profile-m-z/steam.profile
+++ b/etc/profile-m-z/steam.profile
@@ -9,6 +9,7 @@ include globals.local
9noblacklist ${HOME}/.killingfloor 9noblacklist ${HOME}/.killingfloor
10noblacklist ${HOME}/.local/share/3909/PapersPlease 10noblacklist ${HOME}/.local/share/3909/PapersPlease
11noblacklist ${HOME}/.local/share/aspyr-media 11noblacklist ${HOME}/.local/share/aspyr-media
12noblacklist ${HOME}/.local/share/bohemiainteractive
12noblacklist ${HOME}/.local/share/cdprojektred 13noblacklist ${HOME}/.local/share/cdprojektred
13noblacklist ${HOME}/.local/share/FasterThanLight 14noblacklist ${HOME}/.local/share/FasterThanLight
14noblacklist ${HOME}/.local/share/feral-interactive 15noblacklist ${HOME}/.local/share/feral-interactive
@@ -45,6 +46,7 @@ mkdir ${HOME}/.config/unity3d
45mkdir ${HOME}/.killingfloor 46mkdir ${HOME}/.killingfloor
46mkdir ${HOME}/.local/share/3909/PapersPlease 47mkdir ${HOME}/.local/share/3909/PapersPlease
47mkdir ${HOME}/.local/share/aspyr-media 48mkdir ${HOME}/.local/share/aspyr-media
49mkdir ${HOME}/.local/share/bohemiainteractive
48mkdir ${HOME}/.local/share/cdprojektred 50mkdir ${HOME}/.local/share/cdprojektred
49mkdir ${HOME}/.local/share/FasterThanLight 51mkdir ${HOME}/.local/share/FasterThanLight
50mkdir ${HOME}/.local/share/feral-interactive 52mkdir ${HOME}/.local/share/feral-interactive
@@ -64,6 +66,7 @@ whitelist ${HOME}/.config/unity3d
64whitelist ${HOME}/.killingfloor 66whitelist ${HOME}/.killingfloor
65whitelist ${HOME}/.local/share/3909/PapersPlease 67whitelist ${HOME}/.local/share/3909/PapersPlease
66whitelist ${HOME}/.local/share/aspyr-media 68whitelist ${HOME}/.local/share/aspyr-media
69whitelist ${HOME}/.local/share/bohemiainteractive
67whitelist ${HOME}/.local/share/cdprojektred 70whitelist ${HOME}/.local/share/cdprojektred
68whitelist ${HOME}/.local/share/FasterThanLight 71whitelist ${HOME}/.local/share/FasterThanLight
69whitelist ${HOME}/.local/share/feral-interactive 72whitelist ${HOME}/.local/share/feral-interactive
diff --git a/etc/profile-m-z/trojita.profile b/etc/profile-m-z/trojita.profile
index a8641af85..b82aadd13 100644
--- a/etc/profile-m-z/trojita.profile
+++ b/etc/profile-m-z/trojita.profile
@@ -57,7 +57,8 @@ private-dev
57private-etc alternatives,ca-certificates,crypto-policies,fonts,hostname,hosts,pki,resolv.conf,selinux,ssl,xdg 57private-etc alternatives,ca-certificates,crypto-policies,fonts,hostname,hosts,pki,resolv.conf,selinux,ssl,xdg
58private-tmp 58private-tmp
59 59
60dbus-user none 60dbus-user filter
61dbus-user.talk org.freedesktop.secrets
61dbus-system none 62dbus-system none
62 63
63read-only ${HOME}/.mozilla/firefox/profiles.ini 64read-only ${HOME}/.mozilla/firefox/profiles.ini
diff --git a/etc/profile-m-z/tutanota-desktop.profile b/etc/profile-m-z/tutanota-desktop.profile
new file mode 100644
index 000000000..d2cb0cc8a
--- /dev/null
+++ b/etc/profile-m-z/tutanota-desktop.profile
@@ -0,0 +1,31 @@
1# Firejail profile for tutanota-desktop
2# Description: Encrypted email client
3# This file is overwritten after every install/update
4# Persistent local customizations
5include tutanota-desktop.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.config/tuta_integration
10noblacklist ${HOME}/.config/tutanota-desktop
11
12ignore noexec /tmp
13
14include disable-shell.inc
15
16mkdir ${HOME}/.config/tuta_integration
17mkdir ${HOME}/.config/tutanota-desktop
18whitelist ${HOME}/.config/tuta_integration
19whitelist ${HOME}/.config/tutanota-desktop
20
21# These lines are needed to allow Firefox to open links
22noblacklist ${HOME}/.mozilla
23whitelist ${HOME}/.mozilla/firefox/profiles.ini
24read-only ${HOME}/.mozilla/firefox/profiles.ini
25
26?HAS_APPIMAGE: ignore private-dev
27private-etc alternatives,ca-certificates,crypto-policies,fonts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,machine-id,nsswitch.conf,pki,resolv.conf,ssl
28private-opt tutanota-desktop
29
30# Redirect
31include electron.profile
diff --git a/etc/profile-m-z/unar.profile b/etc/profile-m-z/unar.profile
new file mode 100644
index 000000000..0226a7de8
--- /dev/null
+++ b/etc/profile-m-z/unar.profile
@@ -0,0 +1,13 @@
1# Firejail profile for unar
2# This file is overwritten after every install/update
3quiet
4# Persistent local customizations
5include unar.local
6# Persistent global definitions
7# added by included profile
8#include globals.local
9
10private-bin unar
11
12# Redirect
13include ar.profile
diff --git a/etc/profile-m-z/yarn.profile b/etc/profile-m-z/yarn.profile
new file mode 100644
index 000000000..f20225050
--- /dev/null
+++ b/etc/profile-m-z/yarn.profile
@@ -0,0 +1,29 @@
1# Firejail profile for yarn
2# Description: Fast, reliable, and secure dependency management
3quiet
4# Persistent local customizations
5include yarn.local
6# Persistent global definitions
7include globals.local
8
9ignore read-only ${HOME}/.yarnrc
10
11noblacklist ${HOME}/.yarn
12noblacklist ${HOME}/.yarn-config
13noblacklist ${HOME}/.yarncache
14noblacklist ${HOME}/.yarnrc
15
16# If you want whitelisting, change ${HOME}/Projects below to your yarn projects directory and uncomment the lines below.
17#mkdir ${HOME}/.yarn
18#mkdir ${HOME}/.yarn-config
19#mkdir ${HOME}/.yarncache
20#mkfile ${HOME}/.yarnrc
21#whitelist ${HOME}/.yarn
22#whitelist ${HOME}/.yarn-config
23#whitelist ${HOME}/.yarncache
24#whitelist ${HOME}/.yarnrc
25#whitelist ${HOME}/Projects
26#include whitelist-common.inc
27
28# Redirect
29include nodejs-common.profile
diff --git a/etc/templates/syscalls.txt b/etc/templates/syscalls.txt
index c454887dd..ebc648548 100644
--- a/etc/templates/syscalls.txt
+++ b/etc/templates/syscalls.txt
@@ -35,7 +35,7 @@ Definition of groups
35@debug=lookup_dcookie,perf_event_open,process_vm_writev,rtas,s390_runtime_instr,sys_debug_setcontext 35@debug=lookup_dcookie,perf_event_open,process_vm_writev,rtas,s390_runtime_instr,sys_debug_setcontext
36@default=@clock,@cpu-emulation,@debug,@module,@mount,@obsolete,@raw-io,@reboot,@swap,open_by_handle_at,name_to_handle_at,ioprio_set,ni_syscall,syslog,fanotify_init,kcmp,add_key,request_key,mbind,migrate_pages,move_pages,keyctl,io_setup,io_destroy,io_getevents,io_submit,io_cancel,remap_file_pages,set_mempolicyvmsplice,userfaultfd,acct,bpf,nfsservctl,setdomainname,sethostname,vhangup 36@default=@clock,@cpu-emulation,@debug,@module,@mount,@obsolete,@raw-io,@reboot,@swap,open_by_handle_at,name_to_handle_at,ioprio_set,ni_syscall,syslog,fanotify_init,kcmp,add_key,request_key,mbind,migrate_pages,move_pages,keyctl,io_setup,io_destroy,io_getevents,io_submit,io_cancel,remap_file_pages,set_mempolicyvmsplice,userfaultfd,acct,bpf,nfsservctl,setdomainname,sethostname,vhangup
37@default-nodebuggers=@default,ptrace,personality,process_vm_readv 37@default-nodebuggers=@default,ptrace,personality,process_vm_readv
38@default-keep=execve,prctl 38@default-keep=execveat,execve,prctl
39@file-system=access,chdir,chmod,close,creat,faccessat,fallocate,fchdir,fchmod,fchmodat,fcntl,fcntl64,fgetxattr,flistxattr,fremovexattr,fsetxattr,fstat,fstat64,fstatat64,fstatfs,fstatfs64,ftruncate,ftruncate64,futimesat,getcwd,getdents,getdents64,getxattr,inotify_add_watch,inotify_init,inotify_init1,inotify_rm_watch,lgetxattr,link,linkat,listxattr,llistxattr,lremovexattr,lsetxattr,lstat,lstat64,mkdir,mkdirat,mknod,mknodat,mmap,mmap2,munmap,newfstatat,oldfstat,oldlstat,oldstat,open,openat,readlink,readlinkat,removexattr,rename,renameat,renameat2,rmdir,setxattr,stat,stat64,statfs,statfs64,statx,symlink,symlinkat,truncate,truncate64,unlink,unlinkat,utime,utimensat,utimes 39@file-system=access,chdir,chmod,close,creat,faccessat,fallocate,fchdir,fchmod,fchmodat,fcntl,fcntl64,fgetxattr,flistxattr,fremovexattr,fsetxattr,fstat,fstat64,fstatat64,fstatfs,fstatfs64,ftruncate,ftruncate64,futimesat,getcwd,getdents,getdents64,getxattr,inotify_add_watch,inotify_init,inotify_init1,inotify_rm_watch,lgetxattr,link,linkat,listxattr,llistxattr,lremovexattr,lsetxattr,lstat,lstat64,mkdir,mkdirat,mknod,mknodat,mmap,mmap2,munmap,newfstatat,oldfstat,oldlstat,oldstat,open,openat,readlink,readlinkat,removexattr,rename,renameat,renameat2,rmdir,setxattr,stat,stat64,statfs,statfs64,statx,symlink,symlinkat,truncate,truncate64,unlink,unlinkat,utime,utimensat,utimes
40@io-event=_newselect,epoll_create,epoll_create1,epoll_ctl,epoll_ctl_old,epoll_pwait,epoll_wait,epoll_wait_old,eventfd,eventfd2,poll,ppoll,pselect6,select 40@io-event=_newselect,epoll_create,epoll_create1,epoll_ctl,epoll_ctl_old,epoll_pwait,epoll_wait,epoll_wait_old,eventfd,eventfd2,poll,ppoll,pselect6,select
41@ipc=ipc,memfd_create,mq_getsetattr,mq_notify,mq_open,mq_timedreceive,mq_timedsend,mq_unlink,msgctl,msgget,msgrcv,msgsnd,pipe,pipe2,process_vm_readv,process_vm_writev,semctl,semget,semop,semtimedop,shmat,shmctl,shmdt,shmget 41@ipc=ipc,memfd_create,mq_getsetattr,mq_notify,mq_open,mq_timedreceive,mq_timedsend,mq_unlink,msgctl,msgget,msgrcv,msgsnd,pipe,pipe2,process_vm_readv,process_vm_writev,semctl,semget,semop,semtimedop,shmat,shmctl,shmdt,shmget
diff --git a/src/fbuilder/build_home.c b/src/fbuilder/build_home.c
index fca3396c4..c0f4a3407 100644
--- a/src/fbuilder/build_home.c
+++ b/src/fbuilder/build_home.c
@@ -24,7 +24,7 @@ static FileDB *db_skip = NULL;
24static FileDB *db_out = NULL; 24static FileDB *db_out = NULL;
25 25
26static void load_whitelist_common(void) { 26static void load_whitelist_common(void) {
27 FILE *fp = fopen("/etc/firejail/whitelist-common.inc", "r"); 27 FILE *fp = fopen(SYSCONFDIR "/whitelist-common.inc", "r");
28 if (!fp) { 28 if (!fp) {
29 fprintf(stderr, "Error: cannot open whitelist-common.inc\n"); 29 fprintf(stderr, "Error: cannot open whitelist-common.inc\n");
30 exit(1); 30 exit(1);
diff --git a/src/fbuilder/build_profile.c b/src/fbuilder/build_profile.c
index adc00e67b..0517c837e 100644
--- a/src/fbuilder/build_profile.c
+++ b/src/fbuilder/build_profile.c
@@ -80,10 +80,19 @@ void build_profile(int argc, char **argv, int index, FILE *fp) {
80 stroutput, 80 stroutput,
81 }; 81 };
82 82
83 // detect strace 83 // detect strace and check if Yama LSM allows us to use it
84 int have_strace = 0; 84 int have_strace = 0;
85 if (access("/usr/bin/strace", X_OK) == 0) 85 int have_yama_permission = 1;
86 if (access("/usr/bin/strace", X_OK) == 0) {
86 have_strace = 1; 87 have_strace = 1;
88 FILE *fp = fopen("/proc/sys/kernel/yama/ptrace_scope", "r");
89 if (fp) {
90 unsigned val;
91 if (fscanf(fp, "%u", &val) == 1)
92 have_yama_permission = (val < 2);
93 fclose(fp);
94 }
95 }
87 96
88 // calculate command length 97 // calculate command length
89 unsigned len = (int) sizeof(cmdlist) / sizeof(char*) + argc - index + 1; 98 unsigned len = (int) sizeof(cmdlist) / sizeof(char*) + argc - index + 1;
@@ -93,10 +102,11 @@ void build_profile(int argc, char **argv, int index, FILE *fp) {
93 cmd[0] = cmdlist[0]; // explicit assignment to clean scan-build error 102 cmd[0] = cmdlist[0]; // explicit assignment to clean scan-build error
94 103
95 // build command 104 // build command
105 int skip_strace = !(have_strace && have_yama_permission);
96 unsigned i = 0; 106 unsigned i = 0;
97 for (i = 0; i < (int) sizeof(cmdlist) / sizeof(char*); i++) { 107 for (i = 0; i < (int) sizeof(cmdlist) / sizeof(char*); i++) {
98 // skip strace if not installed 108 // skip strace if not installed, or no permission to use it
99 if (have_strace == 0 && strcmp(cmdlist[i], "/usr/bin/strace") == 0) 109 if (skip_strace && strcmp(cmdlist[i], "/usr/bin/strace") == 0)
100 break; 110 break;
101 cmd[i] = cmdlist[i]; 111 cmd[i] = cmdlist[i];
102 } 112 }
@@ -172,12 +182,14 @@ void build_profile(int argc, char **argv, int index, FILE *fp) {
172 fprintf(fp, "caps.drop all\n"); 182 fprintf(fp, "caps.drop all\n");
173 fprintf(fp, "nonewprivs\n"); 183 fprintf(fp, "nonewprivs\n");
174 fprintf(fp, "seccomp\n"); 184 fprintf(fp, "seccomp\n");
175 if (have_strace) 185 if (!have_strace) {
176 build_seccomp(strace_output, fp);
177 else {
178 fprintf(fp, "# If you install strace on your system, Firejail will also create a\n"); 186 fprintf(fp, "# If you install strace on your system, Firejail will also create a\n");
179 fprintf(fp, "# whitelisted seccomp filter.\n"); 187 fprintf(fp, "# whitelisted seccomp filter.\n");
180 } 188 }
189 else if (!have_yama_permission)
190 fprintf(fp, "# Yama security module prevents creation of a whitelisted seccomp filter\n");
191 else
192 build_seccomp(strace_output, fp);
181 fprintf(fp, "\n"); 193 fprintf(fp, "\n");
182 194
183 fprintf(fp, "### network\n"); 195 fprintf(fp, "### network\n");
diff --git a/src/firecfg/firecfg.config b/src/firecfg/firecfg.config
index 23b1e364a..109f89f39 100644
--- a/src/firecfg/firecfg.config
+++ b/src/firecfg/firecfg.config
@@ -455,6 +455,7 @@ macrofusion
455magicor 455magicor
456# man 456# man
457manaplus 457manaplus
458marker
458masterpdfeditor 459masterpdfeditor
459masterpdfeditor4 460masterpdfeditor4
460masterpdfeditor5 461masterpdfeditor5
@@ -621,6 +622,7 @@ qemu-launcher
621qgis 622qgis
622qlipper 623qlipper
623qmmp 624qmmp
625qnapi
624qpdfview 626qpdfview
625qt-faststart 627qt-faststart
626qtox 628qtox
@@ -662,6 +664,7 @@ secret-tool
662shellcheck 664shellcheck
663shortwave 665shortwave
664shotcut 666shotcut
667shotwell
665signal-cli 668signal-cli
666signal-desktop 669signal-desktop
667silentarmy 670silentarmy
@@ -771,6 +774,7 @@ tremulous
771trojita 774trojita
772truecraft 775truecraft
773tshark 776tshark
777tutanota-desktop
774tuxguitar 778tuxguitar
775tvbrowser 779tvbrowser
776twitch 780twitch
diff --git a/src/firejail/fs_lib.c b/src/firejail/fs_lib.c
index 941d6ad82..b76999d8f 100644
--- a/src/firejail/fs_lib.c
+++ b/src/firejail/fs_lib.c
@@ -165,7 +165,7 @@ void fslib_copy_dir(const char *full_path) {
165 mkdir_attr(dest, 0755, 0, 0); 165 mkdir_attr(dest, 0755, 0, 0);
166 166
167 if (mount(full_path, dest, NULL, MS_BIND|MS_REC, NULL) < 0 || 167 if (mount(full_path, dest, NULL, MS_BIND|MS_REC, NULL) < 0 ||
168 mount(NULL, dest, NULL, MS_BIND|MS_REMOUNT|MS_NOSUID|MS_NODEV|MS_REC, NULL) < 0) 168 mount(NULL, dest, NULL, MS_BIND|MS_REMOUNT|MS_RDONLY|MS_NOSUID|MS_NODEV|MS_REC, NULL) < 0)
169 errExit("mount bind"); 169 errExit("mount bind");
170 fs_logger2("clone", full_path); 170 fs_logger2("clone", full_path);
171 fs_logger2("mount", full_path); 171 fs_logger2("mount", full_path);
diff --git a/src/firejail/join.c b/src/firejail/join.c
index d2f802add..4f0210f95 100644
--- a/src/firejail/join.c
+++ b/src/firejail/join.c
@@ -296,7 +296,7 @@ static void extract_umask(pid_t pid) {
296 fprintf(stderr, "Error: cannot open umask file\n"); 296 fprintf(stderr, "Error: cannot open umask file\n");
297 exit(1); 297 exit(1);
298 } 298 }
299 if (fscanf(fp, "%o", &orig_umask) != 1) { 299 if (fscanf(fp, "%3o", &orig_umask) != 1) {
300 fprintf(stderr, "Error: cannot read umask\n"); 300 fprintf(stderr, "Error: cannot read umask\n");
301 exit(1); 301 exit(1);
302 } 302 }
@@ -335,7 +335,7 @@ bool is_ready_for_join(const pid_t pid) {
335 struct stat s; 335 struct stat s;
336 if (fstat(fd, &s) == -1) 336 if (fstat(fd, &s) == -1)
337 errExit("fstat"); 337 errExit("fstat");
338 if (!S_ISREG(s.st_mode) || s.st_uid != 0) { 338 if (!S_ISREG(s.st_mode) || s.st_uid != 0 || s.st_size != 1) {
339 close(fd); 339 close(fd);
340 return false; 340 return false;
341 } 341 }
@@ -411,7 +411,7 @@ void join(pid_t pid, int argc, char **argv, int index) {
411 extract_x11_display(parent); 411 extract_x11_display(parent);
412 412
413 int shfd = -1; 413 int shfd = -1;
414 if (!arg_shell_none) 414 if (!arg_shell_none && !arg_audit)
415 shfd = open_shell(); 415 shfd = open_shell();
416 416
417 EUID_ROOT(); 417 EUID_ROOT();
@@ -423,6 +423,7 @@ void join(pid_t pid, int argc, char **argv, int index) {
423 extract_cgroup(pid); 423 extract_cgroup(pid);
424 extract_nogroups(pid); 424 extract_nogroups(pid);
425 extract_user_namespace(pid); 425 extract_user_namespace(pid);
426 extract_umask(pid);
426#ifdef HAVE_APPARMOR 427#ifdef HAVE_APPARMOR
427 extract_apparmor(pid); 428 extract_apparmor(pid);
428#endif 429#endif
@@ -432,9 +433,6 @@ void join(pid_t pid, int argc, char **argv, int index) {
432 if (cfg.cgroup) // not available for uid 0 433 if (cfg.cgroup) // not available for uid 0
433 set_cgroup(cfg.cgroup); 434 set_cgroup(cfg.cgroup);
434 435
435 // set umask, also uid 0
436 extract_umask(pid);
437
438 // join namespaces 436 // join namespaces
439 if (arg_join_network) { 437 if (arg_join_network) {
440 if (join_namespace(pid, "net")) 438 if (join_namespace(pid, "net"))
diff --git a/src/firejail/util.c b/src/firejail/util.c
index 0b095e1be..911c8bd94 100644
--- a/src/firejail/util.c
+++ b/src/firejail/util.c
@@ -565,27 +565,18 @@ char *clean_pathname(const char *path) {
565 if (!rv) 565 if (!rv)
566 errExit("malloc"); 566 errExit("malloc");
567 567
568 if (len > 0) { 568 size_t i = 0;
569 size_t i = 0, j = 0, cnt = 0; 569 size_t j = 0;
570 for (; i < len; i++) { 570 while (path[i]) {
571 if (path[i] == '/') 571 while (path[i] == '/' && path[i+1] == '/')
572 cnt++; 572 i++;
573 else 573 rv[j++] = path[i++];
574 cnt = 0;
575
576 if (cnt < 2) {
577 rv[j] = path[i];
578 j++;
579 }
580 }
581 rv[j] = '\0';
582
583 // remove a trailing slash
584 if (j > 1 && rv[j - 1] == '/')
585 rv[j - 1] = '\0';
586 } 574 }
587 else 575 rv[j] = '\0';
588 *rv = '\0'; 576
577 // remove a trailing slash
578 if (j > 1 && rv[j - 1] == '/')
579 rv[j - 1] = '\0';
589 580
590 return rv; 581 return rv;
591} 582}
diff --git a/src/lib/syscall.c b/src/lib/syscall.c
index 4903971ad..6823d0ae6 100644
--- a/src/lib/syscall.c
+++ b/src/lib/syscall.c
@@ -336,6 +336,7 @@ static const SyscallGroupList sysgroups[] = {
336#endif 336#endif
337 }, 337 },
338 { .name = "@default-keep", .list = 338 { .name = "@default-keep", .list =
339 "execveat," // commonly used by fexecve
339 "execve," 340 "execve,"
340 "prctl" 341 "prctl"
341 }, 342 },
diff --git a/src/man/firejail-profile.txt b/src/man/firejail-profile.txt
index 9524254c1..030a3c95c 100644
--- a/src/man/firejail-profile.txt
+++ b/src/man/firejail-profile.txt
@@ -862,6 +862,11 @@ the parent interface specified by --net is not configured. An IP address and
862a default gateway address also have to be added. 862a default gateway address also have to be added.
863 863
864.TP 864.TP
865\fBnetns namespace
866Run the program in a named, persistent network namespace. These can
867be created and configured using "ip netns".
868
869.TP
865\fBveth-name name 870\fBveth-name name
866Use this name for the interface connected to the bridge for --net=bridge_interface commands, 871Use this name for the interface connected to the bridge for --net=bridge_interface commands,
867instead of the default one. 872instead of the default one.
diff --git a/src/man/firejail.txt b/src/man/firejail.txt
index 347e2b31b..e72ef48c2 100644
--- a/src/man/firejail.txt
+++ b/src/man/firejail.txt
@@ -2273,7 +2273,7 @@ rm: cannot remove `testfile': Operation not permitted
2273.TP 2273.TP
2274\fB\-\-seccomp.keep=syscall,@group,!syscall2 2274\fB\-\-seccomp.keep=syscall,@group,!syscall2
2275Enable seccomp filter, blacklist all syscall not listed and "syscall2". 2275Enable seccomp filter, blacklist all syscall not listed and "syscall2".
2276The system calls needed by Firejail (group @default-keep: prctl, execve) 2276The system calls needed by Firejail (group @default-keep: prctl, execve, execveat)
2277are handled with the preload library. On a 64 bit architecture, an 2277are handled with the preload library. On a 64 bit architecture, an
2278additional filter for 32 bit system calls can be installed with 2278additional filter for 32 bit system calls can be installed with
2279\-\-seccomp.32.keep. 2279\-\-seccomp.32.keep.