aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md2
-rw-r--r--.github/workflows/build-extra.yml52
-rw-r--r--.github/workflows/build.yml45
-rw-r--r--.github/workflows/codeql-analysis.yml14
-rw-r--r--.github/workflows/sort.yml21
-rw-r--r--README10
-rw-r--r--README.md5
-rw-r--r--RELNOTES6
-rwxr-xr-xcontrib/firejail-welcome.sh128
-rw-r--r--etc/inc/archiver-common.inc53
-rw-r--r--etc/inc/disable-common.inc18
-rw-r--r--etc/inc/disable-programs.inc23
-rw-r--r--etc/inc/disable-shell.inc1
-rw-r--r--etc/inc/disable-write-mnt.inc4
-rw-r--r--etc/inc/whitelist-common.inc3
-rw-r--r--etc/inc/whitelist-player-common.inc (renamed from etc/inc/whitelist-players.inc)5
-rw-r--r--etc/inc/whitelist-runuser-common.inc4
-rw-r--r--etc/inc/whitelist-usr-share-common.inc5
-rw-r--r--etc/inc/whitelist-var-common.inc3
-rw-r--r--etc/profile-a-l/7z.profile41
-rw-r--r--etc/profile-a-l/alacarte.profile64
-rw-r--r--etc/profile-a-l/ar.profile40
-rw-r--r--etc/profile-a-l/atom.profile32
-rw-r--r--etc/profile-a-l/atool.profile37
-rw-r--r--etc/profile-a-l/authenticator-rs.profile55
-rw-r--r--etc/profile-a-l/balsa.profile2
-rw-r--r--etc/profile-a-l/beaker.profile21
-rw-r--r--etc/profile-a-l/brave.profile4
-rw-r--r--etc/profile-a-l/bsdtar.profile39
-rw-r--r--etc/profile-a-l/celluloid.profile2
-rw-r--r--etc/profile-a-l/chromium-common.profile1
-rw-r--r--etc/profile-a-l/chromium.profile1
-rw-r--r--etc/profile-a-l/com.github.bleakgrey.tootle.profile55
-rw-r--r--etc/profile-a-l/cower.profile1
-rw-r--r--etc/profile-a-l/cpio.profile35
-rw-r--r--etc/profile-a-l/curl.profile7
-rw-r--r--etc/profile-a-l/default.profile5
-rw-r--r--etc/profile-a-l/devhelp.profile1
-rw-r--r--etc/profile-a-l/devilspie.profile1
-rw-r--r--etc/profile-a-l/dig.profile1
-rw-r--r--etc/profile-a-l/discord-common.profile37
-rw-r--r--etc/profile-a-l/dolphin-emu.profile63
-rw-r--r--etc/profile-a-l/drill.profile55
-rw-r--r--etc/profile-a-l/electron.profile28
-rw-r--r--etc/profile-a-l/element-desktop.profile8
-rw-r--r--etc/profile-a-l/falkon.profile15
-rw-r--r--etc/profile-a-l/feh.profile1
-rw-r--r--etc/profile-a-l/file.profile1
-rw-r--r--etc/profile-a-l/firefox.profile2
-rw-r--r--etc/profile-a-l/fractal.profile4
-rw-r--r--etc/profile-a-l/freeoffice-planmaker.profile2
-rw-r--r--etc/profile-a-l/freeoffice-presentations.profile2
-rw-r--r--etc/profile-a-l/freeoffice-textmaker.profile2
-rw-r--r--etc/profile-a-l/freetube.profile13
-rw-r--r--etc/profile-a-l/geekbench.profile1
-rw-r--r--etc/profile-a-l/ghostwriter.profile2
-rw-r--r--etc/profile-a-l/gimp.profile2
-rw-r--r--etc/profile-a-l/github-desktop.profile46
-rw-r--r--etc/profile-a-l/gnome-system-log.profile3
-rw-r--r--etc/profile-a-l/godot.profile2
-rw-r--r--etc/profile-a-l/gtk-straw-viewer.profile14
-rw-r--r--etc/profile-a-l/gtk-youtube-viewer.profile (renamed from etc/profile-a-l/gtk-youtube-viewer)10
-rw-r--r--etc/profile-a-l/gtk2-youtube-viewer.profile (renamed from etc/profile-a-l/gtk2-youtube-viewer)7
-rw-r--r--etc/profile-a-l/gtk3-youtube-viewer.profile (renamed from etc/profile-a-l/gtk3-youtube-viewer)7
-rw-r--r--etc/profile-a-l/gzip.profile38
-rw-r--r--etc/profile-a-l/highlight.profile1
-rw-r--r--etc/profile-a-l/homebank.profile2
-rw-r--r--etc/profile-a-l/jitsi-meet-desktop.profile22
-rw-r--r--etc/profile-a-l/kazam.profile8
-rw-r--r--etc/profile-a-l/keepassxc.profile7
-rw-r--r--etc/profile-a-l/kube.profile2
-rw-r--r--etc/profile-a-l/less.profile1
-rw-r--r--etc/profile-a-l/librewolf.profile28
-rw-r--r--etc/profile-a-l/links.profile1
-rw-r--r--etc/profile-a-l/lutris.profile74
-rw-r--r--etc/profile-a-l/lynx.profile1
-rw-r--r--etc/profile-a-l/lyx.profile2
-rw-r--r--etc/profile-m-z/QMediathekView.profile4
-rw-r--r--etc/profile-m-z/matrix-mirage.profile24
-rw-r--r--etc/profile-m-z/menulibre.profile4
-rw-r--r--etc/profile-m-z/microsoft-edge-dev.profile20
-rw-r--r--etc/profile-m-z/microsoft-edge.profile11
-rw-r--r--etc/profile-m-z/min.profile2
-rw-r--r--etc/profile-m-z/minetest.profile5
-rw-r--r--etc/profile-m-z/minitube.profile6
-rw-r--r--etc/profile-m-z/mirage.profile7
-rw-r--r--etc/profile-m-z/mplayer.profile2
-rw-r--r--etc/profile-m-z/mpsyt.profile2
-rw-r--r--etc/profile-m-z/mpv.profile2
-rw-r--r--etc/profile-m-z/mtpaint.profile4
-rw-r--r--etc/profile-m-z/musictube.profile8
-rw-r--r--etc/profile-m-z/nheko.profile18
-rw-r--r--etc/profile-m-z/nslookup.profile1
-rw-r--r--etc/profile-m-z/nuclear.profile17
-rw-r--r--etc/profile-m-z/onboard.profile6
-rw-r--r--etc/profile-m-z/ostrichriders.profile2
-rw-r--r--etc/profile-m-z/otter-browser.profile6
-rw-r--r--etc/profile-m-z/pandoc.profile1
-rw-r--r--etc/profile-m-z/patch.profile1
-rw-r--r--etc/profile-m-z/pdftotext.profile1
-rw-r--r--etc/profile-m-z/photoflare.profile50
-rw-r--r--etc/profile-m-z/ping.profile1
-rw-r--r--etc/profile-m-z/planmaker18.profile2
-rw-r--r--etc/profile-m-z/planmaker18free.profile2
-rw-r--r--etc/profile-m-z/playonlinux.profile25
-rw-r--r--etc/profile-m-z/ppsspp.profile2
-rw-r--r--etc/profile-m-z/presentations18.profile2
-rw-r--r--etc/profile-m-z/presentations18free.profile2
-rw-r--r--etc/profile-m-z/qrencode.profile1
-rw-r--r--etc/profile-m-z/quaternion.profile4
-rw-r--r--etc/profile-m-z/rhythmbox.profile1
-rw-r--r--etc/profile-m-z/riot-desktop.profile2
-rw-r--r--etc/profile-m-z/riot-web.profile7
-rw-r--r--etc/profile-m-z/rocketchat.profile20
-rw-r--r--etc/profile-m-z/rsync-download_only.profile1
-rw-r--r--etc/profile-m-z/server.profile20
-rw-r--r--etc/profile-m-z/servo.profile48
-rw-r--r--etc/profile-m-z/shellcheck.profile1
-rw-r--r--etc/profile-m-z/signal-desktop.profile33
-rw-r--r--etc/profile-m-z/skypeforlinux.profile33
-rw-r--r--etc/profile-m-z/slack.profile33
-rw-r--r--etc/profile-m-z/softmaker-common.profile (renamed from etc/inc/softmaker-common.inc)0
-rw-r--r--etc/profile-m-z/spectral.profile8
-rw-r--r--etc/profile-m-z/ssh.profile2
-rw-r--r--etc/profile-m-z/steam.profile4
-rw-r--r--etc/profile-m-z/straw-viewer.profile58
-rw-r--r--etc/profile-m-z/strawberry.profile2
-rw-r--r--etc/profile-m-z/strings.profile1
-rw-r--r--etc/profile-m-z/supertuxkart.profile5
-rw-r--r--etc/profile-m-z/sysprof.profile33
-rw-r--r--etc/profile-m-z/tar.profile42
-rw-r--r--etc/profile-m-z/teams-for-linux.profile22
-rw-r--r--etc/profile-m-z/teams.profile24
-rw-r--r--etc/profile-m-z/telegram.profile2
-rw-r--r--etc/profile-m-z/textmaker18.profile2
-rw-r--r--etc/profile-m-z/textmaker18free.profile2
-rw-r--r--etc/profile-m-z/thunderbird.profile2
-rw-r--r--etc/profile-m-z/totem.profile2
-rw-r--r--etc/profile-m-z/twitch.profile21
-rw-r--r--etc/profile-m-z/unrar.profile34
-rw-r--r--etc/profile-m-z/unzip.profile35
-rw-r--r--etc/profile-m-z/vivaldi.profile2
-rw-r--r--etc/profile-m-z/vlc.profile2
-rw-r--r--etc/profile-m-z/w3m.profile5
-rw-r--r--etc/profile-m-z/wget.profile1
-rw-r--r--etc/profile-m-z/whalebird.profile22
-rw-r--r--etc/profile-m-z/whois.profile1
-rw-r--r--etc/profile-m-z/wine.profile3
-rw-r--r--etc/profile-m-z/wire-desktop.profile24
-rw-r--r--etc/profile-m-z/xfce4-mixer.profile9
-rw-r--r--etc/profile-m-z/xfce4-screenshooter.profile2
-rw-r--r--etc/profile-m-z/xournalpp.profile2
-rw-r--r--etc/profile-m-z/xplayer.profile2
-rw-r--r--etc/profile-m-z/xzdec.profile33
-rw-r--r--etc/profile-m-z/yelp.profile24
-rw-r--r--etc/profile-m-z/youtube-dl.profile1
-rw-r--r--etc/profile-m-z/youtube-viewer.profile8
-rw-r--r--etc/profile-m-z/youtube.profile21
-rw-r--r--etc/profile-m-z/youtubemusic-nativefier.profile19
-rw-r--r--etc/profile-m-z/ytmdesktop.profile20
-rw-r--r--etc/profile-m-z/zathura.profile1
-rw-r--r--etc/profile-m-z/zoom.profile42
-rw-r--r--etc/profile-m-z/zstd.profile35
-rw-r--r--src/firecfg/firecfg.config18
-rw-r--r--src/firejail/firejail.h2
-rw-r--r--src/firejail/fs.c40
-rw-r--r--src/firejail/fs_home.c51
-rw-r--r--src/firejail/fs_lib.c3
-rw-r--r--src/firejail/join.c32
-rw-r--r--src/firejail/ls.c122
-rw-r--r--src/firejail/main.c24
-rw-r--r--src/firejail/no_sandbox.c15
-rw-r--r--src/firejail/profile.c22
-rw-r--r--src/firejail/pulseaudio.c23
-rw-r--r--src/firejail/sandbox.c67
-rw-r--r--src/firejail/util.c74
-rw-r--r--src/firejail/x11.c2
-rw-r--r--src/include/common.h15
-rw-r--r--src/lib/common.c57
-rw-r--r--src/man/firejail.txt12
-rwxr-xr-xsrc/man/preproc.awk4
-rwxr-xr-xtest/fs/fscheck-tmpfs.exp43
-rwxr-xr-xtest/fs/private-cache.exp30
-rwxr-xr-xtest/profiles/profiles.sh2
184 files changed, 1744 insertions, 1299 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 562d6b9e1..47e099cde 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -33,10 +33,10 @@ Other context about the problem like related errors to understand the problem.
33**Checklist** 33**Checklist**
34 - [ ] The upstream profile (and redirect profile if exists) have no changes fixing it. 34 - [ ] The upstream profile (and redirect profile if exists) have no changes fixing it.
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 - [ ] Programs needed for interaction are listed in the profile.
37 - [ ] A short search for duplicates was performed. 36 - [ ] A short search for duplicates was performed.
38 - [ ] 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.
39 - [ ] 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.
40 40
41 41
42<details><summary> debug output </summary> 42<details><summary> debug output </summary>
diff --git a/.github/workflows/build-extra.yml b/.github/workflows/build-extra.yml
new file mode 100644
index 000000000..1468ef898
--- /dev/null
+++ b/.github/workflows/build-extra.yml
@@ -0,0 +1,52 @@
1name: Build-extra CI
2
3on:
4 push:
5 branches: [ master ]
6 paths-ignore:
7 - CONTRIBUTING.md
8 - README
9 - README.md
10 - RELNOTES
11 - SECURITY.md
12 - 'etc/**'
13 pull_request:
14 branches: [ master ]
15 paths-ignore:
16 - CONTRIBUTING.md
17 - README
18 - README.md
19 - RELNOTES
20 - SECURITY.md
21 - 'etc/**'
22
23jobs:
24 build-clang:
25 if: ${{ ! contains(github.event.commits[0].message, '[skip ci]') }}
26 runs-on: ubuntu-20.04
27 steps:
28 - uses: actions/checkout@v2
29 - name: configure
30 run: CC=clang-10 ./configure --enable-fatal-warnings
31 - name: make
32 run: make
33 scan-build:
34 if: ${{ ! contains(github.event.commits[0].message, '[skip ci]') }}
35 runs-on: ubuntu-20.04
36 steps:
37 - uses: actions/checkout@v2
38 - name: install clang-tools-10
39 run: sudo apt-get install clang-tools-10
40 - name: configure
41 run: CC=clang-10 ./configure --enable-fatal-warnings
42 - name: scan-build
43 run: NO_EXTRA_CFLAGS="yes" scan-build-10 --status-bugs make
44 cppcheck:
45 if: ${{ ! contains(github.event.commits[0].message, '[skip ci]') }}
46 runs-on: ubuntu-20.04
47 steps:
48 - uses: actions/checkout@v2
49 - name: install cppcheck
50 run: sudo apt-get install cppcheck
51 - name: cppcheck
52 run: cppcheck -q --force --error-exitcode=1 --enable=warning,performance .
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 71cb7f0b4..99b8a3be5 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -3,11 +3,24 @@ name: Build CI
3on: 3on:
4 push: 4 push:
5 branches: [ master ] 5 branches: [ master ]
6 paths-ignore:
7 - CONTRIBUTING.md
8 - README
9 - README.md
10 - RELNOTES
11 - SECURITY.md
6 pull_request: 12 pull_request:
7 branches: [ master ] 13 branches: [ master ]
14 paths-ignore:
15 - CONTRIBUTING.md
16 - README
17 - README.md
18 - RELNOTES
19 - SECURITY.md
8 20
9jobs: 21jobs:
10 build_and_test: 22 build_and_test:
23 if: ${{ ! contains(github.event.commits[0].message, '[skip ci]') }}
11 runs-on: ubuntu-20.04 24 runs-on: ubuntu-20.04
12 steps: 25 steps:
13 - uses: actions/checkout@v2 26 - uses: actions/checkout@v2
@@ -21,35 +34,3 @@ jobs:
21 run: sudo make install 34 run: sudo make install
22 - name: run tests 35 - name: run tests
23 run: SHELL=/bin/bash make test-github 36 run: SHELL=/bin/bash make test-github
24 build-clang:
25 runs-on: ubuntu-20.04
26 steps:
27 - uses: actions/checkout@v2
28 - name: configure
29 run: CC=clang-10 ./configure --enable-fatal-warnings
30 - name: make
31 run: make
32 scan-build:
33 runs-on: ubuntu-20.04
34 steps:
35 - uses: actions/checkout@v2
36 - name: install clang-tools-10
37 run: sudo apt-get install clang-tools-10
38 - name: configure
39 run: CC=clang-10 ./configure --enable-fatal-warnings
40 - name: scan-build
41 run: NO_EXTRA_CFLAGS="yes" scan-build-10 --status-bugs make
42 cppcheck:
43 runs-on: ubuntu-20.04
44 steps:
45 - uses: actions/checkout@v2
46 - name: install cppcheck
47 run: sudo apt-get install cppcheck
48 - name: cppcheck
49 run: cppcheck -q --force --error-exitcode=1 --enable=warning,performance .
50 profile-sort:
51 runs-on: ubuntu-20.04
52 steps:
53 - uses: actions/checkout@v2
54 - name: check profiles
55 run: ./contrib/sort.py etc/*/{*.inc,*.net,*.profile}
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index a37bbb5c7..301c7fad2 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -8,9 +8,23 @@ name: "CodeQL"
8on: 8on:
9 push: 9 push:
10 branches: [master] 10 branches: [master]
11 paths-ignore:
12 - CONTRIBUTING.md
13 - README
14 - README.md
15 - RELNOTES
16 - SECURITY.md
17 - 'etc/**'
11 pull_request: 18 pull_request:
12 # The branches below must be a subset of the branches above 19 # The branches below must be a subset of the branches above
13 branches: [master] 20 branches: [master]
21 paths-ignore:
22 - CONTRIBUTING.md
23 - README
24 - README.md
25 - RELNOTES
26 - SECURITY.md
27 - 'etc/**'
14 schedule: 28 schedule:
15 - cron: '0 7 * * 2' 29 - cron: '0 7 * * 2'
16 30
diff --git a/.github/workflows/sort.yml b/.github/workflows/sort.yml
new file mode 100644
index 000000000..55ac065b6
--- /dev/null
+++ b/.github/workflows/sort.yml
@@ -0,0 +1,21 @@
1name: sort.py
2
3on:
4 push:
5 branches: [ master ]
6 paths:
7 - 'etc/**'
8 pull_request:
9 branches: [ master ]
10 paths:
11 - 'etc/**'
12
13jobs:
14 profile-sort:
15 if: ${{ ! contains(github.event.commits[0].message, '[skip ci]') }}
16 runs-on: ubuntu-20.04
17 steps:
18 - uses: actions/checkout@v2
19 - name: check profiles
20 run: ./contrib/sort.py etc/*/{*.inc,*.profile}
21
diff --git a/README b/README
index 81f5fd5e8..6c86dcc5a 100644
--- a/README
+++ b/README
@@ -252,12 +252,14 @@ Danil Semelenov (https://github.com/sgtpep)
252Dara Adib (https://github.com/daradib) 252Dara Adib (https://github.com/daradib)
253 - ssh profile fix 253 - ssh profile fix
254 - evince profile fix 254 - evince profile fix
255 - linphone profile fix
255Dario Pellegrini (https://github.com/dpellegr) 256Dario Pellegrini (https://github.com/dpellegr)
256 - allowing links in netns 257 - allowing links in netns
257David Thole (https://github.com/TheDarkTrumpet) 258David Thole (https://github.com/TheDarkTrumpet)
258 - added profile for teams-for-linux 259 - added profile for teams-for-linux
259Davide Beatrici (https://github.com/davidebeatrici) 260Davide Beatrici (https://github.com/davidebeatrici)
260 - steam.profile: correctly blacklist unneeded directories in user's home 261 - steam.profile: correctly blacklist unneeded directories in user's home
262 - minetest fixes
261David Hyrule (https://github.com/Svaag) 263David Hyrule (https://github.com/Svaag)
262 - remove nou2f in ssh profile 264 - remove nou2f in ssh profile
263Deelvesh Bunjun (https://github.com/DeelveshBunjun) 265Deelvesh Bunjun (https://github.com/DeelveshBunjun)
@@ -515,6 +517,8 @@ KellerFuchs (https://github.com/KellerFuchs)
515 - added support for .local profile files in /etc/firejail 517 - added support for .local profile files in /etc/firejail
516 - fixed Cryptocat profile 518 - fixed Cryptocat profile
517 - make ~/.local read-only 519 - make ~/.local read-only
520Kelvin (https://github.com/kmk3)
521 - disable ldns utilities
518Kishore96in (https://github.com/Kishore96in) 522Kishore96in (https://github.com/Kishore96in)
519 - added falkon profile 523 - added falkon profile
520 - kxmlgui fixes 524 - kxmlgui fixes
@@ -546,6 +550,7 @@ Liorst4 (https://github.com/Liorst4)
546 - Preserve CFLAGS given to configure in common.mk.in 550 - Preserve CFLAGS given to configure in common.mk.in
547 - fix emacs config to load as read-write 551 - fix emacs config to load as read-write
548 - disable browser drm by default 552 - disable browser drm by default
553 - minetest fixes
549Lockdis (https://github.com/Lockdis) 554Lockdis (https://github.com/Lockdis)
550 - Added crow, nyx, and google-earth-pro profiles 555 - Added crow, nyx, and google-earth-pro profiles
551Lukáš Krejčí (https://github.com/lskrejci) 556Lukáš Krejčí (https://github.com/lskrejci)
@@ -604,6 +609,7 @@ Neo00001 (https://github.com/Neo00001)
604 - add vmware profile 609 - add vmware profile
605 - update virtualbox profile 610 - update virtualbox profile
606 - update telegram profile 611 - update telegram profile
612 - add spectacle profile
607Nick Fox (https://github.com/njfox) 613Nick Fox (https://github.com/njfox)
608 - add a profile alias for code-oss 614 - add a profile alias for code-oss
609 - add code-oss config directory 615 - add code-oss config directory
@@ -701,6 +707,8 @@ Rahiel Kasim (https://github.com/rahiel)
701 - added telegram-desktop profile 707 - added telegram-desktop profile
702Rahul Golam (https://github.com/technoLord) 708Rahul Golam (https://github.com/technoLord)
703 - strings profile 709 - strings profile
710RandomVoid (https://github.com/RandomVoid)
711 - fix building C# projects in Godot
704Raphaël Droz (https://github.com/drzraf) 712Raphaël Droz (https://github.com/drzraf)
705 - zoom profile fixes 713 - zoom profile fixes
706Reiner Herrmann (https://github.com/reinerh) 714Reiner Herrmann (https://github.com/reinerh)
@@ -953,6 +961,8 @@ Vladimir Schowalter (https://github.com/VladimirSchowalter20)
953 read-only kde5 services directory 961 read-only kde5 services directory
954xee5ch (https://github.com/xee5ch) 962xee5ch (https://github.com/xee5ch)
955 - skypeforlinux profile 963 - skypeforlinux profile
964Ypnose (https://github.com/Ypnose)
965 - disable-shell.inc: add mksh shell
956yumkam (https://github.com/yumkam) 966yumkam (https://github.com/yumkam)
957 - add compile-time option to restrict --net= to root only 967 - add compile-time option to restrict --net= to root only
958 - man page fixes 968 - man page fixes
diff --git a/README.md b/README.md
index cc50df2f7..8d3b3c3bb 100644
--- a/README.md
+++ b/README.md
@@ -163,7 +163,7 @@ Release discussion: https://github.com/netblue30/firejail/issues/3696
163### Profile Statistics 163### Profile Statistics
164 164
165A small tool to print profile statistics. Compile as usual and run in /etc/profiles: 165A small tool to print profile statistics. Compile as usual and run in /etc/profiles:
166````` 166```
167$ sudo cp src/profstats/profstats /etc/firejail/. 167$ sudo cp src/profstats/profstats /etc/firejail/.
168$ cd /etc/firejail 168$ cd /etc/firejail
169$ ./profstats *.profile 169$ ./profstats *.profile
@@ -191,7 +191,8 @@ Stats:
191 net none 333 191 net none 333
192 dbus-user none 523 192 dbus-user none 523
193 dbus-system none 632 193 dbus-system none 632
194```
194 195
195### New profiles: 196### New profiles:
196 197
197spectacle, chromium-browser-privacy 198spectacle, chromium-browser-privacy, gtk-straw-viewer, gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer, straw-viewer, lutris, dolphin-emu, authenticator-rs, servo
diff --git a/RELNOTES b/RELNOTES
index f623517b3..5f5b451e1 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -2,7 +2,11 @@ firejail (0.9.65) baseline; urgency=low
2 * allow --tmpfs inside $HOME for unprivileged users 2 * allow --tmpfs inside $HOME for unprivileged users
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 * new profiles: spectacle, chromium-browser-privacy 5 * Setup guide for new users: contrib/firejail-welcome.sh
6 * new profiles: spectacle, chromium-browser-privacy, gtk-straw-viewer
7 * new profiles: gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer
8 * new profiles: straw-viewer, lutris, dolphin-emu, authenticator-rs, servo
9
6 -- netblue30 <netblue30@yahoo.com> Wed, 21 Oct 2020 09:00:00 -0500 10 -- netblue30 <netblue30@yahoo.com> Wed, 21 Oct 2020 09:00:00 -0500
7 11
8firejail (0.9.64) baseline; urgency=low 12firejail (0.9.64) baseline; urgency=low
diff --git a/contrib/firejail-welcome.sh b/contrib/firejail-welcome.sh
new file mode 100755
index 000000000..2943983e5
--- /dev/null
+++ b/contrib/firejail-welcome.sh
@@ -0,0 +1,128 @@
1#!/bin/bash
2
3# This file is part of Firejail project
4# Copyright (C) 2020 Firejail Authors
5# License GPL v2
6
7if ! command -v zenity >/dev/null; then
8 echo "Please install zenity."
9 exit 1
10fi
11if ! command -v sudo >/dev/null; then
12 echo "Please install sudo."
13 exit 1
14fi
15
16export LANG=en_US.UTF8
17
18zenity --title=firejail-welcome.sh --text-info --width=750 --height=500 <<EOM
19Welcome to firejail!
20
21This is a quick setup guide for newbies.
22
23Profiles for programs can be found in /etc/firejail. Own customizations should go in a file named
24<profile-name>.local in ~/.config/firejal.
25
26Firejail's own configuration can be found at /etc/firejail/firejail.config.
27
28Please note that running this script a second time can set new options, but does not unset options
29set in a previous run.
30
31Website: https://firejail.wordpress.com
32Bug-Tracker: https://github.com/netblue30/firejail/issues
33Documentation:
34- https://github.com/netblue30/firejail/wiki
35- https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions
36- https://firejail.wordpress.com/documentation-2
37- man:firejail(1) and man:firejail-profile(5)
38
39PS: If you have any improvements for this script, open an issue or pull request.
40EOM
41[[ $? -eq 1 ]] && exit 0
42
43sed_scripts=()
44
45read -r -d $'\0' MSG_Q_BROWSER_DISABLE_U2F <<EOM
46<big><b>Should browsers be allowed to access u2f hardware?</b></big>
47EOM
48
49read -r -d $'\0' MSG_Q_BROWSER_ALLOW_DRM <<EOM
50<big><b>Should browsers be able to play DRM content?</b></big>
51
52\$HOME is noexec,nodev,nosuid by default for the most sandboxes. This means that executing programs which are located in \$HOME,
53is forbidden, the setuid attribute on files is ignored and device files inside \$HOME don't work. Browsers install proprietary
54DRM plug-ins such as Widevine under \$HOME by default. In order to use them, \$HOME must be mounted exec inside the sandbox to
55allow their execution. Clearly, this may help an attacker to start malicious code.
56
57NOTE: Other software written in an interpreter language such as bash, python or java can always be started from \$HOME.
58
59HINT: If <tt>/home</tt> has its own partition, you can mount it <tt>nodev,nosuid</tt> for all programs.
60EOM
61
62read -r -d $'\0' MSG_L_ADVANCED_OPTIONS <<EOM
63You maybe want to set some of these advanced options.
64EOM
65
66read -r -d $'\0' MSG_Q_RUN_FIRECFG <<EOM
67<big><b>Should most programs be started in firejail by default?</b></big>
68EOM
69
70read -r -d $'\0' MSG_I_ROOT_REQUIRED <<EOM
71In order to apply these changes, root privileges are required.
72You will now be asked to enter your password.
73EOM
74
75read -r -d $'\0' MSG_I_FINISH <<EOM
76🥳
77EOM
78
79if zenity --title=firejail-welcome.sh --question --ellipsize --text="$MSG_Q_BROWSER_DISABLE_U2F"; then
80 sed_scripts+=("-e s/# browser-disable-u2f yes/browser-disable-u2f no/")
81fi
82
83if zenity --title=firejail-welcome.sh --question --ellipsize --text="$MSG_Q_BROWSER_ALLOW_DRM"; then
84 sed_scripts+=("-e s/# browser-allow-drm no/browser-allow-drm yes/")
85fi
86
87advanced_options=$(zenity --title=firejail-welcome.sh --list --width=800 --height=200 \
88 --text="$MSG_L_ADVANCED_OPTIONS" --multiple --checklist --separator=" " \
89 --column="" --column=Option --column=Description <<EOM
90
91force-nonewprivs
92Always set nonewprivs, this is a strong mitigation against exploits in firejail. However some programs like chromium or wireshark maybe don't work anymore.
93
94restricted-network
95Restrict all network related commands except 'net none' to root only.
96
97seccomp-error-action=kill
98Kill programs which violate seccomp rules (default: return a error).
99EOM
100)
101
102if [[ $advanced_options == *force-nonewprivs* ]]; then
103 sed_scripts+=("-e s/# force-nonewprivs no/force-nonewprivs yes/")
104fi
105if [[ $advanced_options == *restricted-network* ]]; then
106 sed_scripts+=("-e s/# restricted-network no/restricted-network yes/")
107fi
108if [[ $advanced_options == *seccomp-error-action=kill* ]]; then
109 sed_scripts+=("-e s/# seccomp-error-action EPERM/seccomp-error-action kill/")
110fi
111
112if zenity --title=firejail-welcome.sh --question --ellipsize --text="$MSG_Q_RUN_FIRECFG"; then
113 run_firecfg=true
114fi
115
116zenity --title=firejail-welcome.sh --info --ellipsize --text="$MSG_I_ROOT_REQUIRED"
117
118passwd=$(zenity --title=firejail-welcome.sh --password --cancel-label=OK)
119if [[ -n "${sed_scripts[*]}" ]]; then
120 sudo -S -p "" -- sed -i "${sed_scripts[@]}" /etc/firejail/firejail.config <<<"$passwd" || { zenity --title=firejail-welcome.sh --error; exit 1; };
121fi
122if [[ "$run_firecfg" == "true" ]]; then
123 sudo -S -p "" -- firecfg <<<"$passwd" || { zenity --title=firejail-welcome.sh --error; exit 1; };
124fi
125sudo -k
126unset passwd
127
128zenity --title=firejail-welcome.sh --info --icon-name=security-medium-symbolic --text="$MSG_I_FINISH"
diff --git a/etc/inc/archiver-common.inc b/etc/inc/archiver-common.inc
new file mode 100644
index 000000000..9812e3ebb
--- /dev/null
+++ b/etc/inc/archiver-common.inc
@@ -0,0 +1,53 @@
1# This file is overwritten during software install.
2# Persistent customizations should go in a .local file.
3include archiver-common.local
4
5# common profile for archiver/compression tools
6
7blacklist ${RUNUSER}
8
9# WARNING:
10# Users can (un)restrict file access for **all** archivers by commenting/uncommenting the needed
11# include file(s) here or by putting those into archiver-common.local.
12# Another option is to do this **per archiver** in the relevant <archiver>.local.
13# Just beware that things tend to break when overtightening profiles. For example, because you only
14# need to (un)compress files in ${DOWNLOADS}, other applications may need access to ${HOME}/.local/share.
15
16# Uncomment the next line (or put it into your archiver-common.local) if you don't need to compress files in disable-common.inc.
17#include disable-common.inc
18include disable-devel.inc
19include disable-exec.inc
20include disable-interpreters.inc
21include disable-passwdmgr.inc
22# Uncomment the next line (or put it into your archiver-common.local) if you don't need to compress files in disable-programs.inc.
23#include disable-programs.inc
24include disable-shell.inc
25
26apparmor
27caps.drop all
28hostname archiver
29ipc-namespace
30machine-id
31net none
32no3d
33nodvd
34nogroups
35nonewprivs
36#noroot
37nosound
38notv
39nou2f
40novideo
41protocol unix
42seccomp
43shell none
44tracelog
45x11 none
46
47private-cache
48private-dev
49
50dbus-user none
51dbus-system none
52
53memory-deny-write-execute
diff --git a/etc/inc/disable-common.inc b/etc/inc/disable-common.inc
index 1268b4cd2..d88506d90 100644
--- a/etc/inc/disable-common.inc
+++ b/etc/inc/disable-common.inc
@@ -280,6 +280,7 @@ read-only ${HOME}/.plan
280read-only ${HOME}/.profile 280read-only ${HOME}/.profile
281read-only ${HOME}/.project 281read-only ${HOME}/.project
282read-only ${HOME}/.tcshrc 282read-only ${HOME}/.tcshrc
283read-only ${HOME}/.zfunc
283read-only ${HOME}/.zlogin 284read-only ${HOME}/.zlogin
284read-only ${HOME}/.zlogout 285read-only ${HOME}/.zlogout
285read-only ${HOME}/.zprofile 286read-only ${HOME}/.zprofile
@@ -302,6 +303,7 @@ read-only ${HOME}/.exrc
302read-only ${HOME}/.gvimrc 303read-only ${HOME}/.gvimrc
303read-only ${HOME}/.homesick 304read-only ${HOME}/.homesick
304read-only ${HOME}/.iscreenrc 305read-only ${HOME}/.iscreenrc
306read-only ${HOME}/.local/lib
305read-only ${HOME}/.local/share/cool-retro-term 307read-only ${HOME}/.local/share/cool-retro-term
306read-only ${HOME}/.mailcap 308read-only ${HOME}/.mailcap
307read-only ${HOME}/.msmtprc 309read-only ${HOME}/.msmtprc
@@ -513,18 +515,24 @@ blacklist /proc/config.gz
513# prevent DNS malware attempting to communicate with the server 515# prevent DNS malware attempting to communicate with the server
514# using regular DNS tools 516# using regular DNS tools
515blacklist ${PATH}/dig 517blacklist ${PATH}/dig
516blacklist ${PATH}/kdig
517blacklist ${PATH}/nslookup
518blacklist ${PATH}/host
519blacklist ${PATH}/dlint 518blacklist ${PATH}/dlint
520blacklist ${PATH}/dnswalk
521blacklist ${PATH}/dns2tcp 519blacklist ${PATH}/dns2tcp
520blacklist ${PATH}/dnssec-*
521blacklist ${PATH}/dnswalk
522blacklist ${PATH}/drill
523blacklist ${PATH}/host
522blacklist ${PATH}/iodine 524blacklist ${PATH}/iodine
525blacklist ${PATH}/kdig
526blacklist ${PATH}/khost
523blacklist ${PATH}/knsupdate 527blacklist ${PATH}/knsupdate
528blacklist ${PATH}/ldns-*
529blacklist ${PATH}/ldnsd
530blacklist ${PATH}/nslookup
524blacklist ${PATH}/resolvectl 531blacklist ${PATH}/resolvectl
532blacklist ${PATH}/unbound-host
525 533
526# rest of ${RUNUSER} 534# rest of ${RUNUSER}
527blacklist ${RUNUSER}/*.lock 535blacklist ${RUNUSER}/*.lock
528blacklist ${RUNUSER}/inaccessible 536blacklist ${RUNUSER}/inaccessible
529blacklist ${RUNUSER}/update-notifier.pid
530blacklist ${RUNUSER}/pk-debconf-socket 537blacklist ${RUNUSER}/pk-debconf-socket
538blacklist ${RUNUSER}/update-notifier.pid
diff --git a/etc/inc/disable-programs.inc b/etc/inc/disable-programs.inc
index 7e3c0b657..7ab11e620 100644
--- a/etc/inc/disable-programs.inc
+++ b/etc/inc/disable-programs.inc
@@ -188,6 +188,7 @@ blacklist ${HOME}/.config/chromium-flags.conf
188blacklist ${HOME}/.config/clipit 188blacklist ${HOME}/.config/clipit
189blacklist ${HOME}/.config/cliqz 189blacklist ${HOME}/.config/cliqz
190blacklist ${HOME}/.config/cmus 190blacklist ${HOME}/.config/cmus
191blacklist ${HOME}/.config/com.github.bleakgrey.tootle
191blacklist ${HOME}/.config/corebird 192blacklist ${HOME}/.config/corebird
192blacklist ${HOME}/.config/cower 193blacklist ${HOME}/.config/cower
193blacklist ${HOME}/.config/darktable 194blacklist ${HOME}/.config/darktable
@@ -200,6 +201,7 @@ blacklist ${HOME}/.config/discord
200blacklist ${HOME}/.config/discordcanary 201blacklist ${HOME}/.config/discordcanary
201blacklist ${HOME}/.config/dkl 202blacklist ${HOME}/.config/dkl
202blacklist ${HOME}/.config/dnox 203blacklist ${HOME}/.config/dnox
204blacklist ${HOME}/.config/dolphin-emu
203blacklist ${HOME}/.config/dolphinrc 205blacklist ${HOME}/.config/dolphinrc
204blacklist ${HOME}/.config/dragonplayerrc 206blacklist ${HOME}/.config/dragonplayerrc
205blacklist ${HOME}/.config/draw.io 207blacklist ${HOME}/.config/draw.io
@@ -293,6 +295,7 @@ blacklist ${HOME}/.config/libreoffice
293blacklist ${HOME}/.config/liferea 295blacklist ${HOME}/.config/liferea
294blacklist ${HOME}/.config/linphone 296blacklist ${HOME}/.config/linphone
295blacklist ${HOME}/.config/lugaru 297blacklist ${HOME}/.config/lugaru
298blacklist ${HOME}/.config/lutris
296blacklist ${HOME}/.config/lximage-qt 299blacklist ${HOME}/.config/lximage-qt
297blacklist ${HOME}/.config/mailtransports 300blacklist ${HOME}/.config/mailtransports
298blacklist ${HOME}/.local/share/man 301blacklist ${HOME}/.local/share/man
@@ -300,11 +303,13 @@ blacklist ${HOME}/.config/mana
300blacklist ${HOME}/.config/mate-calc 303blacklist ${HOME}/.config/mate-calc
301blacklist ${HOME}/.config/mate/eom 304blacklist ${HOME}/.config/mate/eom
302blacklist ${HOME}/.config/mate/mate-dictionary 305blacklist ${HOME}/.config/mate/mate-dictionary
306blacklist ${HOME}/.config/matrix-mirage
303blacklist ${HOME}/.config/meld 307blacklist ${HOME}/.config/meld
304blacklist ${HOME}/.config/meteo-qt 308blacklist ${HOME}/.config/meteo-qt
305blacklist ${HOME}/.config/menulibre.cfg 309blacklist ${HOME}/.config/menulibre.cfg
306blacklist ${HOME}/.config/mfusion 310blacklist ${HOME}/.config/mfusion
307blacklist ${HOME}/.config/Microsoft 311blacklist ${HOME}/.config/Microsoft
312blacklist ${HOME}/.config/microsoft-edge-dev
308blacklist ${HOME}/.config/midori 313blacklist ${HOME}/.config/midori
309blacklist ${HOME}/.config/mirage 314blacklist ${HOME}/.config/mirage
310blacklist ${HOME}/.config/mono 315blacklist ${HOME}/.config/mono
@@ -378,6 +383,7 @@ blacklist ${HOME}/.config/spotify
378blacklist ${HOME}/.config/sqlitebrowser 383blacklist ${HOME}/.config/sqlitebrowser
379blacklist ${HOME}/.config/stellarium 384blacklist ${HOME}/.config/stellarium
380blacklist ${HOME}/.config/strawberry 385blacklist ${HOME}/.config/strawberry
386blacklist ${HOME}/.config/straw-viewer
381blacklist ${HOME}/.config/supertuxkart 387blacklist ${HOME}/.config/supertuxkart
382blacklist ${HOME}/.config/synfig 388blacklist ${HOME}/.config/synfig
383blacklist ${HOME}/.config/teams 389blacklist ${HOME}/.config/teams
@@ -427,6 +433,7 @@ blacklist ${HOME}/.config/Zulip
427blacklist ${HOME}/.conkeror.mozdev.org 433blacklist ${HOME}/.conkeror.mozdev.org
428blacklist ${HOME}/.crawl 434blacklist ${HOME}/.crawl
429blacklist ${HOME}/.cups 435blacklist ${HOME}/.cups
436blacklist ${HOME}/.curl-hsts
430blacklist ${HOME}/.curlrc 437blacklist ${HOME}/.curlrc
431blacklist ${HOME}/.dashcore 438blacklist ${HOME}/.dashcore
432blacklist ${HOME}/.devilspie 439blacklist ${HOME}/.devilspie
@@ -549,6 +556,7 @@ blacklist ${HOME}/.kino-history
549blacklist ${HOME}/.kinorc 556blacklist ${HOME}/.kinorc
550blacklist ${HOME}/.klatexformula 557blacklist ${HOME}/.klatexformula
551blacklist ${HOME}/.kodi 558blacklist ${HOME}/.kodi
559blacklist ${HOME}/.librewolf
552blacklist ${HOME}/.lincity-ng 560blacklist ${HOME}/.lincity-ng
553blacklist ${HOME}/.links 561blacklist ${HOME}/.links
554blacklist ${HOME}/.linphone-history.db 562blacklist ${HOME}/.linphone-history.db
@@ -584,6 +592,7 @@ blacklist ${HOME}/.local/share/agenda
584blacklist ${HOME}/.local/share/apps/korganizer 592blacklist ${HOME}/.local/share/apps/korganizer
585blacklist ${HOME}/.local/share/aspyr-media 593blacklist ${HOME}/.local/share/aspyr-media
586blacklist ${HOME}/.local/share/autokey 594blacklist ${HOME}/.local/share/autokey
595blacklist ${HOME}/.local/share/authenticator-rs
587blacklist ${HOME}/.local/share/backintime 596blacklist ${HOME}/.local/share/backintime
588blacklist ${HOME}/.local/share/baloo 597blacklist ${HOME}/.local/share/baloo
589blacklist ${HOME}/.local/share/barrier 598blacklist ${HOME}/.local/share/barrier
@@ -603,6 +612,7 @@ blacklist ${HOME}/.local/share/data/nomacs
603blacklist ${HOME}/.local/share/data/qBittorrent 612blacklist ${HOME}/.local/share/data/qBittorrent
604blacklist ${HOME}/.local/share/dino 613blacklist ${HOME}/.local/share/dino
605blacklist ${HOME}/.local/share/dolphin 614blacklist ${HOME}/.local/share/dolphin
615blacklist ${HOME}/.local/share/dolphin-emu
606blacklist ${HOME}/.local/share/emailidentities 616blacklist ${HOME}/.local/share/emailidentities
607blacklist ${HOME}/.local/share/epiphany 617blacklist ${HOME}/.local/share/epiphany
608blacklist ${HOME}/.local/share/evolution 618blacklist ${HOME}/.local/share/evolution
@@ -661,8 +671,10 @@ blacklist ${HOME}/.local/share/local-mail
661blacklist ${HOME}/.local/share/lollypop 671blacklist ${HOME}/.local/share/lollypop
662blacklist ${HOME}/.local/share/love 672blacklist ${HOME}/.local/share/love
663blacklist ${HOME}/.local/share/lugaru 673blacklist ${HOME}/.local/share/lugaru
674blacklist ${HOME}/.local/share/lutris
664blacklist ${HOME}/.local/share/mana 675blacklist ${HOME}/.local/share/mana
665blacklist ${HOME}/.local/share/maps-places.json 676blacklist ${HOME}/.local/share/maps-places.json
677blacklist ${HOME}/.local/share/matrix-mirage
666blacklist ${HOME}/.local/share/meld 678blacklist ${HOME}/.local/share/meld
667blacklist ${HOME}/.local/share/midori 679blacklist ${HOME}/.local/share/midori
668blacklist ${HOME}/.local/share/mirage 680blacklist ${HOME}/.local/share/mirage
@@ -793,7 +805,7 @@ blacklist ${HOME}/.synfig
793blacklist ${HOME}/.tb 805blacklist ${HOME}/.tb
794blacklist ${HOME}/.tconn 806blacklist ${HOME}/.tconn
795blacklist ${HOME}/.teeworlds 807blacklist ${HOME}/.teeworlds
796blacklist ${HOME}/.texlive2018 808blacklist ${HOME}/.texlive20*
797blacklist ${HOME}/.thunderbird 809blacklist ${HOME}/.thunderbird
798blacklist ${HOME}/.tilp 810blacklist ${HOME}/.tilp
799blacklist ${HOME}/.tooling 811blacklist ${HOME}/.tooling
@@ -883,6 +895,7 @@ blacklist ${HOME}/.cache/deja-dup
883blacklist ${HOME}/.cache/discover 895blacklist ${HOME}/.cache/discover
884blacklist ${HOME}/.cache/dnox 896blacklist ${HOME}/.cache/dnox
885blacklist ${HOME}/.cache/dolphin 897blacklist ${HOME}/.cache/dolphin
898blacklist ${HOME}/.cache/dolphin-emu
886blacklist ${HOME}/.cache/ephemeral 899blacklist ${HOME}/.cache/ephemeral
887blacklist ${HOME}/.cache/epiphany 900blacklist ${HOME}/.cache/epiphany
888blacklist ${HOME}/.cache/evolution 901blacklist ${HOME}/.cache/evolution
@@ -931,8 +944,12 @@ blacklist ${HOME}/.cache/ksplashqml
931blacklist ${HOME}/.cache/kube 944blacklist ${HOME}/.cache/kube
932blacklist ${HOME}/.cache/kwin 945blacklist ${HOME}/.cache/kwin
933blacklist ${HOME}/.cache/libgweather 946blacklist ${HOME}/.cache/libgweather
947blacklist ${HOME}/.cache/librewolf
934blacklist ${HOME}/.cache/liferea 948blacklist ${HOME}/.cache/liferea
949blacklist ${HOME}/.cache/lutris
935blacklist ${HOME}/.cache/Mendeley Ltd. 950blacklist ${HOME}/.cache/Mendeley Ltd.
951blacklist ${HOME}/.cache/matrix-mirage
952blacklist ${HOME}/.cache/microsoft-edge-dev
936blacklist ${HOME}/.cache/midori 953blacklist ${HOME}/.cache/midori
937blacklist ${HOME}/.cache/minetest 954blacklist ${HOME}/.cache/minetest
938blacklist ${HOME}/.cache/mirage 955blacklist ${HOME}/.cache/mirage
@@ -948,7 +965,7 @@ blacklist ${HOME}/.cache/ms-skype-online
948blacklist ${HOME}/.cache/ms-word-online 965blacklist ${HOME}/.cache/ms-word-online
949blacklist ${HOME}/.cache/mutt 966blacklist ${HOME}/.cache/mutt
950blacklist ${HOME}/.cache/mypaint 967blacklist ${HOME}/.cache/mypaint
951blacklist ${HOME}/.cache/nheko/nheko 968blacklist ${HOME}/.cache/nheko
952blacklist ${HOME}/.cache/netsurf 969blacklist ${HOME}/.cache/netsurf
953blacklist ${HOME}/.cache/okular 970blacklist ${HOME}/.cache/okular
954blacklist ${HOME}/.cache/opera 971blacklist ${HOME}/.cache/opera
@@ -972,6 +989,7 @@ blacklist ${HOME}/.cache/smuxi
972blacklist ${HOME}/.cache/snox 989blacklist ${HOME}/.cache/snox
973blacklist ${HOME}/.cache/spotify 990blacklist ${HOME}/.cache/spotify
974blacklist ${HOME}/.cache/strawberry 991blacklist ${HOME}/.cache/strawberry
992blacklist ${HOME}/.cache/straw-viewer
975blacklist ${HOME}/.cache/supertuxkart 993blacklist ${HOME}/.cache/supertuxkart
976blacklist ${HOME}/.cache/systemsettings 994blacklist ${HOME}/.cache/systemsettings
977blacklist ${HOME}/.cache/telepathy 995blacklist ${HOME}/.cache/telepathy
@@ -986,6 +1004,7 @@ blacklist ${HOME}/.cache/vmware
986blacklist ${HOME}/.cache/warsow-2.1 1004blacklist ${HOME}/.cache/warsow-2.1
987blacklist ${HOME}/.cache/waterfox 1005blacklist ${HOME}/.cache/waterfox
988blacklist ${HOME}/.cache/wesnoth 1006blacklist ${HOME}/.cache/wesnoth
1007blacklist ${HOME}/.cache/winetricks
989blacklist ${HOME}/.cache/xmms2 1008blacklist ${HOME}/.cache/xmms2
990blacklist ${HOME}/.cache/xreader 1009blacklist ${HOME}/.cache/xreader
991blacklist ${HOME}/.cache/yandex-browser 1010blacklist ${HOME}/.cache/yandex-browser
diff --git a/etc/inc/disable-shell.inc b/etc/inc/disable-shell.inc
index e66d23c9f..8274b0215 100644
--- a/etc/inc/disable-shell.inc
+++ b/etc/inc/disable-shell.inc
@@ -8,6 +8,7 @@ blacklist ${PATH}/dash
8blacklist ${PATH}/fish 8blacklist ${PATH}/fish
9blacklist ${PATH}/ksh 9blacklist ${PATH}/ksh
10blacklist ${PATH}/mksh 10blacklist ${PATH}/mksh
11blacklist ${PATH}/oksh
11blacklist ${PATH}/sh 12blacklist ${PATH}/sh
12blacklist ${PATH}/tclsh 13blacklist ${PATH}/tclsh
13blacklist ${PATH}/tcsh 14blacklist ${PATH}/tcsh
diff --git a/etc/inc/disable-write-mnt.inc b/etc/inc/disable-write-mnt.inc
index 3990cf760..01f57cb0f 100644
--- a/etc/inc/disable-write-mnt.inc
+++ b/etc/inc/disable-write-mnt.inc
@@ -2,7 +2,7 @@
2# Persistent customizations should go in a .local file. 2# Persistent customizations should go in a .local file.
3include disable-write-mnt.local 3include disable-write-mnt.local
4 4
5read-only /mnt
6read-only /media 5read-only /media
7read-only /run/mount 6read-only /mnt
8read-only /run/media 7read-only /run/media
8read-only /run/mount
diff --git a/etc/inc/whitelist-common.inc b/etc/inc/whitelist-common.inc
index 7ea692607..1d3728521 100644
--- a/etc/inc/whitelist-common.inc
+++ b/etc/inc/whitelist-common.inc
@@ -1,4 +1,5 @@
1# Local customizations come here 1# This file is overwritten during software install.
2# Persistent customizations should go in a .local file.
2include whitelist-common.local 3include whitelist-common.local
3 4
4# common whitelist for all profiles 5# common whitelist for all profiles
diff --git a/etc/inc/whitelist-players.inc b/etc/inc/whitelist-player-common.inc
index 0e473768b..e5bf36804 100644
--- a/etc/inc/whitelist-players.inc
+++ b/etc/inc/whitelist-player-common.inc
@@ -1,5 +1,6 @@
1# Local customizations come here 1# This file is overwritten during software install.
2include whitelist-players.local 2# Persistent customizations should go in a .local file.
3include whitelist-player-common.local
3 4
4# common whitelist for all media players 5# common whitelist for all media players
5 6
diff --git a/etc/inc/whitelist-runuser-common.inc b/etc/inc/whitelist-runuser-common.inc
index 7d9f106ef..0a1030b34 100644
--- a/etc/inc/whitelist-runuser-common.inc
+++ b/etc/inc/whitelist-runuser-common.inc
@@ -1,4 +1,5 @@
1# Local customizations come here 1# This file is overwritten during software install.
2# Persistent customizations should go in a .local file.
2include whitelist-runuser-common.local 3include whitelist-runuser-common.local
3 4
4# common ${RUNUSER} (=/run/user/$UID) whitelist for all profiles 5# common ${RUNUSER} (=/run/user/$UID) whitelist for all profiles
@@ -10,4 +11,5 @@ whitelist ${RUNUSER}/ICEauthority
10whitelist ${RUNUSER}/.mutter-Xwaylandauth.* 11whitelist ${RUNUSER}/.mutter-Xwaylandauth.*
11whitelist ${RUNUSER}/pulse/native 12whitelist ${RUNUSER}/pulse/native
12whitelist ${RUNUSER}/wayland-0 13whitelist ${RUNUSER}/wayland-0
14whitelist ${RUNUSER}/wayland-1
13whitelist ${RUNUSER}/xauth_* 15whitelist ${RUNUSER}/xauth_*
diff --git a/etc/inc/whitelist-usr-share-common.inc b/etc/inc/whitelist-usr-share-common.inc
index de4ae2101..45e988602 100644
--- a/etc/inc/whitelist-usr-share-common.inc
+++ b/etc/inc/whitelist-usr-share-common.inc
@@ -1,4 +1,5 @@
1# Local customizations come here 1# This file is overwritten during software install.
2# Persistent customizations should go in a .local file.
2include whitelist-usr-share-common.local 3include whitelist-usr-share-common.local
3 4
4# common /usr/share whitelist for all profiles 5# common /usr/share whitelist for all profiles
@@ -60,6 +61,8 @@ whitelist /usr/share/texlive
60whitelist /usr/share/texmf 61whitelist /usr/share/texmf
61whitelist /usr/share/themes 62whitelist /usr/share/themes
62whitelist /usr/share/thumbnail.so 63whitelist /usr/share/thumbnail.so
64whitelist /usr/share/vulkan
63whitelist /usr/share/X11 65whitelist /usr/share/X11
64whitelist /usr/share/xml 66whitelist /usr/share/xml
67whitelist /usr/share/zenity
65whitelist /usr/share/zoneinfo 68whitelist /usr/share/zoneinfo
diff --git a/etc/inc/whitelist-var-common.inc b/etc/inc/whitelist-var-common.inc
index 08bd23d6a..1c077b232 100644
--- a/etc/inc/whitelist-var-common.inc
+++ b/etc/inc/whitelist-var-common.inc
@@ -1,4 +1,5 @@
1# Local customizations come here 1# This file is overwritten during software install.
2# Persistent customizations should go in a .local file.
2include whitelist-var-common.local 3include whitelist-var-common.local
3 4
4# common /var whitelist for all profiles 5# common /var whitelist for all profiles
diff --git a/etc/profile-a-l/7z.profile b/etc/profile-a-l/7z.profile
index 02a2e7ea0..5e1c17b28 100644
--- a/etc/profile-a-l/7z.profile
+++ b/etc/profile-a-l/7z.profile
@@ -7,41 +7,6 @@ include 7z.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-* 10noblacklist ${PATH}/bash
11 11noblacklist ${PATH}/sh
12include disable-common.inc 12include archiver-common.inc
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-passwdmgr.inc
17include disable-programs.inc
18
19apparmor
20caps.drop all
21hostname 7z
22ipc-namespace
23machine-id
24net none
25no3d
26nodvd
27#nogroups
28nonewprivs
29#noroot
30nosound
31notv
32nou2f
33novideo
34protocol unix
35seccomp
36shell none
37tracelog
38x11 none
39
40#private-bin 7z,7z*,p7zip
41private-cache
42private-dev
43
44dbus-user none
45dbus-system none
46
47memory-deny-write-execute
diff --git a/etc/profile-a-l/alacarte.profile b/etc/profile-a-l/alacarte.profile
new file mode 100644
index 000000000..98188d2a7
--- /dev/null
+++ b/etc/profile-a-l/alacarte.profile
@@ -0,0 +1,64 @@
1# Firejail profile for alacarte
2# Description: Create desktop and menu launchers easily
3# This file is overwritten after every install/update
4# Persistent local customizations
5include alacarte.local
6# Persistent global definitions
7include globals.local
8
9include allow-python2.inc
10include allow-python3.inc
11
12include disable-common.inc
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-programs.inc
17include disable-passwdmgr.inc
18include disable-xdg.inc
19
20# Whitelist your system icon directory,varies by distro
21whitelist /usr/share/alacarte
22whitelist /usr/share/app-info
23whitelist /usr/share/desktop-directories
24whitelist /usr/share/icons
25whitelist /var/lib/app-info/icons
26whitelist /var/lib/flatpak/exports/share/applications
27whitelist /var/lib/flatpak/exports/share/icons
28include whitelist-runuser-common.inc
29include whitelist-usr-share-common.inc
30include whitelist-var-common.inc
31
32apparmor
33caps.drop all
34machine-id
35net none
36nodvd
37no3d
38nogroups
39nonewprivs
40noroot
41nosound
42notv
43nou2f
44novideo
45protocol unix
46seccomp
47seccomp.block-secondary
48shell none
49tracelog
50
51disable-mnt
52# private-bin alacarte,bash,python*,sh
53private-cache
54private-dev
55private-etc alternatives,dconf,fonts,gtk-3.0,locale.alias,locale.conf,login.defs,mime.types,nsswitch.conf,passwd,pki,X11,xdg
56private-tmp
57
58dbus-user none
59dbus-system none
60
61read-write ${HOME}/.config/menus
62read-write ${HOME}/.gnome/apps
63read-write ${HOME}/.local/share/applications
64read-write ${HOME}/.local/share/flatpak/exports
diff --git a/etc/profile-a-l/ar.profile b/etc/profile-a-l/ar.profile
index 183587ff8..c2b215807 100644
--- a/etc/profile-a-l/ar.profile
+++ b/etc/profile-a-l/ar.profile
@@ -7,42 +7,4 @@ include ar.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-* 10include archiver-common.inc
11
12include disable-common.inc
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-passwdmgr.inc
17include disable-programs.inc
18include disable-shell.inc
19
20apparmor
21caps.drop all
22hostname ar
23ipc-namespace
24machine-id
25net none
26no3d
27nodvd
28nogroups
29nonewprivs
30#noroot
31nosound
32notv
33nou2f
34novideo
35protocol unix
36seccomp
37shell none
38tracelog
39x11 none
40
41private-bin ar
42private-cache
43private-dev
44
45dbus-user none
46dbus-system none
47
48memory-deny-write-execute
diff --git a/etc/profile-a-l/atom.profile b/etc/profile-a-l/atom.profile
index cf0a5a42b..f21a5febf 100644
--- a/etc/profile-a-l/atom.profile
+++ b/etc/profile-a-l/atom.profile
@@ -6,31 +6,27 @@ include atom.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# Disabled until someone reported positive feedback
10ignore include disable-devel.inc
11ignore include disable-interpreters.inc
12ignore include disable-xdg.inc
13ignore whitelist ${DOWNLOADS}
14ignore include whitelist-common.inc
15ignore include whitelist-runuser-common.inc
16ignore include whitelist-usr-share-common.inc
17ignore include whitelist-var-common.inc
18ignore apparmor
19ignore disable-mnt
20
9noblacklist ${HOME}/.atom 21noblacklist ${HOME}/.atom
10noblacklist ${HOME}/.config/Atom 22noblacklist ${HOME}/.config/Atom
11 23
12# Allows files commonly used by IDEs 24# Allows files commonly used by IDEs
13include allow-common-devel.inc 25include allow-common-devel.inc
14 26
15include disable-common.inc
16include disable-exec.inc
17include disable-passwdmgr.inc
18include disable-programs.inc
19
20caps.keep sys_admin,sys_chroot
21# net none 27# net none
22netfilter 28netfilter
23nodvd
24nogroups
25nosound 29nosound
26notv
27nou2f
28novideo
29shell none
30
31private-cache
32private-dev
33private-tmp
34 30
35dbus-user none 31# Redirect
36dbus-system none 32include electron.profile
diff --git a/etc/profile-a-l/atool.profile b/etc/profile-a-l/atool.profile
index e501e956c..34af47df2 100644
--- a/etc/profile-a-l/atool.profile
+++ b/etc/profile-a-l/atool.profile
@@ -7,47 +7,12 @@ include atool.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11
12# Allow perl (blacklisted by disable-interpreters.inc) 10# Allow perl (blacklisted by disable-interpreters.inc)
13include allow-perl.inc 11include allow-perl.inc
12include archiver-common.inc
14 13
15include disable-common.inc
16# include disable-devel.inc
17include disable-exec.inc
18include disable-interpreters.inc
19include disable-passwdmgr.inc
20include disable-programs.inc
21
22apparmor
23caps.drop all
24hostname atool
25ipc-namespace
26machine-id
27net none
28no3d
29nodvd
30nogroups
31nonewprivs
32noroot 14noroot
33nosound
34notv
35nou2f
36novideo
37protocol unix
38seccomp
39shell none
40tracelog
41x11 none
42 15
43# private-bin atool,perl
44private-cache
45private-dev
46# without login.defs atool complains and uses UID/GID 1000 by default 16# without login.defs atool complains and uses UID/GID 1000 by default
47private-etc alternatives,group,login.defs,passwd 17private-etc alternatives,group,login.defs,passwd
48private-tmp 18private-tmp
49
50dbus-user none
51dbus-system none
52
53memory-deny-write-execute
diff --git a/etc/profile-a-l/authenticator-rs.profile b/etc/profile-a-l/authenticator-rs.profile
new file mode 100644
index 000000000..fb12018f5
--- /dev/null
+++ b/etc/profile-a-l/authenticator-rs.profile
@@ -0,0 +1,55 @@
1# Firejail profile for authenticator-rs
2# Description: Rust based 2FA authentication program
3# This file is overwritten after every install/update
4# Persistent local customizations
5include authenticator-rs.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.local/share/authenticator-rs
10
11include disable-common.inc
12include disable-devel.inc
13include disable-exec.inc
14include disable-interpreters.inc
15include disable-passwdmgr.inc
16include disable-programs.inc
17include disable-shell.inc
18include disable-xdg.inc
19
20mkdir ${HOME}/.local/share/authenticator-rs
21whitelist ${HOME}/.local/share/authenticator-rs
22whitelist ${DOWNLOADS}
23whitelist /usr/share/uk.co.grumlimited.authenticator-rs
24include whitelist-common.inc
25include whitelist-runuser-common.inc
26include whitelist-usr-share-common.inc
27include whitelist-var-common.inc
28
29apparmor
30caps.drop all
31netfilter
32no3d
33nodvd
34nogroups
35nonewprivs
36noroot
37nosound
38notv
39nou2f
40novideo
41protocol unix,inet,inet6
42seccomp
43shell none
44tracelog
45
46disable-mnt
47private-bin authenticator-rs
48private-cache
49private-dev
50private-etc alternatives,ca-certificates,crypto-policies,dconf,fonts,gtk-2.0,gtk-3.0,pki,resolv.conf,ssl,xdg
51private-tmp
52
53dbus-user filter
54dbus-user.talk ca.desrt.dconf
55dbus-system none
diff --git a/etc/profile-a-l/balsa.profile b/etc/profile-a-l/balsa.profile
index a401ac592..cda6b1aa0 100644
--- a/etc/profile-a-l/balsa.profile
+++ b/etc/profile-a-l/balsa.profile
@@ -58,7 +58,7 @@ shell none
58tracelog 58tracelog
59 59
60# disable-mnt 60# 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 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
62# Add "ignore private-bin" for hyperlinks or have a look at the private-bins in firefox.profile and firefox-common.profile. 62# 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 63private-bin balsa,balsa-ab
64private-cache 64private-cache
diff --git a/etc/profile-a-l/beaker.profile b/etc/profile-a-l/beaker.profile
index cc1886a49..f3a9568bd 100644
--- a/etc/profile-a-l/beaker.profile
+++ b/etc/profile-a-l/beaker.profile
@@ -3,17 +3,26 @@
3# Persistent local customizations 3# Persistent local customizations
4include beaker.local 4include beaker.local
5# Persistent global definitions 5# Persistent global definitions
6# added by included profile 6include globals.local
7#include globals.local
8 7
9noblacklist ${HOME}/.config/Beaker Browser 8# Disabled until someone reported positive feedback
9ignore include disable-exec.inc
10ignore include disable-xdg.inc
11ignore include whitelist-runuser-common.inc
12ignore include whitelist-usr-share-common.inc
13ignore include whitelist-var-common.inc
14ignore nou2f
15ignore novideo
16ignore shell none
17ignore disable-mnt
18ignore private-cache
19ignore private-dev
20ignore private-tmp
10 21
11include disable-devel.inc 22noblacklist ${HOME}/.config/Beaker Browser
12include disable-interpreters.inc
13 23
14mkdir ${HOME}/.config/Beaker Browser 24mkdir ${HOME}/.config/Beaker Browser
15whitelist ${HOME}/.config/Beaker Browser 25whitelist ${HOME}/.config/Beaker Browser
16include whitelist-common.inc
17 26
18# Redirect 27# Redirect
19include electron.profile 28include electron.profile
diff --git a/etc/profile-a-l/brave.profile b/etc/profile-a-l/brave.profile
index 904d3e94f..5a5e9eacd 100644
--- a/etc/profile-a-l/brave.profile
+++ b/etc/profile-a-l/brave.profile
@@ -10,10 +10,6 @@ include globals.local
10ignore noexec /tmp 10ignore noexec /tmp
11# TOR is installed in ${HOME} 11# TOR is installed in ${HOME}
12ignore noexec ${HOME} 12ignore noexec ${HOME}
13# Disable for now, see https://github.com/netblue30/firejail/pull/3688#issuecomment-718711565
14ignore whitelist /usr/share/chromium
15ignore include whitelist-runuser-common.inc
16ignore include whitelist-usr-share-common.inc
17 13
18noblacklist ${HOME}/.cache/BraveSoftware 14noblacklist ${HOME}/.cache/BraveSoftware
19noblacklist ${HOME}/.config/BraveSoftware 15noblacklist ${HOME}/.config/BraveSoftware
diff --git a/etc/profile-a-l/bsdtar.profile b/etc/profile-a-l/bsdtar.profile
index 08e51f3c1..c37f4071e 100644
--- a/etc/profile-a-l/bsdtar.profile
+++ b/etc/profile-a-l/bsdtar.profile
@@ -6,43 +6,6 @@ include bsdtar.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9blacklist ${RUNUSER}/wayland-* 9include archiver-common.inc
10 10
11include disable-common.inc
12# include disable-devel.inc
13include disable-exec.inc
14include disable-interpreters.inc
15include disable-passwdmgr.inc
16include disable-programs.inc
17
18apparmor
19caps.drop all
20hostname bsdtar
21ipc-namespace
22machine-id
23net none
24no3d
25nodvd
26nogroups
27nonewprivs
28# noroot
29nosound
30notv
31nou2f
32novideo
33protocol unix
34seccomp
35shell none
36tracelog
37x11 none
38
39# support compressed archives
40private-bin bash,bsdcat,bsdcpio,bsdtar,bzip2,compress,gtar,gzip,lbzip2,libarchive,lz4,lzip,lzma,lzop,sh,xz
41private-cache
42private-dev
43private-etc alternatives,group,localtime,passwd 11private-etc alternatives,group,localtime,passwd
44
45dbus-user none
46dbus-system none
47
48memory-deny-write-execute
diff --git a/etc/profile-a-l/celluloid.profile b/etc/profile-a-l/celluloid.profile
index 56709a466..d379651c7 100644
--- a/etc/profile-a-l/celluloid.profile
+++ b/etc/profile-a-l/celluloid.profile
@@ -32,7 +32,7 @@ whitelist ${HOME}/.config/celluloid
32whitelist ${HOME}/.config/gnome-mpv 32whitelist ${HOME}/.config/gnome-mpv
33whitelist ${HOME}/.config/youtube-dl 33whitelist ${HOME}/.config/youtube-dl
34include whitelist-common.inc 34include whitelist-common.inc
35include whitelist-players.inc 35include whitelist-player-common.inc
36include whitelist-runuser-common.inc 36include whitelist-runuser-common.inc
37include whitelist-usr-share-common.inc 37include whitelist-usr-share-common.inc
38include whitelist-var-common.inc 38include whitelist-var-common.inc
diff --git a/etc/profile-a-l/chromium-common.profile b/etc/profile-a-l/chromium-common.profile
index 6a9cf99b0..ce9c652c6 100644
--- a/etc/profile-a-l/chromium-common.profile
+++ b/etc/profile-a-l/chromium-common.profile
@@ -25,7 +25,6 @@ mkdir ${HOME}/.local/share/pki
25whitelist ${DOWNLOADS} 25whitelist ${DOWNLOADS}
26whitelist ${HOME}/.pki 26whitelist ${HOME}/.pki
27whitelist ${HOME}/.local/share/pki 27whitelist ${HOME}/.local/share/pki
28whitelist /usr/share/chromium
29include whitelist-common.inc 28include whitelist-common.inc
30include whitelist-runuser-common.inc 29include whitelist-runuser-common.inc
31include whitelist-usr-share-common.inc 30include whitelist-usr-share-common.inc
diff --git a/etc/profile-a-l/chromium.profile b/etc/profile-a-l/chromium.profile
index dab9ce449..14f1bbe64 100644
--- a/etc/profile-a-l/chromium.profile
+++ b/etc/profile-a-l/chromium.profile
@@ -15,6 +15,7 @@ mkdir ${HOME}/.config/chromium
15whitelist ${HOME}/.cache/chromium 15whitelist ${HOME}/.cache/chromium
16whitelist ${HOME}/.config/chromium 16whitelist ${HOME}/.config/chromium
17whitelist ${HOME}/.config/chromium-flags.conf 17whitelist ${HOME}/.config/chromium-flags.conf
18whitelist /usr/share/chromium
18 19
19# private-bin chromium,chromium-browser,chromedriver 20# private-bin chromium,chromium-browser,chromedriver
20 21
diff --git a/etc/profile-a-l/com.github.bleakgrey.tootle.profile b/etc/profile-a-l/com.github.bleakgrey.tootle.profile
new file mode 100644
index 000000000..4de7eb497
--- /dev/null
+++ b/etc/profile-a-l/com.github.bleakgrey.tootle.profile
@@ -0,0 +1,55 @@
1# Firejail profile for com.github.bleakgrey.tootle
2# Description: Gtk Mastodon client
3# This file is overwritten after every install/update
4# Persistent local customizations
5include com.github.bleakgrey.tootle.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.config/com.github.bleakgrey.tootle
10
11include disable-common.inc
12include disable-devel.inc
13include disable-exec.inc
14include disable-interpreters.inc
15include disable-passwdmgr.inc
16include disable-programs.inc
17include disable-shell.inc
18include disable-xdg.inc
19
20mkdir ${HOME}/.config/com.github.bleakgrey.tootle
21whitelist ${DOWNLOADS}
22whitelist ${HOME}/.config/com.github.bleakgrey.tootle
23include whitelist-common.inc
24include whitelist-runuser-common.inc
25include whitelist-usr-share-common.inc
26include whitelist-var-common.inc
27
28apparmor
29caps.drop all
30machine-id
31netfilter
32nodvd
33nogroups
34nonewprivs
35noroot
36notv
37nou2f
38novideo
39protocol unix,inet,inet6
40seccomp
41shell none
42tracelog
43
44disable-mnt
45private-bin com.github.bleakgrey.tootle
46private-cache
47private-dev
48private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,dconf,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,machine-id mime.types,nsswitch.conf,pki,pulse,resolv.conf,ssl,X11,xdg
49private-tmp
50
51# Settings are immutable
52# dbus-user filter
53# dbus-user.own com.github.bleakgrey.tootle
54# dbus-user.talk ca.desrt.dconf
55dbus-system none
diff --git a/etc/profile-a-l/cower.profile b/etc/profile-a-l/cower.profile
index 0ab5a7f78..2c6b15e02 100644
--- a/etc/profile-a-l/cower.profile
+++ b/etc/profile-a-l/cower.profile
@@ -46,5 +46,4 @@ private-dev
46private-tmp 46private-tmp
47 47
48memory-deny-write-execute 48memory-deny-write-execute
49
50read-only ${HOME}/.config/cower/config 49read-only ${HOME}/.config/cower/config
diff --git a/etc/profile-a-l/cpio.profile b/etc/profile-a-l/cpio.profile
index 087a5b2bb..785308ffd 100644
--- a/etc/profile-a-l/cpio.profile
+++ b/etc/profile-a-l/cpio.profile
@@ -7,40 +7,7 @@ include cpio.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11
12noblacklist /sbin 10noblacklist /sbin
13noblacklist /usr/sbin 11noblacklist /usr/sbin
14 12
15include disable-common.inc 13include archiver-common.inc
16# include disable-devel.inc
17include disable-exec.inc
18include disable-passwdmgr.inc
19include disable-programs.inc
20
21apparmor
22caps.drop all
23hostname cpio
24ipc-namespace
25machine-id
26net none
27no3d
28nodvd
29nogroups
30nonewprivs
31nosound
32notv
33nou2f
34novideo
35seccomp
36shell none
37tracelog
38x11 none
39
40private-cache
41private-dev
42
43dbus-user none
44dbus-system none
45
46memory-deny-write-execute
diff --git a/etc/profile-a-l/curl.profile b/etc/profile-a-l/curl.profile
index 996ff51d3..f8b194044 100644
--- a/etc/profile-a-l/curl.profile
+++ b/etc/profile-a-l/curl.profile
@@ -7,10 +7,15 @@ include curl.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10# curl 7.74.0 introduces experimental support for HSTS cache
11# https://daniel.haxx.se/blog/2020/11/03/hsts-your-curl/
12# technically this file can be anywhere but let's assume users have it in ${HOME}/.curl-hsts
13# if your setup diverts, add 'blacklist /path/to/curl/hsts/file' to your disable-programs.local
14# and 'noblacklist /path/to/curl/hsts/file' to curl.local to keep the sandbox logic intact
15noblacklist ${HOME}/.curl-hsts
10noblacklist ${HOME}/.curlrc 16noblacklist ${HOME}/.curlrc
11 17
12blacklist /tmp/.X11-unix 18blacklist /tmp/.X11-unix
13blacklist ${RUNUSER}/wayland-*
14blacklist ${RUNUSER} 19blacklist ${RUNUSER}
15 20
16include disable-common.inc 21include disable-common.inc
diff --git a/etc/profile-a-l/default.profile b/etc/profile-a-l/default.profile
index 7eb7660dd..2ecf1a45d 100644
--- a/etc/profile-a-l/default.profile
+++ b/etc/profile-a-l/default.profile
@@ -5,7 +5,7 @@ include default.local
5# Persistent global definitions 5# Persistent global definitions
6include globals.local 6include globals.local
7 7
8# generic gui profile 8# generic GUI profile
9# depending on your usage, you can enable some of the commands below: 9# depending on your usage, you can enable some of the commands below:
10 10
11include disable-common.inc 11include disable-common.inc
@@ -14,12 +14,13 @@ include disable-common.inc
14# include disable-interpreters.inc 14# include disable-interpreters.inc
15include disable-passwdmgr.inc 15include disable-passwdmgr.inc
16include disable-programs.inc 16include disable-programs.inc
17# include disable-shell.inc
17# include disable-write-mnt.inc 18# include disable-write-mnt.inc
18# include disable-xdg.inc 19# include disable-xdg.inc
19 20
20# include whitelist-common.inc 21# include whitelist-common.inc
21# include whitelist-usr-share-common.inc
22# include whitelist-runuser-common.inc 22# include whitelist-runuser-common.inc
23# include whitelist-usr-share-common.inc
23# include whitelist-var-common.inc 24# include whitelist-var-common.inc
24 25
25# apparmor 26# apparmor
diff --git a/etc/profile-a-l/devhelp.profile b/etc/profile-a-l/devhelp.profile
index b8b07469d..a47a71feb 100644
--- a/etc/profile-a-l/devhelp.profile
+++ b/etc/profile-a-l/devhelp.profile
@@ -50,5 +50,4 @@ private-tmp
50# dbus-system none 50# dbus-system none
51 51
52#memory-deny-write-execute - breaks on Arch (see issue #1803) 52#memory-deny-write-execute - breaks on Arch (see issue #1803)
53
54read-only ${HOME} 53read-only ${HOME}
diff --git a/etc/profile-a-l/devilspie.profile b/etc/profile-a-l/devilspie.profile
index 1ab10a6f6..7c3ac50ad 100644
--- a/etc/profile-a-l/devilspie.profile
+++ b/etc/profile-a-l/devilspie.profile
@@ -56,5 +56,4 @@ dbus-user none
56dbus-system none 56dbus-system none
57 57
58memory-deny-write-execute 58memory-deny-write-execute
59
60read-only ${HOME} 59read-only ${HOME}
diff --git a/etc/profile-a-l/dig.profile b/etc/profile-a-l/dig.profile
index 152dfd980..80d97a31f 100644
--- a/etc/profile-a-l/dig.profile
+++ b/etc/profile-a-l/dig.profile
@@ -11,7 +11,6 @@ noblacklist ${HOME}/.digrc
11noblacklist ${PATH}/dig 11noblacklist ${PATH}/dig
12 12
13blacklist /tmp/.X11-unix 13blacklist /tmp/.X11-unix
14blacklist ${RUNUSER}/wayland-*
15blacklist ${RUNUSER} 14blacklist ${RUNUSER}
16 15
17include 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 35bea4aaa..e6edbd7eb 100644
--- a/etc/profile-a-l/discord-common.profile
+++ b/etc/profile-a-l/discord-common.profile
@@ -6,33 +6,24 @@ include discord-common.local
6# added by caller profile 6# added by caller profile
7#include globals.local 7#include globals.local
8 8
9ignore noexec ${HOME} 9# Disabled until someone reported positive feedback
10ignore include disable-interpreters.inc
11ignore include disable-xdg.inc
12ignore include whitelist-runuser-common.inc
13ignore include whitelist-usr-share-common.inc
14ignore apparmor
15ignore disable-mnt
16ignore private-cache
17ignore dbus-user none
18ignore dbus-system none
10 19
11include disable-common.inc 20ignore noexec ${HOME}
12include disable-devel.inc
13include disable-exec.inc
14include disable-passwdmgr.inc
15include disable-programs.inc
16 21
17whitelist ${DOWNLOADS}
18whitelist ${HOME}/.config/BetterDiscord 22whitelist ${HOME}/.config/BetterDiscord
19whitelist ${HOME}/.local/share/betterdiscordctl 23whitelist ${HOME}/.local/share/betterdiscordctl
20include whitelist-common.inc
21include whitelist-var-common.inc
22
23caps.drop all
24netfilter
25nodvd
26nogroups
27nonewprivs
28noroot
29notv
30nou2f
31novideo
32protocol unix,inet,inet6,netlink
33seccomp !chroot
34 24
35private-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
36private-dev
37private-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,resolv.conf,ssl
38private-tmp 27
28# Redirect
29include electron.profile
diff --git a/etc/profile-a-l/dolphin-emu.profile b/etc/profile-a-l/dolphin-emu.profile
new file mode 100644
index 000000000..13d830b55
--- /dev/null
+++ b/etc/profile-a-l/dolphin-emu.profile
@@ -0,0 +1,63 @@
1# Firejail profile for dolphin-emu
2# Description: An emulator for Gamecube and Wii games
3# This file is overwritten after every install/update
4# Persistent local customizations
5include dolphin-emu.local
6# Persistent global definitions
7include globals.local
8
9# Note: you must whitelist your games folder in a dolphin-emu.local
10
11noblacklist ${HOME}/.cache/dolphin-emu
12noblacklist ${HOME}/.config/dolphin-emu
13noblacklist ${HOME}/.local/share/dolphin-emu
14
15include disable-common.inc
16include disable-devel.inc
17include disable-exec.inc
18include disable-interpreters.inc
19include disable-passwdmgr.inc
20include disable-programs.inc
21include disable-xdg.inc
22
23mkdir ${HOME}/.cache/dolphin-emu
24mkdir ${HOME}/.config/dolphin-emu
25mkdir ${HOME}/.local/share/dolphin-emu
26whitelist ${HOME}/.cache/dolphin-emu
27whitelist ${HOME}/.config/dolphin-emu
28whitelist ${HOME}/.local/share/dolphin-emu
29whitelist /usr/share/dolphin-emu
30include whitelist-common.inc
31include whitelist-runuser-common.inc
32include whitelist-usr-share-common.inc
33include whitelist-var-common.inc
34
35apparmor
36caps.drop all
37ipc-namespace
38# uncomment the following line if you do not need NetPlay support
39# net none
40netfilter
41# uncomment the following line if you do not need disc support
42#nodvd
43nogroups
44nonewprivs
45noroot
46notv
47nou2f
48novideo
49protocol unix,inet,inet6,netlink,bluetooth
50seccomp
51shell none
52tracelog
53
54private-bin bash,dolphin-emu,dolphin-emu-x11,sh
55private-cache
56# uncomment the following line if you do not need controller support
57#private-dev
58private-etc alsa,alternatives,asound.conf,bumblebee,ca-certificates,crypto-policies,dconf,drirc,fonts,gconf,glvnd,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,kde4rc,kde5rc,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,localtime,machine-id,mime.types,nsswitch.conf,nvidia,pango,pki,protocols,pulse,resolv.conf,rpc,services,ssl,Trolltech.conf,X11,xdg
59private-opt none
60private-tmp
61
62dbus-user none
63dbus-system none
diff --git a/etc/profile-a-l/drill.profile b/etc/profile-a-l/drill.profile
new file mode 100644
index 000000000..07f47be5d
--- /dev/null
+++ b/etc/profile-a-l/drill.profile
@@ -0,0 +1,55 @@
1# Firejail profile for drill
2# Description: DNS lookup utility
3# This file is overwritten after every install/update
4quiet
5# Persistent local customizations
6include drill.local
7# Persistent global definitions
8include globals.local
9
10noblacklist ${PATH}/drill
11
12blacklist /tmp/.X11-unix
13blacklist ${RUNUSER}
14
15include disable-common.inc
16# include disable-devel.inc
17include disable-exec.inc
18# include disable-interpreters.inc
19include disable-passwdmgr.inc
20include disable-programs.inc
21include disable-xdg.inc
22
23include whitelist-common.inc
24include whitelist-usr-share-common.inc
25include whitelist-var-common.inc
26
27apparmor
28caps.drop all
29ipc-namespace
30machine-id
31netfilter
32no3d
33nodvd
34nogroups
35nonewprivs
36noroot
37nosound
38notv
39nou2f
40novideo
41protocol unix,inet,inet6
42seccomp
43shell none
44tracelog
45
46disable-mnt
47private
48private-bin bash,drill,sh
49private-dev
50private-tmp
51
52dbus-user none
53dbus-system none
54
55memory-deny-write-execute
diff --git a/etc/profile-a-l/electron.profile b/etc/profile-a-l/electron.profile
index 9b99c7ffb..d3be07c9d 100644
--- a/etc/profile-a-l/electron.profile
+++ b/etc/profile-a-l/electron.profile
@@ -3,25 +3,39 @@
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include electron.local 5include electron.local
6# Persistent global definitions
7include globals.local
8 6
9include disable-common.inc 7include disable-common.inc
8include disable-devel.inc
9include disable-exec.inc
10include disable-interpreters.inc
10include disable-passwdmgr.inc 11include disable-passwdmgr.inc
11include disable-programs.inc 12include disable-programs.inc
13include disable-xdg.inc
12 14
13whitelist ${DOWNLOADS} 15whitelist ${DOWNLOADS}
16include whitelist-common.inc
17include whitelist-runuser-common.inc
18include whitelist-usr-share-common.inc
19include whitelist-var-common.inc
20
21# Uncomment the next line (or add it to your chromium-common.local)
22# if your kernel allows unprivileged userns clone.
23#include chromium-common-hardened.inc
14 24
15apparmor 25apparmor
16caps.drop all 26caps.keep sys_admin,sys_chroot
17netfilter 27netfilter
18nodvd 28nodvd
19nogroups 29nogroups
20nonewprivs
21noroot
22notv 30notv
23protocol unix,inet,inet6,netlink 31nou2f
24seccomp 32novideo
33shell none
34
35disable-mnt
36private-cache
37private-dev
38private-tmp
25 39
26dbus-user none 40dbus-user none
27dbus-system none 41dbus-system none
diff --git a/etc/profile-a-l/element-desktop.profile b/etc/profile-a-l/element-desktop.profile
index c1aa821e3..48a826f2e 100644
--- a/etc/profile-a-l/element-desktop.profile
+++ b/etc/profile-a-l/element-desktop.profile
@@ -7,16 +7,18 @@ include element-desktop.local
7# added by included profile 7# added by included profile
8#include globals.local 8#include globals.local
9 9
10ignore dbus-user none
11
10noblacklist ${HOME}/.config/Element 12noblacklist ${HOME}/.config/Element
11noblacklist ${HOME}/.config/Element (Riot)
12 13
13mkdir ${HOME}/.config/Element 14mkdir ${HOME}/.config/Element
14mkdir ${HOME}/.config/Element (Riot)
15whitelist ${HOME}/.config/Element 15whitelist ${HOME}/.config/Element
16whitelist ${HOME}/.config/Element (Riot)
17whitelist /opt/Element 16whitelist /opt/Element
18 17
19private-opt Element 18private-opt Element
20 19
20dbus-user filter
21dbus-user.talk org.freedesktop.secrets
22
21# Redirect 23# Redirect
22include riot-desktop.profile 24include riot-desktop.profile
diff --git a/etc/profile-a-l/falkon.profile b/etc/profile-a-l/falkon.profile
index 0024b6660..640b0e485 100644
--- a/etc/profile-a-l/falkon.profile
+++ b/etc/profile-a-l/falkon.profile
@@ -15,15 +15,20 @@ include disable-exec.inc
15include disable-interpreters.inc 15include disable-interpreters.inc
16include disable-passwdmgr.inc 16include disable-passwdmgr.inc
17include disable-programs.inc 17include disable-programs.inc
18include disable-xdg.inc
18 19
19mkdir ${HOME}/.cache/falkon 20mkdir ${HOME}/.cache/falkon
20mkdir ${HOME}/.config/falkon 21mkdir ${HOME}/.config/falkon
21whitelist ${DOWNLOADS} 22whitelist ${DOWNLOADS}
22whitelist ${HOME}/.cache/falkon 23whitelist ${HOME}/.cache/falkon
23whitelist ${HOME}/.config/falkon 24whitelist ${HOME}/.config/falkon
25whitelist /usr/share/falkon
24include whitelist-common.inc 26include whitelist-common.inc
27include whitelist-runuser-common.inc
28include whitelist-usr-share-common.inc
25include whitelist-var-common.inc 29include whitelist-var-common.inc
26 30
31apparmor
27caps.drop all 32caps.drop all
28netfilter 33netfilter
29nodvd 34nodvd
@@ -37,7 +42,13 @@ protocol unix,inet,inet6,netlink
37seccomp !chroot 42seccomp !chroot
38# tracelog 43# tracelog
39 44
45disable-mnt
46# private-bin falkon
47private-cache
40private-dev 48private-dev
41# private-etc alternatives,passwd,group,hostname,hosts,localtime,nsswitch.conf,resolv.conf,gtk-2.0,pango,fonts,adobe,mime.types,mailcap,asound.conf,pulse,machine-id,ca-certificates,ssl,pki,crypto-policies 49private-etc adobe,alternatives,asound.conf,ati,ca-certificates,crypto-policies,dconf,drirc,fonts,group,gtk-2.0,gtk-3.0,hostname,hosts,localtime,machine-id,mailcap,mime.types,nsswitch.conf,pango,passwd,pki,pulse,resolv.conf,selinux,ssl,xdg
42# private-tmp - interferes with the opening of downloaded files 50private-tmp
43 51
52# dbus-user filter
53# dbus-user.own org.kde.Falkon
54dbus-system none
diff --git a/etc/profile-a-l/feh.profile b/etc/profile-a-l/feh.profile
index 3ee07e559..8ac7755de 100644
--- a/etc/profile-a-l/feh.profile
+++ b/etc/profile-a-l/feh.profile
@@ -1,6 +1,7 @@
1# Firejail profile for feh 1# Firejail profile for feh
2# Description: imlib2 based image viewer 2# Description: imlib2 based image viewer
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4quiet
4# Persistent local customizations 5# Persistent local customizations
5include feh.local 6include feh.local
6# Persistent global definitions 7# Persistent global definitions
diff --git a/etc/profile-a-l/file.profile b/etc/profile-a-l/file.profile
index 74620d4cd..c02f9e3de 100644
--- a/etc/profile-a-l/file.profile
+++ b/etc/profile-a-l/file.profile
@@ -7,7 +7,6 @@ include file.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11blacklist ${RUNUSER} 10blacklist ${RUNUSER}
12 11
13include disable-common.inc 12include disable-common.inc
diff --git a/etc/profile-a-l/firefox.profile b/etc/profile-a-l/firefox.profile
index 3472ac5c4..772aad7da 100644
--- a/etc/profile-a-l/firefox.profile
+++ b/etc/profile-a-l/firefox.profile
@@ -16,6 +16,7 @@ whitelist ${HOME}/.mozilla
16 16
17whitelist /usr/share/doc 17whitelist /usr/share/doc
18whitelist /usr/share/firefox 18whitelist /usr/share/firefox
19whitelist /usr/share/gnome-shell/search-providers/firefox-search-provider.ini
19whitelist /usr/share/gtk-doc/html 20whitelist /usr/share/gtk-doc/html
20whitelist /usr/share/mozilla 21whitelist /usr/share/mozilla
21whitelist /usr/share/webext 22whitelist /usr/share/webext
@@ -29,6 +30,7 @@ include whitelist-usr-share-common.inc
29#private-etc firefox 30#private-etc firefox
30 31
31dbus-user filter 32dbus-user filter
33dbus-user.own org.mozilla.Firefox.*
32dbus-user.own org.mozilla.firefox.* 34dbus-user.own org.mozilla.firefox.*
33dbus-user.own org.mpris.MediaPlayer2.firefox.* 35dbus-user.own org.mpris.MediaPlayer2.firefox.*
34# Uncomment or put in your firefox.local to enable native notifications. 36# Uncomment or put in your firefox.local to enable native notifications.
diff --git a/etc/profile-a-l/fractal.profile b/etc/profile-a-l/fractal.profile
index ab907eb0d..c3af29e15 100644
--- a/etc/profile-a-l/fractal.profile
+++ b/etc/profile-a-l/fractal.profile
@@ -1,5 +1,5 @@
1# Firejail profile for fractal 1# Firejail profile for fractal
2# Description: Desktop client for Matrix 2# Description: Desktop client for Matrix
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include fractal.local 5include fractal.local
@@ -21,7 +21,7 @@ mkdir ${HOME}/.cache/fractal
21whitelist ${HOME}/.cache/fractal 21whitelist ${HOME}/.cache/fractal
22whitelist ${DOWNLOADS} 22whitelist ${DOWNLOADS}
23include whitelist-common.inc 23include whitelist-common.inc
24include whitelist-runuser-common.inc 24include whitelist-runuser-common.inc
25include whitelist-usr-share-common.inc 25include whitelist-usr-share-common.inc
26include whitelist-var-common.inc 26include whitelist-var-common.inc
27 27
diff --git a/etc/profile-a-l/freeoffice-planmaker.profile b/etc/profile-a-l/freeoffice-planmaker.profile
index 9449e7c48..b6ca167eb 100644
--- a/etc/profile-a-l/freeoffice-planmaker.profile
+++ b/etc/profile-a-l/freeoffice-planmaker.profile
@@ -7,4 +7,4 @@ include freeoffice-planmaker.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
diff --git a/etc/profile-a-l/freeoffice-presentations.profile b/etc/profile-a-l/freeoffice-presentations.profile
index 636868e2e..43661028c 100644
--- a/etc/profile-a-l/freeoffice-presentations.profile
+++ b/etc/profile-a-l/freeoffice-presentations.profile
@@ -7,4 +7,4 @@ include freeoffice-presentations.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
diff --git a/etc/profile-a-l/freeoffice-textmaker.profile b/etc/profile-a-l/freeoffice-textmaker.profile
index 5d98d1cc6..f7d30eaed 100644
--- a/etc/profile-a-l/freeoffice-textmaker.profile
+++ b/etc/profile-a-l/freeoffice-textmaker.profile
@@ -6,4 +6,4 @@ include freeoffice-textmaker.local
6include globals.local 6include globals.local
7 7
8# Redirect 8# Redirect
9include softmaker-common.inc 9include softmaker-common.profile
diff --git a/etc/profile-a-l/freetube.profile b/etc/profile-a-l/freetube.profile
index 91f0caf87..e6aff533d 100644
--- a/etc/profile-a-l/freetube.profile
+++ b/etc/profile-a-l/freetube.profile
@@ -8,24 +8,13 @@ include globals.local
8 8
9noblacklist ${HOME}/.config/FreeTube 9noblacklist ${HOME}/.config/FreeTube
10 10
11include disable-devel.inc 11include disable-shell.inc
12include disable-exec.inc
13include disable-interpreters.inc
14include disable-shell.inc
15include disable-xdg.inc
16 12
17mkdir ${HOME}/.config/FreeTube 13mkdir ${HOME}/.config/FreeTube
18whitelist ${HOME}/.config/FreeTube 14whitelist ${HOME}/.config/FreeTube
19 15
20seccomp !chroot
21shell none
22
23disable-mnt
24private-bin freetube 16private-bin freetube
25private-cache
26private-dev
27private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,pki,pulse,resolv.conf,ssl,X11,xdg 17private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,pki,pulse,resolv.conf,ssl,X11,xdg
28private-tmp
29 18
30# Redirect 19# Redirect
31include electron.profile 20include electron.profile
diff --git a/etc/profile-a-l/geekbench.profile b/etc/profile-a-l/geekbench.profile
index e06a9afad..77287769a 100644
--- a/etc/profile-a-l/geekbench.profile
+++ b/etc/profile-a-l/geekbench.profile
@@ -51,5 +51,4 @@ dbus-user none
51dbus-system none 51dbus-system none
52 52
53#memory-deny-write-execute - breaks on Arch (see issue #1803) 53#memory-deny-write-execute - breaks on Arch (see issue #1803)
54
55read-only ${HOME} 54read-only ${HOME}
diff --git a/etc/profile-a-l/ghostwriter.profile b/etc/profile-a-l/ghostwriter.profile
index c15174815..d56d6714e 100644
--- a/etc/profile-a-l/ghostwriter.profile
+++ b/etc/profile-a-l/ghostwriter.profile
@@ -11,6 +11,8 @@ noblacklist ${HOME}/.local/share/ghostwriter
11noblacklist ${DOCUMENTS} 11noblacklist ${DOCUMENTS}
12noblacklist ${PICTURES} 12noblacklist ${PICTURES}
13 13
14include allow-lua.inc
15
14include disable-common.inc 16include disable-common.inc
15include disable-devel.inc 17include disable-devel.inc
16include disable-exec.inc 18include disable-exec.inc
diff --git a/etc/profile-a-l/gimp.profile b/etc/profile-a-l/gimp.profile
index ed27de7f5..bc5ef966c 100644
--- a/etc/profile-a-l/gimp.profile
+++ b/etc/profile-a-l/gimp.profile
@@ -52,7 +52,7 @@ nosound
52notv 52notv
53nou2f 53nou2f
54protocol unix 54protocol unix
55seccomp 55seccomp !mbind
56shell none 56shell none
57tracelog 57tracelog
58 58
diff --git a/etc/profile-a-l/github-desktop.profile b/etc/profile-a-l/github-desktop.profile
index 152396553..325c54ced 100644
--- a/etc/profile-a-l/github-desktop.profile
+++ b/etc/profile-a-l/github-desktop.profile
@@ -6,43 +6,35 @@ include github-desktop.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# Note: On debian-based distributions the binary might be located in
10# /opt/GitHub Desktop/github-desktop, and therefore not be in PATH.
11# If that's the case you can start GitHub Desktop with firejail via
12# `firejail "/opt/GitHub Desktop/github-desktop"`.
13
14# Disabled until someone reported positive feedback
15ignore include disable-xdg.inc
16ignore whitelist ${DOWNLOADS}
17ignore include whitelist-common.inc
18ignore include whitelist-runuser-common.inc
19ignore include whitelist-usr-share-common.inc
20ignore include whitelist-var-common.inc
21ignore apparmor
22ignore dbus-user none
23ignore dbus-system none
24
9noblacklist ${HOME}/.config/GitHub Desktop 25noblacklist ${HOME}/.config/GitHub Desktop
10noblacklist ${HOME}/.config/git 26noblacklist ${HOME}/.config/git
11noblacklist ${HOME}/.gitconfig 27noblacklist ${HOME}/.gitconfig
12noblacklist ${HOME}/.git-credentials 28noblacklist ${HOME}/.git-credentials
13 29
14include disable-common.inc
15include disable-passwdmgr.inc
16include disable-programs.inc
17include disable-devel.inc
18include disable-exec.inc
19include disable-interpreters.inc
20
21caps.drop all
22netfilter
23# no3d 30# no3d
24nodvd
25nogroups
26nonewprivs
27noroot
28nosound 31nosound
29notv
30nou2f
31novideo
32protocol unix,inet,inet6,netlink
33seccomp !chroot
34 32
35# Note: On debian-based distributions the binary might be located in
36# /opt/GitHub Desktop/github-desktop, and therefore not be in PATH.
37# If that's the case you can start GitHub Desktop with firejail via
38# `firejail "/opt/GitHub Desktop/github-desktop"`.
39
40disable-mnt
41# private-bin github-desktop 33# private-bin github-desktop
42private-cache
43?HAS_APPIMAGE: ignore private-dev 34?HAS_APPIMAGE: ignore private-dev
44private-dev
45# private-lib 35# private-lib
46private-tmp
47 36
48# memory-deny-write-execute 37# memory-deny-write-execute
38
39# Redirect
40include electron.profile
diff --git a/etc/profile-a-l/gnome-system-log.profile b/etc/profile-a-l/gnome-system-log.profile
index 14b0f758e..9c0a26a02 100644
--- a/etc/profile-a-l/gnome-system-log.profile
+++ b/etc/profile-a-l/gnome-system-log.profile
@@ -53,7 +53,6 @@ writable-var-log
53# dbus-system none 53# dbus-system none
54 54
55memory-deny-write-execute 55memory-deny-write-execute
56 56# Comment the line below if you export logs to a file in your ${HOME}
57# comment this if you export logs to a file in your ${HOME}
58# or put 'ignore read-only ${HOME}' in your gnome-system-log.local 57# or put 'ignore read-only ${HOME}' in your gnome-system-log.local
59read-only ${HOME} 58read-only ${HOME}
diff --git a/etc/profile-a-l/godot.profile b/etc/profile-a-l/godot.profile
index 8324a4eb5..f37f345ba 100644
--- a/etc/profile-a-l/godot.profile
+++ b/etc/profile-a-l/godot.profile
@@ -38,7 +38,7 @@ tracelog
38# private-bin godot 38# private-bin godot
39private-cache 39private-cache
40private-dev 40private-dev
41private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,drirc,fonts,machine-id,nsswitch.conf,openal,pki,pulse,resolv.conf,ssl 41private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,drirc,fonts,machine-id,mono,nsswitch.conf,openal,pki,pulse,resolv.conf,ssl
42private-tmp 42private-tmp
43 43
44dbus-user none 44dbus-user none
diff --git a/etc/profile-a-l/gtk-straw-viewer.profile b/etc/profile-a-l/gtk-straw-viewer.profile
new file mode 100644
index 000000000..e2721360b
--- /dev/null
+++ b/etc/profile-a-l/gtk-straw-viewer.profile
@@ -0,0 +1,14 @@
1# Firejail profile for gtk-straw-viewer
2# Description: Gtk front-end to straw-viewer
3# This file is overwritten after every install/update
4# Persistent local customizations
5include gtk-straw-viewer.local
6# added by included profile
7#include globals.local
8
9ignore quiet
10
11include whitelist-runuser-common.inc
12
13# Redirect
14include straw-viewer.profile
diff --git a/etc/profile-a-l/gtk-youtube-viewer b/etc/profile-a-l/gtk-youtube-viewer.profile
index 023f10d3d..848979b52 100644
--- a/etc/profile-a-l/gtk-youtube-viewer
+++ b/etc/profile-a-l/gtk-youtube-viewer.profile
@@ -3,16 +3,12 @@
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include gtk-youtube-viewer.local 5include gtk-youtube-viewer.local
6# Persistent global definitions 6# added by included profile
7# include globals.local 7#include globals.local
8 8
9ignore quiet 9ignore quiet
10 10
11noblacklist /tmp/.X11-unix
12noblacklist ${RUNUSER}/wayland-*
13noblacklist ${RUNUSER}
14
15include whitelist-runuser-common.inc 11include whitelist-runuser-common.inc
16 12
17# Redirect 13# Redirect
18include youtube-viewer.profile \ No newline at end of file 14include youtube-viewer.profile
diff --git a/etc/profile-a-l/gtk2-youtube-viewer b/etc/profile-a-l/gtk2-youtube-viewer.profile
index 331e73218..787c7bd90 100644
--- a/etc/profile-a-l/gtk2-youtube-viewer
+++ b/etc/profile-a-l/gtk2-youtube-viewer.profile
@@ -3,16 +3,15 @@
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include gtk2-youtube-viewer.local 5include gtk2-youtube-viewer.local
6# Persistent global definitions 6# added by included profile
7# include globals.local 7#include globals.local
8 8
9ignore quiet 9ignore quiet
10 10
11noblacklist /tmp/.X11-unix 11noblacklist /tmp/.X11-unix
12noblacklist ${RUNUSER}/wayland-*
13noblacklist ${RUNUSER} 12noblacklist ${RUNUSER}
14 13
15include whitelist-runuser-common.inc 14include whitelist-runuser-common.inc
16 15
17# Redirect 16# Redirect
18include youtube-viewer.profile \ No newline at end of file 17include youtube-viewer.profile
diff --git a/etc/profile-a-l/gtk3-youtube-viewer b/etc/profile-a-l/gtk3-youtube-viewer.profile
index 4c5bde55f..988882622 100644
--- a/etc/profile-a-l/gtk3-youtube-viewer
+++ b/etc/profile-a-l/gtk3-youtube-viewer.profile
@@ -3,16 +3,15 @@
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include gtk3-youtube-viewer.local 5include gtk3-youtube-viewer.local
6# Persistent global definitions 6# added by included profile
7# include globals.local 7#include globals.local
8 8
9ignore quiet 9ignore quiet
10 10
11noblacklist /tmp/.X11-unix 11noblacklist /tmp/.X11-unix
12noblacklist ${RUNUSER}/wayland-*
13noblacklist ${RUNUSER} 12noblacklist ${RUNUSER}
14 13
15include whitelist-runuser-common.inc 14include whitelist-runuser-common.inc
16 15
17# Redirect 16# Redirect
18include youtube-viewer.profile \ No newline at end of file 17include youtube-viewer.profile
diff --git a/etc/profile-a-l/gzip.profile b/etc/profile-a-l/gzip.profile
index 8ec39d8ca..9b59e57e7 100644
--- a/etc/profile-a-l/gzip.profile
+++ b/etc/profile-a-l/gzip.profile
@@ -7,43 +7,7 @@ include gzip.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11
12# Arch Linux (based distributions) need access to /var/lib/pacman. As we drop all capabilities this is automatically read-only. 10# Arch Linux (based distributions) need access to /var/lib/pacman. As we drop all capabilities this is automatically read-only.
13noblacklist /var/lib/pacman 11noblacklist /var/lib/pacman
14 12
15include disable-common.inc 13include archiver-common.inc
16include disable-devel.inc
17include disable-exec.inc
18include disable-interpreters.inc
19include disable-passwdmgr.inc
20include disable-programs.inc
21
22apparmor
23caps.drop all
24hostname gzip
25ipc-namespace
26machine-id
27net none
28no3d
29nodvd
30nogroups
31nonewprivs
32#noroot
33nosound
34notv
35nou2f
36novideo
37protocol unix
38seccomp
39shell none
40tracelog
41x11 none
42
43private-cache
44private-dev
45
46dbus-user none
47dbus-system none
48
49memory-deny-write-execute
diff --git a/etc/profile-a-l/highlight.profile b/etc/profile-a-l/highlight.profile
index 0761aa2fc..c2812d7f5 100644
--- a/etc/profile-a-l/highlight.profile
+++ b/etc/profile-a-l/highlight.profile
@@ -6,7 +6,6 @@ include highlight.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9blacklist ${RUNUSER}/wayland-*
10blacklist ${RUNUSER} 9blacklist ${RUNUSER}
11 10
12include disable-common.inc 11include disable-common.inc
diff --git a/etc/profile-a-l/homebank.profile b/etc/profile-a-l/homebank.profile
index 8e600a2d7..da32de640 100644
--- a/etc/profile-a-l/homebank.profile
+++ b/etc/profile-a-l/homebank.profile
@@ -10,7 +10,7 @@ noblacklist ${HOME}/.config/homebank
10 10
11include disable-common.inc 11include disable-common.inc
12include disable-devel.inc 12include disable-devel.inc
13include disable-exec.inc 13include disable-exec.inc
14include disable-interpreters.inc 14include disable-interpreters.inc
15include disable-programs.inc 15include disable-programs.inc
16include disable-passwdmgr.inc 16include disable-passwdmgr.inc
diff --git a/etc/profile-a-l/jitsi-meet-desktop.profile b/etc/profile-a-l/jitsi-meet-desktop.profile
index c4121d835..e5beb741a 100644
--- a/etc/profile-a-l/jitsi-meet-desktop.profile
+++ b/etc/profile-a-l/jitsi-meet-desktop.profile
@@ -6,34 +6,22 @@ include jitsi-meet-desktop.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# Disabled until someone reported positive feedback
10ignore nou2f
11ignore novideo
12ignore shell none
13
9ignore noexec /tmp 14ignore noexec /tmp
10 15
11noblacklist ${HOME}/.config/Jitsi Meet 16noblacklist ${HOME}/.config/Jitsi Meet
12 17
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-xdg.inc
17
18nowhitelist ${DOWNLOADS} 18nowhitelist ${DOWNLOADS}
19 19
20mkdir ${HOME}/.config/Jitsi Meet 20mkdir ${HOME}/.config/Jitsi Meet
21
22whitelist ${HOME}/.config/Jitsi Meet 21whitelist ${HOME}/.config/Jitsi Meet
23 22
24include whitelist-common.inc
25include whitelist-usr-share-common.inc
26include whitelist-runuser-common.inc
27include whitelist-var-common.inc
28
29seccomp !chroot
30
31disable-mnt
32private-bin bash,jitsi-meet-desktop 23private-bin bash,jitsi-meet-desktop
33private-cache
34private-dev
35private-etc alsa,alternatives,asound.conf,bumblebee,ca-certificates,crypto-policies,drirc,fonts,glvnd,group,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,localtime,machine-id,mime.types,nsswitch.conf,nvidia,pango,passwd,pki,protocols,pulse,resolv.conf,rpc,services,ssl,X11,xdg 24private-etc alsa,alternatives,asound.conf,bumblebee,ca-certificates,crypto-policies,drirc,fonts,glvnd,group,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,localtime,machine-id,mime.types,nsswitch.conf,nvidia,pango,passwd,pki,protocols,pulse,resolv.conf,rpc,services,ssl,X11,xdg
36private-tmp
37 25
38# Redirect 26# Redirect
39include electron.profile 27include electron.profile
diff --git a/etc/profile-a-l/kazam.profile b/etc/profile-a-l/kazam.profile
index 9899ff195..9c095e106 100644
--- a/etc/profile-a-l/kazam.profile
+++ b/etc/profile-a-l/kazam.profile
@@ -12,12 +12,12 @@ noblacklist ${PICTURES}
12noblacklist ${VIDEOS} 12noblacklist ${VIDEOS}
13noblacklist ${HOME}/.config/kazam 13noblacklist ${HOME}/.config/kazam
14 14
15include allow-python2.inc 15include allow-python2.inc
16include allow-python3.inc 16include allow-python3.inc
17 17
18include disable-common.inc 18include disable-common.inc
19include disable-devel.inc 19include disable-devel.inc
20include disable-exec.inc 20include disable-exec.inc
21include disable-interpreters.inc 21include disable-interpreters.inc
22include disable-programs.inc 22include disable-programs.inc
23include disable-passwdmgr.inc 23include disable-passwdmgr.inc
@@ -25,7 +25,7 @@ include disable-shell.inc
25include disable-xdg.inc 25include disable-xdg.inc
26 26
27whitelist /usr/share/kazam 27whitelist /usr/share/kazam
28include whitelist-runuser-common.inc 28include whitelist-runuser-common.inc
29include whitelist-usr-share-common.inc 29include whitelist-usr-share-common.inc
30include whitelist-var-common.inc 30include whitelist-var-common.inc
31 31
diff --git a/etc/profile-a-l/keepassxc.profile b/etc/profile-a-l/keepassxc.profile
index 6a3b29c9d..a3a1b500a 100644
--- a/etc/profile-a-l/keepassxc.profile
+++ b/etc/profile-a-l/keepassxc.profile
@@ -73,12 +73,11 @@ dbus-user.talk org.freedesktop.login1.Session
73dbus-user.talk org.gnome.ScreenSaver 73dbus-user.talk org.gnome.ScreenSaver
74dbus-user.talk org.gnome.SessionManager 74dbus-user.talk org.gnome.SessionManager
75dbus-user.talk org.gnome.SessionManager.Presence 75dbus-user.talk org.gnome.SessionManager.Presence
76# Uncomment or add to your keepassxc.local to allow Notifications/Tray. 76# Uncomment or add to your keepassxc.local to allow Notifications.
77#dbus-user.talk org.freedesktop.Notifications 77#dbus-user.talk org.freedesktop.Notifications
78# Uncomment or add to your keepassxc.local to allow Tray.
78#dbus-user.talk org.kde.StatusNotifierWatcher 79#dbus-user.talk org.kde.StatusNotifierWatcher
79# These numbers seems to be not stable, see #3713. Play around with them. 80#dbus-user.own org.kde.*
80#dbus-user.own org.kde.StatusNotifierItem-2-2
81#dbus-user.own org.kde.StatusNotifierItem-10-2
82dbus-system none 81dbus-system none
83 82
84# Mutex is stored in /tmp by default, which is broken by private-tmp 83# Mutex is stored in /tmp by default, which is broken by private-tmp
diff --git a/etc/profile-a-l/kube.profile b/etc/profile-a-l/kube.profile
index cf3a69fd7..e0cfb9f24 100644
--- a/etc/profile-a-l/kube.profile
+++ b/etc/profile-a-l/kube.profile
@@ -63,7 +63,7 @@ shell none
63tracelog 63tracelog
64 64
65# disable-mnt 65# disable-mnt
66# 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 66# 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
67# Add "ignore private-bin" for hyperlinks or have a look at the private-bins in firefox.profile and firefox-common.profile. 67# Add "ignore private-bin" for hyperlinks or have a look at the private-bins in firefox.profile and firefox-common.profile.
68private-bin kube,sink_synchronizer 68private-bin kube,sink_synchronizer
69private-cache 69private-cache
diff --git a/etc/profile-a-l/less.profile b/etc/profile-a-l/less.profile
index de6fa67d1..e1f0bc290 100644
--- a/etc/profile-a-l/less.profile
+++ b/etc/profile-a-l/less.profile
@@ -7,7 +7,6 @@ include less.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11blacklist ${RUNUSER} 10blacklist ${RUNUSER}
12 11
13noblacklist ${HOME}/.lesshst 12noblacklist ${HOME}/.lesshst
diff --git a/etc/profile-a-l/librewolf.profile b/etc/profile-a-l/librewolf.profile
new file mode 100644
index 000000000..5208cb979
--- /dev/null
+++ b/etc/profile-a-l/librewolf.profile
@@ -0,0 +1,28 @@
1# Firejail profile for Librewolf
2# Description: Firefox fork based on privacy
3# This file is overwritten after every install/update
4# Persistent local customizations
5include librewolf.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.cache/librewolf
10noblacklist ${HOME}/.librewolf
11
12mkdir ${HOME}/.cache/librewolf
13mkdir ${HOME}/.librewolf
14whitelist ${HOME}/.cache/librewolf
15whitelist ${HOME}/.librewolf
16
17# Uncomment (or add to librewolf.local) the following lines if you want to
18# use the migration wizard.
19#noblacklist ${HOME}/.mozilla
20#whitelist ${HOME}/.mozilla
21
22# librewolf requires a shell to launch on Arch. We can possibly remove sh though.
23#private-bin bash,dbus-launch,dbus-send,env,librewolf,python*,sh,which
24# private-etc must first be enabled in firefox-common.profile
25#private-etc librewolf
26
27# Redirect
28include firefox-common.profile
diff --git a/etc/profile-a-l/links.profile b/etc/profile-a-l/links.profile
index b2f94d3cf..ccc77f274 100644
--- a/etc/profile-a-l/links.profile
+++ b/etc/profile-a-l/links.profile
@@ -1,6 +1,7 @@
1# Firejail profile for links 1# Firejail profile for links
2# Description: Text WWW browser 2# Description: Text WWW browser
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4quiet
4# Persistent local customizations 5# Persistent local customizations
5include links.local 6include links.local
6# Persistent global definitions 7# Persistent global definitions
diff --git a/etc/profile-a-l/lutris.profile b/etc/profile-a-l/lutris.profile
new file mode 100644
index 000000000..652f571bb
--- /dev/null
+++ b/etc/profile-a-l/lutris.profile
@@ -0,0 +1,74 @@
1# Firejail profile for lutris
2# Description: Multi-library game handler with special support for Wine
3# This file is overwritten after every install/update
4# Persistent local customizations
5include lutris.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${PATH}/llvm*
10noblacklist ${HOME}/Games
11noblacklist ${HOME}/.cache/lutris
12noblacklist ${HOME}/.cache/winetricks
13noblacklist ${HOME}/.config/lutris
14noblacklist ${HOME}/.local/share/lutris
15# noblacklist ${HOME}/.wine
16noblacklist /tmp/.wine-*
17
18ignore noexec ${HOME}
19
20# Allow python (blacklisted by disable-interpreters.inc)
21include allow-python2.inc
22include allow-python3.inc
23
24include disable-common.inc
25include disable-devel.inc
26include disable-exec.inc
27include disable-interpreters.inc
28include disable-passwdmgr.inc
29include disable-programs.inc
30include disable-xdg.inc
31
32mkdir ${HOME}/Games
33mkdir ${HOME}/.cache/lutris
34mkdir ${HOME}/.cache/winetricks
35mkdir ${HOME}/.config/lutris
36mkdir ${HOME}/.local/share/lutris
37# mkdir ${HOME}/.wine
38whitelist ${HOME}/Downloads
39whitelist ${HOME}/Games
40whitelist ${HOME}/.cache/lutris
41whitelist ${HOME}/.cache/winetricks
42whitelist ${HOME}/.config/lutris
43whitelist ${HOME}/.local/share/lutris
44# whitelist ${HOME}/.wine
45whitelist /usr/share/lutris
46whitelist /usr/share/wine
47include whitelist-common.inc
48include whitelist-usr-share-common.inc
49include whitelist-runuser-common.inc
50include whitelist-var-common.inc
51
52# allow-debuggers
53# apparmor
54caps.drop all
55ipc-namespace
56# net none
57netfilter
58nodvd
59nogroups
60nonewprivs
61noroot
62notv
63nou2f
64novideo
65protocol unix,inet,inet6,netlink
66seccomp
67shell none
68
69# uncomment the following line if you do not need controller support
70# private-dev
71private-tmp
72
73dbus-user none
74dbus-system none
diff --git a/etc/profile-a-l/lynx.profile b/etc/profile-a-l/lynx.profile
index dbd0a61e5..76a0e7ed0 100644
--- a/etc/profile-a-l/lynx.profile
+++ b/etc/profile-a-l/lynx.profile
@@ -1,6 +1,7 @@
1# Firejail profile for lynx 1# Firejail profile for lynx
2# Description: Classic non-graphical (text-mode) web browser 2# Description: Classic non-graphical (text-mode) web browser
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4quiet
4# Persistent local customizations 5# Persistent local customizations
5include lynx.local 6include lynx.local
6# Persistent global definitions 7# Persistent global definitions
diff --git a/etc/profile-a-l/lyx.profile b/etc/profile-a-l/lyx.profile
index b2c0afbe7..ffde057d5 100644
--- a/etc/profile-a-l/lyx.profile
+++ b/etc/profile-a-l/lyx.profile
@@ -27,7 +27,7 @@ apparmor
27machine-id 27machine-id
28 28
29# private-bin atril,dvilualatex,env,latex,lua*,luatex,lyx,lyxclient,okular,pdf2latex,pdflatex,pdftex,perl*,python*,qpdf,qpdfview,sh,tex2lyx,texmf,xelatex 29# private-bin atril,dvilualatex,env,latex,lua*,luatex,lyx,lyxclient,okular,pdf2latex,pdflatex,pdftex,perl*,python*,qpdf,qpdfview,sh,tex2lyx,texmf,xelatex
30private-etc alternatives,dconf,fonts,gtk-2.0,gtk-3.0,locale,locale.alias,locale.conf,lyx,mime.types,passwd,texmf,X11,xdg 30private-etc alternatives,dconf,fonts,gtk-2.0,gtk-3.0,locale,locale.alias,locale.conf,lyx,machine-id,mime.types,passwd,texmf,X11,xdg
31 31
32# Redirect 32# Redirect
33include latex-common.profile 33include latex-common.profile
diff --git a/etc/profile-m-z/QMediathekView.profile b/etc/profile-m-z/QMediathekView.profile
index 589dcfeb6..5ab302218 100644
--- a/etc/profile-m-z/QMediathekView.profile
+++ b/etc/profile-m-z/QMediathekView.profile
@@ -53,7 +53,7 @@ private-cache
53private-dev 53private-dev
54private-tmp 54private-tmp
55 55
56# dbus-user none 56dbus-user none
57# dbus-system none 57dbus-system none
58 58
59#memory-deny-write-execute - breaks on Arch (see issue #1803) 59#memory-deny-write-execute - breaks on Arch (see issue #1803)
diff --git a/etc/profile-m-z/matrix-mirage.profile b/etc/profile-m-z/matrix-mirage.profile
new file mode 100644
index 000000000..b3080df88
--- /dev/null
+++ b/etc/profile-m-z/matrix-mirage.profile
@@ -0,0 +1,24 @@
1# Firejail profile for matrix-mirage
2# Description: Debian name for mirage binary/package
3# This file is overwritten after every install/update
4# Persistent local customizations
5include matrix-mirage.local
6# Persistent global definitions
7# added by included profile
8#include globals.local
9
10noblacklist ${HOME}/.cache/matrix-mirage
11noblacklist ${HOME}/.config/matrix-mirage
12noblacklist ${HOME}/.local/share/matrix-mirage
13
14mkdir ${HOME}/.cache/matrix-mirage
15mkdir ${HOME}/.config/matrix-mirage
16mkdir ${HOME}/.local/share/matrix-mirage
17whitelist ${HOME}/.cache/matrix-mirage
18whitelist ${HOME}/.config/matrix-mirage
19whitelist ${HOME}/.local/share/matrix-mirage
20
21private-bin matrix-mirage
22
23# Redirect
24include mirage.profile
diff --git a/etc/profile-m-z/menulibre.profile b/etc/profile-m-z/menulibre.profile
index c70090a25..8a98209a2 100644
--- a/etc/profile-m-z/menulibre.profile
+++ b/etc/profile-m-z/menulibre.profile
@@ -11,7 +11,7 @@ include allow-python3.inc
11 11
12include disable-common.inc 12include disable-common.inc
13include disable-devel.inc 13include disable-devel.inc
14include disable-exec.inc 14include disable-exec.inc
15include disable-interpreters.inc 15include disable-interpreters.inc
16include disable-programs.inc 16include disable-programs.inc
17include disable-passwdmgr.inc 17include disable-passwdmgr.inc
@@ -25,7 +25,7 @@ whitelist /usr/share/menulibre
25whitelist /var/lib/app-info/icons 25whitelist /var/lib/app-info/icons
26whitelist /var/lib/flatpak/exports/share/applications 26whitelist /var/lib/flatpak/exports/share/applications
27whitelist /var/lib/flatpak/exports/share/icons 27whitelist /var/lib/flatpak/exports/share/icons
28include whitelist-runuser-common.inc 28include whitelist-runuser-common.inc
29include whitelist-usr-share-common.inc 29include whitelist-usr-share-common.inc
30include whitelist-var-common.inc 30include whitelist-var-common.inc
31 31
diff --git a/etc/profile-m-z/microsoft-edge-dev.profile b/etc/profile-m-z/microsoft-edge-dev.profile
new file mode 100644
index 000000000..039cd36a8
--- /dev/null
+++ b/etc/profile-m-z/microsoft-edge-dev.profile
@@ -0,0 +1,20 @@
1# Firejail profile for Microsoft Edge Dev
2# Description: Web browser from Microsoft,dev channel
3# This file is overwritten after every install/update
4# Persistent local customizations
5include microsoft-edge-dev.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.cache/microsoft-edge-dev
10noblacklist ${HOME}/.config/microsoft-edge-dev
11
12mkdir ${HOME}/.cache/microsoft-edge-dev
13mkdir ${HOME}/.config/microsoft-edge-dev
14whitelist ${HOME}/.cache/microsoft-edge-dev
15whitelist ${HOME}/.config/microsoft-edge-dev
16
17private-opt microsoft
18
19# Redirect
20include chromium-common.profile
diff --git a/etc/profile-m-z/microsoft-edge.profile b/etc/profile-m-z/microsoft-edge.profile
new file mode 100644
index 000000000..f427507d1
--- /dev/null
+++ b/etc/profile-m-z/microsoft-edge.profile
@@ -0,0 +1,11 @@
1# Firejail profile for Microsoft Edge
2# Description: Web browser from Microsoft
3# This file is overwritten after every install/update
4# Persistent local customizations
5include microsoft-edge.local
6# Persistent global definitions
7# added by included profile
8#include globals.local
9
10# Redirect
11include microsoft-edge-dev.profile
diff --git a/etc/profile-m-z/min.profile b/etc/profile-m-z/min.profile
index be85fdbc4..7f3aeab44 100644
--- a/etc/profile-m-z/min.profile
+++ b/etc/profile-m-z/min.profile
@@ -6,8 +6,6 @@ include min.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9nowhitelist /usr/share/chromium
10
11noblacklist ${HOME}/.config/Min 9noblacklist ${HOME}/.config/Min
12 10
13mkdir ${HOME}/.config/Min 11mkdir ${HOME}/.config/Min
diff --git a/etc/profile-m-z/minetest.profile b/etc/profile-m-z/minetest.profile
index 5678a781c..666af323d 100644
--- a/etc/profile-m-z/minetest.profile
+++ b/etc/profile-m-z/minetest.profile
@@ -52,8 +52,9 @@ shell none
52tracelog 52tracelog
53 53
54disable-mnt 54disable-mnt
55private-bin minetest 55private-bin minetest,rm
56private-cache 56# cache is used for storing assets when connecting to servers
57#private-cache
57private-dev 58private-dev
58# private-etc needs to be updated, see #1702 59# private-etc needs to be updated, see #1702
59#private-etc alternatives,asound.conf,ca-certificates,crypto-policies,drirc,fonts,group,host.conf,hostname,hosts,ld.so.cache,ld.so.preload,localtime,machine-id,nsswitch.conf,passwd,pki,pulse,resolv.conf,ssl 60#private-etc alternatives,asound.conf,ca-certificates,crypto-policies,drirc,fonts,group,host.conf,hostname,hosts,ld.so.cache,ld.so.preload,localtime,machine-id,nsswitch.conf,passwd,pki,pulse,resolv.conf,ssl
diff --git a/etc/profile-m-z/minitube.profile b/etc/profile-m-z/minitube.profile
index 39ecc7127..78ef5e398 100644
--- a/etc/profile-m-z/minitube.profile
+++ b/etc/profile-m-z/minitube.profile
@@ -19,7 +19,7 @@ include disable-exec.inc
19include disable-interpreters.inc 19include disable-interpreters.inc
20include disable-passwdmgr.inc 20include disable-passwdmgr.inc
21include disable-programs.inc 21include disable-programs.inc
22include disable-shell.inc 22include disable-shell.inc
23include disable-xdg.inc 23include disable-xdg.inc
24 24
25mkdir ${HOME}/.cache/Flavio Tordini 25mkdir ${HOME}/.cache/Flavio Tordini
@@ -30,8 +30,8 @@ whitelist ${HOME}/.cache/Flavio Tordini
30whitelist ${HOME}/.config/Flavio Tordini 30whitelist ${HOME}/.config/Flavio Tordini
31whitelist ${HOME}/.local/share/Flavio Tordini 31whitelist ${HOME}/.local/share/Flavio Tordini
32whitelist /usr/share/minitube 32whitelist /usr/share/minitube
33include whitelist-common.inc 33include whitelist-common.inc
34include whitelist-runuser-common.inc 34include whitelist-runuser-common.inc
35include whitelist-usr-share-common.inc 35include whitelist-usr-share-common.inc
36include whitelist-var-common.inc 36include whitelist-var-common.inc
37 37
diff --git a/etc/profile-m-z/mirage.profile b/etc/profile-m-z/mirage.profile
index 4a5f12aec..7130267e8 100644
--- a/etc/profile-m-z/mirage.profile
+++ b/etc/profile-m-z/mirage.profile
@@ -1,5 +1,5 @@
1# Firejail profile for mirage 1# Firejail profile for mirage
2# Description: Desktop client for Matrix 2# Description: Desktop client for Matrix
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include mirage.local 5include mirage.local
@@ -9,6 +9,7 @@ include globals.local
9noblacklist ${HOME}/.cache/mirage 9noblacklist ${HOME}/.cache/mirage
10noblacklist ${HOME}/.config/mirage 10noblacklist ${HOME}/.config/mirage
11noblacklist ${HOME}/.local/share/mirage 11noblacklist ${HOME}/.local/share/mirage
12noblacklist /sbin
12 13
13include allow-python2.inc 14include allow-python2.inc
14include allow-python3.inc 15include allow-python3.inc
@@ -30,7 +31,7 @@ whitelist ${HOME}/.config/mirage
30whitelist ${HOME}/.local/share/mirage 31whitelist ${HOME}/.local/share/mirage
31whitelist ${DOWNLOADS} 32whitelist ${DOWNLOADS}
32include whitelist-common.inc 33include whitelist-common.inc
33include whitelist-runuser-common.inc 34include whitelist-runuser-common.inc
34include whitelist-usr-share-common.inc 35include whitelist-usr-share-common.inc
35include whitelist-var-common.inc 36include whitelist-var-common.inc
36 37
@@ -49,7 +50,7 @@ shell none
49tracelog 50tracelog
50 51
51disable-mnt 52disable-mnt
52private-bin mirage 53private-bin ldconfig,mirage
53private-cache 54private-cache
54private-dev 55private-dev
55private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,mime.types,nsswitch.conf,pki,pulse,resolv.conf,selinux,ssl,X11,xdg 56private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,mime.types,nsswitch.conf,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
diff --git a/etc/profile-m-z/mplayer.profile b/etc/profile-m-z/mplayer.profile
index 31a6caa9a..58384e33c 100644
--- a/etc/profile-m-z/mplayer.profile
+++ b/etc/profile-m-z/mplayer.profile
@@ -19,7 +19,7 @@ read-only ${DESKTOP}
19mkdir ${HOME}/.mplayer 19mkdir ${HOME}/.mplayer
20whitelist ${HOME}/.mplayer 20whitelist ${HOME}/.mplayer
21include whitelist-common.inc 21include whitelist-common.inc
22include whitelist-players.inc 22include whitelist-player-common.inc
23include whitelist-usr-share-common.inc 23include whitelist-usr-share-common.inc
24include whitelist-var-common.inc 24include whitelist-var-common.inc
25 25
diff --git a/etc/profile-m-z/mpsyt.profile b/etc/profile-m-z/mpsyt.profile
index 414eaf312..bdf50421b 100644
--- a/etc/profile-m-z/mpsyt.profile
+++ b/etc/profile-m-z/mpsyt.profile
@@ -44,7 +44,7 @@ whitelist ${HOME}/.mplayer
44whitelist ${HOME}/.netrc 44whitelist ${HOME}/.netrc
45whitelist ${HOME}/mps 45whitelist ${HOME}/mps
46include whitelist-common.inc 46include whitelist-common.inc
47include whitelist-players.inc 47include whitelist-player-common.inc
48include whitelist-var-common.inc 48include whitelist-var-common.inc
49 49
50apparmor 50apparmor
diff --git a/etc/profile-m-z/mpv.profile b/etc/profile-m-z/mpv.profile
index ce3bfe421..1d87eeb48 100644
--- a/etc/profile-m-z/mpv.profile
+++ b/etc/profile-m-z/mpv.profile
@@ -50,7 +50,7 @@ whitelist ${HOME}/.config/mpv
50whitelist ${HOME}/.config/youtube-dl 50whitelist ${HOME}/.config/youtube-dl
51whitelist ${HOME}/.netrc 51whitelist ${HOME}/.netrc
52include whitelist-common.inc 52include whitelist-common.inc
53include whitelist-players.inc 53include whitelist-player-common.inc
54whitelist /usr/share/lua 54whitelist /usr/share/lua
55whitelist /usr/share/lua* 55whitelist /usr/share/lua*
56whitelist /usr/share/vulkan 56whitelist /usr/share/vulkan
diff --git a/etc/profile-m-z/mtpaint.profile b/etc/profile-m-z/mtpaint.profile
index cfd00e8ae..9f1f0f53d 100644
--- a/etc/profile-m-z/mtpaint.profile
+++ b/etc/profile-m-z/mtpaint.profile
@@ -10,14 +10,14 @@ noblacklist ${PICTURES}
10 10
11include disable-common.inc 11include disable-common.inc
12include disable-devel.inc 12include disable-devel.inc
13include disable-exec.inc 13include 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-shell.inc
18include disable-xdg.inc 18include disable-xdg.inc
19 19
20include whitelist-runuser-common.inc 20include whitelist-runuser-common.inc
21include whitelist-usr-share-common.inc 21include whitelist-usr-share-common.inc
22include whitelist-var-common.inc 22include whitelist-var-common.inc
23 23
diff --git a/etc/profile-m-z/musictube.profile b/etc/profile-m-z/musictube.profile
index 955df698d..dbfd12619 100644
--- a/etc/profile-m-z/musictube.profile
+++ b/etc/profile-m-z/musictube.profile
@@ -1,5 +1,5 @@
1# Firejail profile for musictube 1# Firejail profile for musictube
2# Description: Stream music 2# Description: Stream music
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include musictube.local 5include musictube.local
@@ -16,7 +16,7 @@ include disable-exec.inc
16include disable-interpreters.inc 16include disable-interpreters.inc
17include disable-passwdmgr.inc 17include disable-passwdmgr.inc
18include disable-programs.inc 18include disable-programs.inc
19include disable-shell.inc 19include disable-shell.inc
20include disable-xdg.inc 20include disable-xdg.inc
21 21
22mkdir ${HOME}/.cache/Flavio Tordini 22mkdir ${HOME}/.cache/Flavio Tordini
@@ -26,8 +26,8 @@ whitelist ${HOME}/.cache/Flavio Tordini
26whitelist ${HOME}/.config/Flavio Tordini 26whitelist ${HOME}/.config/Flavio Tordini
27whitelist ${HOME}/.local/share/Flavio Tordini 27whitelist ${HOME}/.local/share/Flavio Tordini
28whitelist /usr/share/musictube 28whitelist /usr/share/musictube
29include whitelist-common.inc 29include whitelist-common.inc
30include whitelist-runuser-common.inc 30include whitelist-runuser-common.inc
31include whitelist-usr-share-common.inc 31include whitelist-usr-share-common.inc
32include whitelist-var-common.inc 32include whitelist-var-common.inc
33 33
diff --git a/etc/profile-m-z/nheko.profile b/etc/profile-m-z/nheko.profile
index 701098f4b..42e7e92fc 100644
--- a/etc/profile-m-z/nheko.profile
+++ b/etc/profile-m-z/nheko.profile
@@ -7,7 +7,7 @@ include nheko.local
7include globals.local 7include globals.local
8 8
9noblacklist ${HOME}/.config/nheko 9noblacklist ${HOME}/.config/nheko
10noblacklist ${HOME}/.cache/nheko/nheko 10noblacklist ${HOME}/.cache/nheko
11 11
12include disable-common.inc 12include disable-common.inc
13include disable-devel.inc 13include disable-devel.inc
@@ -16,14 +16,19 @@ include disable-interpreters.inc
16include disable-passwdmgr.inc 16include disable-passwdmgr.inc
17include disable-programs.inc 17include disable-programs.inc
18include disable-shell.inc 18include disable-shell.inc
19include disable-xdg.inc
19 20
20mkdir ${HOME}/.config/nheko 21mkdir ${HOME}/.config/nheko
21mkdir ${HOME}/.cache/nheko/nheko 22mkdir ${HOME}/.cache/nheko/nheko
22whitelist ${HOME}/.config/nheko 23whitelist ${HOME}/.config/nheko
23whitelist ${HOME}/.cache/nheko/nheko 24whitelist ${HOME}/.cache/nheko
24whitelist ${DOWNLOADS} 25whitelist ${DOWNLOADS}
25include whitelist-common.inc 26include whitelist-common.inc
27include whitelist-runuser-common.inc
28include whitelist-usr-share-common.inc
29include whitelist-var-common.inc
26 30
31apparmor
27caps.drop all 32caps.drop all
28netfilter 33netfilter
29nodvd 34nodvd
@@ -38,5 +43,14 @@ tracelog
38 43
39disable-mnt 44disable-mnt
40private-bin nheko 45private-bin nheko
46private-cache
47private-dev
48private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,mime.types,nsswitch.conf,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
41private-tmp 49private-tmp
42 50
51dbus-user none
52# Comment the above line and uncomment below lines for notification popups
53# dbus-user filter
54# dbus-user.talk org.freedesktop.Notifications
55# dbus-user.talk org.kde.StatusNotifierWatcher
56dbus-system none
diff --git a/etc/profile-m-z/nslookup.profile b/etc/profile-m-z/nslookup.profile
index a8e0ddd89..17798a6fb 100644
--- a/etc/profile-m-z/nslookup.profile
+++ b/etc/profile-m-z/nslookup.profile
@@ -8,7 +8,6 @@ include nslookup.local
8include globals.local 8include globals.local
9 9
10blacklist /tmp/.X11-unix 10blacklist /tmp/.X11-unix
11blacklist ${RUNUSER}/wayland-*
12blacklist ${RUNUSER} 11blacklist ${RUNUSER}
13 12
14noblacklist ${PATH}/nslookup 13noblacklist ${PATH}/nslookup
diff --git a/etc/profile-m-z/nuclear.profile b/etc/profile-m-z/nuclear.profile
index 1b97eda9b..886403b9e 100644
--- a/etc/profile-m-z/nuclear.profile
+++ b/etc/profile-m-z/nuclear.profile
@@ -10,31 +10,16 @@ ignore dbus-user
10 10
11noblacklist ${HOME}/.config/nuclear 11noblacklist ${HOME}/.config/nuclear
12 12
13include disable-devel.inc 13include disable-shell.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-shell.inc
17include disable-xdg.inc
18 14
19mkdir ${HOME}/.config/nuclear 15mkdir ${HOME}/.config/nuclear
20whitelist ${HOME}/.config/nuclear 16whitelist ${HOME}/.config/nuclear
21include whitelist-common.inc
22include whitelist-runuser-common.inc
23include whitelist-usr-share-common.inc
24include whitelist-var-common.inc
25 17
26no3d 18no3d
27nou2f
28novideo
29shell none
30 19
31disable-mnt
32# private-bin nuclear 20# private-bin nuclear
33private-cache
34private-dev
35private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,pki,pulse,resolv.conf,selinux,ssl,X11,xdg 21private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
36private-opt nuclear 22private-opt nuclear
37private-tmp
38 23
39# Redirect 24# Redirect
40include electron.profile 25include electron.profile
diff --git a/etc/profile-m-z/onboard.profile b/etc/profile-m-z/onboard.profile
index 3a235a677..f7cb8790b 100644
--- a/etc/profile-m-z/onboard.profile
+++ b/etc/profile-m-z/onboard.profile
@@ -13,7 +13,7 @@ include allow-python3.inc
13 13
14include disable-common.inc 14include disable-common.inc
15include disable-devel.inc 15include disable-devel.inc
16include disable-exec.inc 16include disable-exec.inc
17include disable-interpreters.inc 17include disable-interpreters.inc
18include disable-programs.inc 18include disable-programs.inc
19include disable-passwdmgr.inc 19include disable-passwdmgr.inc
@@ -23,9 +23,9 @@ include disable-xdg.inc
23mkdir ${HOME}/.config/onboard 23mkdir ${HOME}/.config/onboard
24whitelist ${HOME}/.config/onboard 24whitelist ${HOME}/.config/onboard
25whitelist /usr/share/onboard 25whitelist /usr/share/onboard
26include whitelist-common.inc 26include whitelist-common.inc
27include whitelist-usr-share-common.inc 27include whitelist-usr-share-common.inc
28include whitelist-runuser-common.inc 28include whitelist-runuser-common.inc
29include whitelist-var-common.inc 29include whitelist-var-common.inc
30 30
31apparmor 31apparmor
diff --git a/etc/profile-m-z/ostrichriders.profile b/etc/profile-m-z/ostrichriders.profile
index cc44d5a48..3bfda7946 100644
--- a/etc/profile-m-z/ostrichriders.profile
+++ b/etc/profile-m-z/ostrichriders.profile
@@ -42,7 +42,7 @@ tracelog
42disable-mnt 42disable-mnt
43private-bin ostrichriders 43private-bin ostrichriders
44private-cache 44private-cache
45# private-dev should be commented for controllers 45# comment the following line if you need controller support
46private-dev 46private-dev
47private-tmp 47private-tmp
48 48
diff --git a/etc/profile-m-z/otter-browser.profile b/etc/profile-m-z/otter-browser.profile
index 652b6b7cb..aa26ddd4e 100644
--- a/etc/profile-m-z/otter-browser.profile
+++ b/etc/profile-m-z/otter-browser.profile
@@ -1,5 +1,5 @@
1# Firejail profile for otter-browser 1# Firejail profile for otter-browser
2# Description: Lightweight web browser based on Qt5 2# Description: Lightweight web browser based on Qt5
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include otter-browser.local 5include otter-browser.local
@@ -32,7 +32,7 @@ whitelist ${HOME}/.pki
32whitelist ${HOME}/.local/share/pki 32whitelist ${HOME}/.local/share/pki
33whitelist /usr/share/otter-browser 33whitelist /usr/share/otter-browser
34include whitelist-common.inc 34include whitelist-common.inc
35include whitelist-runuser-common.inc 35include whitelist-runuser-common.inc
36include whitelist-usr-share-common.inc 36include whitelist-usr-share-common.inc
37include whitelist-var-common.inc 37include whitelist-var-common.inc
38 38
@@ -54,6 +54,6 @@ private-bin bash,otter-browser,sh,which
54private-cache 54private-cache
55?BROWSER_DISABLE_U2F: private-dev 55?BROWSER_DISABLE_U2F: private-dev
56private-etc alternatives,asound.conf,ca-certificates,crypto-policies,dconf,fonts,group,gtk-2.0,gtk-3.0,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,localtime,machine-id,mailcap,mime.types,nsswitch.conf,pango,passwd,pki,pulse,resolv.conf,selinux,ssl,X11,xdg 56private-etc alternatives,asound.conf,ca-certificates,crypto-policies,dconf,fonts,group,gtk-2.0,gtk-3.0,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,localtime,machine-id,mailcap,mime.types,nsswitch.conf,pango,passwd,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
57private-tmp 57private-tmp
58 58
59dbus-system none 59dbus-system none
diff --git a/etc/profile-m-z/pandoc.profile b/etc/profile-m-z/pandoc.profile
index 9ee7e75b4..d2dcef0d0 100644
--- a/etc/profile-m-z/pandoc.profile
+++ b/etc/profile-m-z/pandoc.profile
@@ -7,7 +7,6 @@ include pandoc.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11blacklist ${RUNUSER} 10blacklist ${RUNUSER}
12 11
13noblacklist ${DOCUMENTS} 12noblacklist ${DOCUMENTS}
diff --git a/etc/profile-m-z/patch.profile b/etc/profile-m-z/patch.profile
index 6cbaa66ad..46a84372c 100644
--- a/etc/profile-m-z/patch.profile
+++ b/etc/profile-m-z/patch.profile
@@ -7,7 +7,6 @@ include patch.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11blacklist ${RUNUSER} 10blacklist ${RUNUSER}
12 11
13noblacklist ${DOCUMENTS} 12noblacklist ${DOCUMENTS}
diff --git a/etc/profile-m-z/pdftotext.profile b/etc/profile-m-z/pdftotext.profile
index 2a7d0cec1..6bbd30b22 100644
--- a/etc/profile-m-z/pdftotext.profile
+++ b/etc/profile-m-z/pdftotext.profile
@@ -6,7 +6,6 @@ include pdftotext.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9blacklist ${RUNUSER}/wayland-*
10blacklist ${RUNUSER} 9blacklist ${RUNUSER}
11 10
12noblacklist ${DOCUMENTS} 11noblacklist ${DOCUMENTS}
diff --git a/etc/profile-m-z/photoflare.profile b/etc/profile-m-z/photoflare.profile
new file mode 100644
index 000000000..9e6b4a87d
--- /dev/null
+++ b/etc/profile-m-z/photoflare.profile
@@ -0,0 +1,50 @@
1# Firejail profile for photoflare
2# Description: Simple painting and editing program
3# This file is overwritten after every install/update
4# Persistent local customizations
5include photoflare.local
6# Persistent global definitions
7include photoflare.local
8
9noblacklist ${PICTURES}
10
11include disable-common.inc
12include disable-devel.inc
13include disable-exec.inc
14include disable-interpreters.inc
15include disable-passwdmgr.inc
16include disable-programs.inc
17include disable-shell.inc
18include disable-xdg.inc
19
20include whitelist-runuser-common.inc
21include whitelist-usr-share-common.inc
22include whitelist-var-common.inc
23
24apparmor
25caps.drop all
26machine-id
27net none
28nodvd
29no3d
30nogroups
31nonewprivs
32noroot
33nosound
34notv
35nou2f
36novideo
37protocol unix
38seccomp
39shell none
40tracelog
41
42disable-mnt
43private-bin photoflare
44private-cache
45private-dev
46private-etc alternatives,fonts,locale,locale.alias,locale.conf,mime.types,X11
47private-tmp
48
49dbus-user none
50dbus-system none
diff --git a/etc/profile-m-z/ping.profile b/etc/profile-m-z/ping.profile
index bd95cb1de..03b548ffa 100644
--- a/etc/profile-m-z/ping.profile
+++ b/etc/profile-m-z/ping.profile
@@ -8,7 +8,6 @@ include ping.local
8include globals.local 8include globals.local
9 9
10blacklist /tmp/.X11-unix 10blacklist /tmp/.X11-unix
11blacklist ${RUNUSER}/wayland-*
12blacklist ${RUNUSER} 11blacklist ${RUNUSER}
13 12
14include disable-common.inc 13include disable-common.inc
diff --git a/etc/profile-m-z/planmaker18.profile b/etc/profile-m-z/planmaker18.profile
index 2ba8e86c0..4cf1efb7f 100644
--- a/etc/profile-m-z/planmaker18.profile
+++ b/etc/profile-m-z/planmaker18.profile
@@ -7,4 +7,4 @@ include planmaker18.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
diff --git a/etc/profile-m-z/planmaker18free.profile b/etc/profile-m-z/planmaker18free.profile
index d0bce44f5..bb85f1fc7 100644
--- a/etc/profile-m-z/planmaker18free.profile
+++ b/etc/profile-m-z/planmaker18free.profile
@@ -7,4 +7,4 @@ include planmaker18free.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
diff --git a/etc/profile-m-z/playonlinux.profile b/etc/profile-m-z/playonlinux.profile
index 03091af6d..0ebef226a 100644
--- a/etc/profile-m-z/playonlinux.profile
+++ b/etc/profile-m-z/playonlinux.profile
@@ -4,34 +4,17 @@
4# Persistent local customizations 4# Persistent local customizations
5include playonlinux.local 5include playonlinux.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7# added by included profile
8#include globals.local
8 9
9noblacklist ${HOME}/.Steam
10noblacklist ${HOME}/.local/share/Steam
11noblacklist ${HOME}/.local/share/steam
12noblacklist ${HOME}/.steam
13noblacklist ${HOME}/.PlayOnLinux 10noblacklist ${HOME}/.PlayOnLinux
14 11
15# nc is needed to run playonlinux 12# nc is needed to run playonlinux
16noblacklist ${PATH}/nc 13noblacklist ${PATH}/nc
17 14
18# Allow python (blacklisted by disable-interpreters.inc)
19include allow-python2.inc 15include allow-python2.inc
20include allow-python3.inc 16include allow-python3.inc
21
22# Allow perl (blacklisted by disable-interpreters.inc)
23include allow-perl.inc 17include allow-perl.inc
24 18
25include disable-common.inc 19# Redirect
26include disable-devel.inc 20include wine.profile
27include disable-interpreters.inc
28include disable-programs.inc
29
30caps.drop all
31netfilter
32nodvd
33nogroups
34nonewprivs
35noroot
36notv
37seccomp
diff --git a/etc/profile-m-z/ppsspp.profile b/etc/profile-m-z/ppsspp.profile
index c62e53151..c71553bcd 100644
--- a/etc/profile-m-z/ppsspp.profile
+++ b/etc/profile-m-z/ppsspp.profile
@@ -32,7 +32,7 @@ protocol unix,netlink
32seccomp 32seccomp
33shell none 33shell none
34 34
35# private-dev is disabled to allow controller support 35# uncomment the following line if you do not need controller support
36#private-dev 36#private-dev
37private-etc alternatives,asound.conf,ca-certificates,crypto-policies,drirc,fonts,group,host.conf,hostname,hosts,ld.so.cache,ld.so.preload,localtime,machine-id,nsswitch.conf,passwd,pki,pulse,resolv.conf,ssl 37private-etc alternatives,asound.conf,ca-certificates,crypto-policies,drirc,fonts,group,host.conf,hostname,hosts,ld.so.cache,ld.so.preload,localtime,machine-id,nsswitch.conf,passwd,pki,pulse,resolv.conf,ssl
38private-opt ppsspp 38private-opt ppsspp
diff --git a/etc/profile-m-z/presentations18.profile b/etc/profile-m-z/presentations18.profile
index d4f531060..65d684c40 100644
--- a/etc/profile-m-z/presentations18.profile
+++ b/etc/profile-m-z/presentations18.profile
@@ -7,5 +7,5 @@ include presentations18.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
11 11
diff --git a/etc/profile-m-z/presentations18free.profile b/etc/profile-m-z/presentations18free.profile
index e2319f13f..218747224 100644
--- a/etc/profile-m-z/presentations18free.profile
+++ b/etc/profile-m-z/presentations18free.profile
@@ -7,4 +7,4 @@ include presentations18free.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
diff --git a/etc/profile-m-z/qrencode.profile b/etc/profile-m-z/qrencode.profile
index 5e49a342a..952e9f5f3 100644
--- a/etc/profile-m-z/qrencode.profile
+++ b/etc/profile-m-z/qrencode.profile
@@ -7,7 +7,6 @@ include qrencode.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11blacklist ${RUNUSER} 10blacklist ${RUNUSER}
12 11
13include disable-common.inc 12include disable-common.inc
diff --git a/etc/profile-m-z/quaternion.profile b/etc/profile-m-z/quaternion.profile
index 2133c74d3..3041860b3 100644
--- a/etc/profile-m-z/quaternion.profile
+++ b/etc/profile-m-z/quaternion.profile
@@ -1,5 +1,5 @@
1# Firejail profile for quaternion 1# Firejail profile for quaternion
2# Description: Desktop client for Matrix 2# Description: Desktop client for Matrix
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include quaternion.local 5include quaternion.local
@@ -25,7 +25,7 @@ whitelist ${HOME}/.config/Quotient
25whitelist ${DOWNLOADS} 25whitelist ${DOWNLOADS}
26whitelist /usr/share/Quotient/quaternion 26whitelist /usr/share/Quotient/quaternion
27include whitelist-common.inc 27include whitelist-common.inc
28include whitelist-runuser-common.inc 28include whitelist-runuser-common.inc
29include whitelist-usr-share-common.inc 29include whitelist-usr-share-common.inc
30include whitelist-var-common.inc 30include whitelist-var-common.inc
31 31
diff --git a/etc/profile-m-z/rhythmbox.profile b/etc/profile-m-z/rhythmbox.profile
index e7f379509..9fb7dc713 100644
--- a/etc/profile-m-z/rhythmbox.profile
+++ b/etc/profile-m-z/rhythmbox.profile
@@ -59,6 +59,7 @@ dbus-user.own org.gnome.Rhythmbox3
59dbus-user.own org.mpris.MediaPlayer2.rhythmbox 59dbus-user.own org.mpris.MediaPlayer2.rhythmbox
60dbus-user.own org.gnome.UPnP.MediaServer2.Rhythmbox 60dbus-user.own org.gnome.UPnP.MediaServer2.Rhythmbox
61dbus-user.talk ca.desrt.dconf 61dbus-user.talk ca.desrt.dconf
62dbus-user.talk org.gtk.vfs.*
62dbus-user.talk org.freedesktop.Notifications 63dbus-user.talk org.freedesktop.Notifications
63dbus-user.talk org.gnome.SettingsDaemon.MediaKeys 64dbus-user.talk org.gnome.SettingsDaemon.MediaKeys
64dbus-system filter 65dbus-system filter
diff --git a/etc/profile-m-z/riot-desktop.profile b/etc/profile-m-z/riot-desktop.profile
index 4372fabe1..e91d25196 100644
--- a/etc/profile-m-z/riot-desktop.profile
+++ b/etc/profile-m-z/riot-desktop.profile
@@ -7,7 +7,5 @@ include riot-desktop.local
7# added by included profile 7# added by included profile
8#include globals.local 8#include globals.local
9 9
10seccomp !chroot
11
12# Redirect 10# Redirect
13include riot-web.profile 11include riot-web.profile
diff --git a/etc/profile-m-z/riot-web.profile b/etc/profile-m-z/riot-web.profile
index b930adf2b..687c943b0 100644
--- a/etc/profile-m-z/riot-web.profile
+++ b/etc/profile-m-z/riot-web.profile
@@ -4,14 +4,15 @@
4# Persistent local customizations 4# Persistent local customizations
5include riot-web.local 5include riot-web.local
6# Persistent global definitions 6# Persistent global definitions
7# added by included profile 7include globals.local
8#include globals.local 8
9ignore noexec /tmp
9 10
10noblacklist ${HOME}/.config/Riot 11noblacklist ${HOME}/.config/Riot
11 12
12mkdir ${HOME}/.config/Riot 13mkdir ${HOME}/.config/Riot
13whitelist ${HOME}/.config/Riot 14whitelist ${HOME}/.config/Riot
14include whitelist-common.inc 15whitelist /usr/share/webapps/element
15 16
16# Redirect 17# Redirect
17include electron.profile 18include electron.profile
diff --git a/etc/profile-m-z/rocketchat.profile b/etc/profile-m-z/rocketchat.profile
index a574e4e8b..8d3607c75 100644
--- a/etc/profile-m-z/rocketchat.profile
+++ b/etc/profile-m-z/rocketchat.profile
@@ -3,14 +3,28 @@
3# Persistent local customizations 3# Persistent local customizations
4include rocketchat.local 4include rocketchat.local
5# Persistent global definitions 5# Persistent global definitions
6# added by included profile 6include globals.local
7#include globals.local 7
8# Disabled until someone reported positive feedback
9ignore include disable-devel.inc
10ignore include disable-exec.inc
11ignore include disable-interpreters.inc
12ignore include disable-xdg.inc
13ignore include whitelist-runuser-common.inc
14ignore include whitelist-usr-share-common.inc
15ignore include whitelist-var-common.inc
16ignore nou2f
17ignore novideo
18ignore shell none
19ignore disable-mnt
20ignore private-cache
21ignore private-dev
22ignore private-tmp
8 23
9noblacklist ${HOME}/.config/Rocket.Chat 24noblacklist ${HOME}/.config/Rocket.Chat
10 25
11mkdir ${HOME}/.config/Rocket.Chat 26mkdir ${HOME}/.config/Rocket.Chat
12whitelist ${HOME}/.config/Rocket.Chat 27whitelist ${HOME}/.config/Rocket.Chat
13include whitelist-common.inc
14 28
15# Redirect 29# Redirect
16include electron.profile 30include electron.profile
diff --git a/etc/profile-m-z/rsync-download_only.profile b/etc/profile-m-z/rsync-download_only.profile
index 95deed119..78159527a 100644
--- a/etc/profile-m-z/rsync-download_only.profile
+++ b/etc/profile-m-z/rsync-download_only.profile
@@ -13,7 +13,6 @@ include globals.local
13# Usage: firejail --profile=rsync-download_only rsync 13# Usage: firejail --profile=rsync-download_only rsync
14 14
15blacklist /tmp/.X11-unix 15blacklist /tmp/.X11-unix
16blacklist ${RUNUSER}/wayland-*
17blacklist ${RUNUSER} 16blacklist ${RUNUSER}
18 17
19include disable-common.inc 18include disable-common.inc
diff --git a/etc/profile-m-z/server.profile b/etc/profile-m-z/server.profile
index 5bc4735ae..d47f1289a 100644
--- a/etc/profile-m-z/server.profile
+++ b/etc/profile-m-z/server.profile
@@ -45,10 +45,17 @@ include disable-common.inc
45# include disable-interpreters.inc 45# include disable-interpreters.inc
46include disable-passwdmgr.inc 46include disable-passwdmgr.inc
47include disable-programs.inc 47include disable-programs.inc
48# include disable-xdg.inc 48include disable-write-mnt.inc
49include disable-xdg.inc
49 50
51# include whitelist-runuser-common.inc
52# include whitelist-usr-share-common.inc
53# include whitelist-var-common.inc
54
55apparmor
50caps 56caps
51# ipc-namespace 57# ipc-namespace
58machine-id
52# netfilter /etc/firejail/webserver.net 59# netfilter /etc/firejail/webserver.net
53no3d 60no3d
54nodvd 61nodvd
@@ -59,19 +66,26 @@ nosound
59notv 66notv
60nou2f 67nou2f
61novideo 68novideo
69# protocol unix,inet,inet6,netlink
62seccomp 70seccomp
63# shell none 71# shell none
64 72
65# disable-mnt 73disable-mnt
66private 74private
67# private-bin program 75# private-bin program
68# private-cache 76# private-cache
69private-dev 77private-dev
78# see /usr/share/doc/firejail/profile.template for more common private-etc paths.
70# private-etc alternatives 79# private-etc alternatives
71# private-lib 80# private-lib
81# private-opt none
72private-tmp 82private-tmp
73 83
74# dbus-user none 84dbus-user none
75# dbus-system none 85# dbus-system none
76 86
77# memory-deny-write-execute 87# memory-deny-write-execute
88# read-only ${HOME}
89# writable-run-user
90# writable-var
91# writable-var-log
diff --git a/etc/profile-m-z/servo.profile b/etc/profile-m-z/servo.profile
new file mode 100644
index 000000000..65da5d0de
--- /dev/null
+++ b/etc/profile-m-z/servo.profile
@@ -0,0 +1,48 @@
1# Firejail profile for servo
2# Description: The Servo Browser Engine
3# This file is overwritten after every install/update
4# Persistent local customizations
5include servo.local
6# Persistent global definitions
7include globals.local
8
9# Servo is usually installed inside $HOME
10ignore noexec ${HOME}
11
12include disable-common.inc
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-passwdmgr.inc
17include disable-programs.inc
18include disable-xdg.inc
19
20# Add a whitelist for the directory where servo is installed and uncomment the lines below.
21#whitelist ${DOWNLOADS}
22#include whitelist-common.inc
23include whitelist-runuser-common.inc
24include whitelist-usr-share-common.inc
25include whitelist-var-common.inc
26
27caps.drop all
28netfilter
29nodvd
30nogroups
31nonewprivs
32noroot
33notv
34nou2f
35novideo
36protocol unix,inet,inet6
37seccomp
38shell none
39tracelog
40
41disable-mnt
42private-bin servo,sh
43private-cache
44private-dev
45private-tmp
46
47dbus-user none
48dbus-system none
diff --git a/etc/profile-m-z/shellcheck.profile b/etc/profile-m-z/shellcheck.profile
index c67a88161..2ae298142 100644
--- a/etc/profile-m-z/shellcheck.profile
+++ b/etc/profile-m-z/shellcheck.profile
@@ -7,7 +7,6 @@ include shellcheck.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11blacklist ${RUNUSER} 10blacklist ${RUNUSER}
12 11
13noblacklist ${DOCUMENTS} 12noblacklist ${DOCUMENTS}
diff --git a/etc/profile-m-z/signal-desktop.profile b/etc/profile-m-z/signal-desktop.profile
index c28571270..08e1c1f03 100644
--- a/etc/profile-m-z/signal-desktop.profile
+++ b/etc/profile-m-z/signal-desktop.profile
@@ -5,6 +5,13 @@ include signal-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 include-xdg.inc
10ignore include whitelist-runuser-common.inc
11ignore include whitelist-usr-share-common.inc
12ignore private-cache
13ignore novideo
14
8ignore noexec /tmp 15ignore noexec /tmp
9 16
10noblacklist ${HOME}/.config/Signal 17noblacklist ${HOME}/.config/Signal
@@ -14,32 +21,12 @@ noblacklist ${HOME}/.mozilla
14whitelist ${HOME}/.mozilla/firefox/profiles.ini 21whitelist ${HOME}/.mozilla/firefox/profiles.ini
15read-only ${HOME}/.mozilla/firefox/profiles.ini 22read-only ${HOME}/.mozilla/firefox/profiles.ini
16 23
17include disable-common.inc
18include disable-devel.inc
19include disable-exec.inc 24include disable-exec.inc
20include disable-interpreters.inc
21include disable-programs.inc
22include disable-passwdmgr.inc
23 25
24mkdir ${HOME}/.config/Signal 26mkdir ${HOME}/.config/Signal
25whitelist ${DOWNLOADS}
26whitelist ${HOME}/.config/Signal 27whitelist ${HOME}/.config/Signal
27include whitelist-common.inc 28
28include whitelist-var-common.inc
29
30apparmor
31caps.keep sys_admin,sys_chroot
32netfilter
33nodvd
34nogroups
35notv
36nou2f
37shell none
38
39disable-mnt
40private-dev
41private-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 29private-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
42private-tmp
43 30
44dbus-user none 31# Redirect
45dbus-system none 32include electron.profile
diff --git a/etc/profile-m-z/skypeforlinux.profile b/etc/profile-m-z/skypeforlinux.profile
index 341c25a95..b39763981 100644
--- a/etc/profile-m-z/skypeforlinux.profile
+++ b/etc/profile-m-z/skypeforlinux.profile
@@ -5,27 +5,24 @@ include skypeforlinux.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 whitelist ${DOWNLOADS}
10ignore include whitelist-common.inc
11ignore include whitelist-runuser-common.inc
12ignore include whitelist-usr-share-common.inc
13ignore include whitelist-var-common.inc
14ignore nou2f
15ignore novideo
16ignore private-dev
17ignore dbus-user none
18ignore dbus-system none
19
8# breaks Skype 20# breaks Skype
9ignore noexec /tmp 21ignore noexec /tmp
10 22
11noblacklist ${HOME}/.config/skypeforlinux 23noblacklist ${HOME}/.config/skypeforlinux
12 24
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-xdg.inc
20
21caps.keep sys_admin,sys_chroot
22netfilter
23nodvd
24nogroups
25notv
26shell none
27
28disable-mnt
29private-cache
30# private-dev - needs /dev/disk 25# private-dev - needs /dev/disk
31private-tmp 26
27# Redirect
28include electron.profile
diff --git a/etc/profile-m-z/slack.profile b/etc/profile-m-z/slack.profile
index 8ab3edd63..9ad772cd5 100644
--- a/etc/profile-m-z/slack.profile
+++ b/etc/profile-m-z/slack.profile
@@ -5,31 +5,26 @@ include slack.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 include disable-exec.inc
10ignore include disable-xdg.inc
11ignore include whitelist-runuser-common.inc
12ignore include whitelist-usr-share-common.inc
13ignore apparmor
14ignore novideo
15ignore private-tmp
16ignore dbus-user none
17ignore dbus-system none
18
8noblacklist ${HOME}/.config/Slack 19noblacklist ${HOME}/.config/Slack
9 20
10include disable-common.inc
11include disable-devel.inc
12include disable-interpreters.inc
13include disable-passwdmgr.inc
14include disable-programs.inc
15include disable-shell.inc 21include disable-shell.inc
16 22
17mkdir ${HOME}/.config/Slack 23mkdir ${HOME}/.config/Slack
18whitelist ${HOME}/.config/Slack 24whitelist ${HOME}/.config/Slack
19whitelist ${DOWNLOADS}
20include whitelist-common.inc
21include whitelist-var-common.inc
22
23caps.keep sys_admin,sys_chroot
24netfilter
25nodvd
26nogroups
27notv
28nou2f
29shell none
30 25
31disable-mnt
32private-bin locale,slack 26private-bin locale,slack
33private-cache
34private-dev
35private-etc alternatives,asound.conf,ca-certificates,crypto-policies,debian_version,fedora-release,fonts,group,ld.so.cache,ld.so.conf,localtime,machine-id,os-release,passwd,pki,pulse,redhat-release,resolv.conf,ssl,system-release,system-release-cpe 27private-etc alternatives,asound.conf,ca-certificates,crypto-policies,debian_version,fedora-release,fonts,group,ld.so.cache,ld.so.conf,localtime,machine-id,os-release,passwd,pki,pulse,redhat-release,resolv.conf,ssl,system-release,system-release-cpe
28
29# Redirect
30include electron.profile
diff --git a/etc/inc/softmaker-common.inc b/etc/profile-m-z/softmaker-common.profile
index a8ec5848c..a8ec5848c 100644
--- a/etc/inc/softmaker-common.inc
+++ b/etc/profile-m-z/softmaker-common.profile
diff --git a/etc/profile-m-z/spectral.profile b/etc/profile-m-z/spectral.profile
index d7f94e144..093661d8c 100644
--- a/etc/profile-m-z/spectral.profile
+++ b/etc/profile-m-z/spectral.profile
@@ -1,5 +1,5 @@
1# Firejail profile for spectral 1# Firejail profile for spectral
2# Description: Desktop client for Matrix 2# Description: Desktop client for Matrix
3# This file is overwritten after every install/update 3# This file is overwritten after every install/update
4# Persistent local customizations 4# Persistent local customizations
5include spectral.local 5include spectral.local
@@ -24,7 +24,7 @@ whitelist ${HOME}/.cache/ENCOM/Spectral
24whitelist ${HOME}/.config/ENCOM 24whitelist ${HOME}/.config/ENCOM
25whitelist ${DOWNLOADS} 25whitelist ${DOWNLOADS}
26include whitelist-common.inc 26include whitelist-common.inc
27include whitelist-runuser-common.inc 27include whitelist-runuser-common.inc
28include whitelist-usr-share-common.inc 28include whitelist-usr-share-common.inc
29include whitelist-var-common.inc 29include whitelist-var-common.inc
30 30
@@ -50,4 +50,8 @@ private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,
50private-tmp 50private-tmp
51 51
52dbus-user none 52dbus-user none
53# Comment the above line and uncomment below lines for notification popups
54# dbus-user filter
55# dbus-user.talk org.freedesktop.Notifications
56# dbus-user.talk org.kde.StatusNotifierWatcher
53dbus-system none 57dbus-system none
diff --git a/etc/profile-m-z/ssh.profile b/etc/profile-m-z/ssh.profile
index 78b12c2cb..d873a5672 100644
--- a/etc/profile-m-z/ssh.profile
+++ b/etc/profile-m-z/ssh.profile
@@ -34,7 +34,7 @@ nonewprivs
34# noroot - see issue #1543 34# noroot - see issue #1543
35nosound 35nosound
36notv 36notv
37# nou2f - OpenSSH >= 8.2 supports U2F 37# nou2f - OpenSSH >= 8.2 supports U2F
38novideo 38novideo
39protocol unix,inet,inet6 39protocol unix,inet,inet6
40seccomp 40seccomp
diff --git a/etc/profile-m-z/steam.profile b/etc/profile-m-z/steam.profile
index 7292f189c..55078d993 100644
--- a/etc/profile-m-z/steam.profile
+++ b/etc/profile-m-z/steam.profile
@@ -109,10 +109,10 @@ shell none
109# picture viewers are needed for viewing screenshots 109# picture viewers are needed for viewing screenshots
110#private-bin eog,eom,gthumb,pix,viewnior,xviewer 110#private-bin eog,eom,gthumb,pix,viewnior,xviewer
111 111
112# private-dev should be commented for controllers 112# comment the following line if you need controller support
113private-dev 113private-dev
114# private-etc breaks a small selection of games on some systems, comment to support those 114# private-etc breaks a small selection of games on some systems, comment to support those
115private-etc alternatives,asound.conf,bumblebee,ca-certificates,crypto-policies,dbus-1,drirc,fonts,group,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,localtime,lsb-release,machine-id,mime.types,nvidia,os-release,passwd,pki,pulse,resolv.conf,services,ssl 115private-etc alsa,alternatives,asound.conf,bumblebee,ca-certificates,crypto-policies,dbus-1,drirc,fonts,group,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,localtime,lsb-release,machine-id,mime.types,nvidia,os-release,passwd,pki,pulse,resolv.conf,services,ssl
116private-tmp 116private-tmp
117 117
118# breaks appindicator support 118# breaks appindicator support
diff --git a/etc/profile-m-z/straw-viewer.profile b/etc/profile-m-z/straw-viewer.profile
new file mode 100644
index 000000000..721ad38ee
--- /dev/null
+++ b/etc/profile-m-z/straw-viewer.profile
@@ -0,0 +1,58 @@
1# Firejail profile for straw-viewer
2# Description: Fork of youtube-viewer acts like an invidious frontend
3quiet
4# This file is overwritten after every install/update
5# Persistent local customizations
6include straw-viewer.local
7# Persistent global definitions
8include globals.local
9
10noblacklist ${HOME}/.cache/straw-viewer
11noblacklist ${HOME}/.config/straw-viewer
12
13include allow-lua.inc
14include allow-perl.inc
15include allow-python2.inc
16include allow-python3.inc
17
18include disable-common.inc
19include disable-devel.inc
20include disable-exec.inc
21include disable-interpreters.inc
22include disable-passwdmgr.inc
23include disable-programs.inc
24include disable-xdg.inc
25
26mkdir ${HOME}/.config/straw-viewer
27mkdir ${HOME}/.cache/straw-viewer
28whitelist ${HOME}/.cache/straw-viewer
29whitelist ${HOME}/.config/straw-viewer
30whitelist ${DOWNLOADS}
31include whitelist-common.inc
32include whitelist-usr-share-common.inc
33include whitelist-var-common.inc
34
35apparmor
36caps.drop all
37netfilter
38nodvd
39nogroups
40nonewprivs
41noroot
42notv
43nou2f
44novideo
45protocol unix,inet,inet6
46seccomp
47shell none
48tracelog
49
50disable-mnt
51private-bin bash,ffmpeg,ffprobe,gtk-straw-viewer,mpv,perl,python*,sh,smplayer,straw-viewer,stty,vlc,wget,which,youtube-dl
52private-cache
53private-dev
54private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,machine-id,mime.types,nsswitch.conf,passwd,pki,pulse,resolv.conf,ssl,X11,xdg
55private-tmp
56
57dbus-user none
58dbus-system none
diff --git a/etc/profile-m-z/strawberry.profile b/etc/profile-m-z/strawberry.profile
index cd36c0d41..0801add28 100644
--- a/etc/profile-m-z/strawberry.profile
+++ b/etc/profile-m-z/strawberry.profile
@@ -21,7 +21,7 @@ include disable-xdg.inc
21 21
22include whitelist-runuser-common.inc 22include whitelist-runuser-common.inc
23include whitelist-usr-share-common.inc 23include whitelist-usr-share-common.inc
24include whitelist-var-common.inc 24include whitelist-var-common.inc
25 25
26apparmor 26apparmor
27caps.drop all 27caps.drop all
diff --git a/etc/profile-m-z/strings.profile b/etc/profile-m-z/strings.profile
index 09ada1e25..6a582532d 100644
--- a/etc/profile-m-z/strings.profile
+++ b/etc/profile-m-z/strings.profile
@@ -7,7 +7,6 @@ include strings.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11blacklist ${RUNUSER} 10blacklist ${RUNUSER}
12 11
13#include disable-common.inc 12#include disable-common.inc
diff --git a/etc/profile-m-z/supertuxkart.profile b/etc/profile-m-z/supertuxkart.profile
index ff99c234e..1b20f5d3d 100644
--- a/etc/profile-m-z/supertuxkart.profile
+++ b/etc/profile-m-z/supertuxkart.profile
@@ -41,7 +41,7 @@ noroot
41notv 41notv
42nou2f 42nou2f
43novideo 43novideo
44protocol unix,inet,inet6 44protocol unix,inet,inet6,bluetooth
45seccomp 45seccomp
46seccomp.block-secondary 46seccomp.block-secondary
47shell none 47shell none
@@ -50,7 +50,8 @@ tracelog
50disable-mnt 50disable-mnt
51private-bin supertuxkart 51private-bin supertuxkart
52private-cache 52private-cache
53private-dev 53# uncomment the following line if you do not need controller support
54#private-dev
54private-etc alternatives,ca-certificates,crypto-policies,drirc,hosts,machine-id,openal,pki,resolv.conf,ssl 55private-etc alternatives,ca-certificates,crypto-policies,drirc,hosts,machine-id,openal,pki,resolv.conf,ssl
55private-tmp 56private-tmp
56private-opt none 57private-opt none
diff --git a/etc/profile-m-z/sysprof.profile b/etc/profile-m-z/sysprof.profile
index ad3346285..9e9d2a448 100644
--- a/etc/profile-m-z/sysprof.profile
+++ b/etc/profile-m-z/sysprof.profile
@@ -6,6 +6,7 @@ include sysprof.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9noblacklist ${DOCUMENTS}
9include disable-common.inc 10include disable-common.inc
10include disable-devel.inc 11include disable-devel.inc
11include disable-exec.inc 12include disable-exec.inc
@@ -14,6 +15,19 @@ include disable-passwdmgr.inc
14include disable-programs.inc 15include disable-programs.inc
15include disable-xdg.inc 16include disable-xdg.inc
16 17
18# help menu functionality (yelp) - comment or add this block prepended with 'ignore'
19# to your sysprof.local if you don't need the help functionality
20noblacklist ${HOME}/.config/yelp
21mkdir ${HOME}/.config/yelp
22whitelist ${HOME}/.config/yelp
23whitelist /usr/share/help/C/sysprof
24whitelist /usr/share/yelp
25whitelist /usr/share/yelp-tools
26whitelist /usr/share/yelp-xsl
27
28whitelist ${DOCUMENTS}
29include whitelist-common.inc
30include whitelist-runuser-common.inc
17include whitelist-usr-share-common.inc 31include whitelist-usr-share-common.inc
18include whitelist-var-common.inc 32include whitelist-var-common.inc
19 33
@@ -26,27 +40,30 @@ no3d
26nodvd 40nodvd
27nogroups 41nogroups
28nonewprivs 42nonewprivs
29# Ubuntu 16.04 version needs root privileges - uncomment or put in sysprof.local if you don't use that 43# Ubuntu 16.04 version needs root privileges - comment or put 'ignore noroot' in sysprof.local if you run Xenial
30#noroot 44noroot
31nosound 45nosound
32notv 46notv
33nou2f 47nou2f
34novideo 48novideo
35protocol unix,netlink 49protocol unix,netlink
50seccomp
36shell none 51shell none
37tracelog 52tracelog
38 53
39disable-mnt 54disable-mnt
40#private-bin sysprof - breaks GUI help menu 55#private-bin sysprof - breaks help menu
41private-cache 56private-cache
42private-dev 57private-dev
43private-etc alternatives,fonts,ld.so.cache,machine-id,ssl 58private-etc alternatives,fonts,ld.so.cache,machine-id,ssl
44# private-lib breaks GUI help menu 59# private-lib breaks help menu
45#private-lib gdk-pixbuf-2.*,gio,gtk3,gvfs/libgvfscommon.so,libgconf-2.so.*,librsvg-2.so.*,libsysprof-2.so,libsysprof-ui-2.so 60#private-lib gdk-pixbuf-2.*,gio,gtk3,gvfs/libgvfscommon.so,libgconf-2.so.*,librsvg-2.so.*,libsysprof-2.so,libsysprof-ui-2.so
46private-tmp 61private-tmp
47 62
48# makes settings immutable 63dbus-user filter
49# dbus-user none 64dbus-user.own org.gnome.Shell
50# dbus-system none 65dbus-user.own org.gnome.Yelp
66dbus-user.own org.gnome.Sysprof3
67dbus-user.talk ca.desrt.dconf
51 68
52# memory-deny-write-execute - Breaks GUI on Arch 69# memory-deny-write-execute - breaks on Arch
diff --git a/etc/profile-m-z/tar.profile b/etc/profile-m-z/tar.profile
index 3a7405305..f6efb0feb 100644
--- a/etc/profile-m-z/tar.profile
+++ b/etc/profile-m-z/tar.profile
@@ -7,49 +7,13 @@ include tar.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11
12# Arch Linux (based distributions) need access to /var/lib/pacman. As we drop all capabilities this is automatically read-only. 10# Arch Linux (based distributions) need access to /var/lib/pacman. As we drop all capabilities this is automatically read-only.
13noblacklist /var/lib/pacman 11noblacklist /var/lib/pacman
14 12
15include disable-common.inc 13ignore include disable-shell.inc
16include disable-devel.inc 14include archiver-common.inc
17include disable-exec.inc
18include disable-interpreters.inc
19include disable-passwdmgr.inc
20include disable-programs.inc
21
22apparmor
23caps.drop all
24hostname tar
25ipc-namespace
26machine-id
27net none
28no3d
29nodvd
30nogroups
31nonewprivs
32#noroot
33nosound
34notv
35nou2f
36novideo
37protocol unix
38seccomp
39shell none
40tracelog
41x11 none
42 15
43# support compressed archives
44private-bin awk,bash,bzip2,compress,firejail,grep,gtar,gzip,lbzip2,lzip,lzma,lzop,sh,tar,xz
45private-cache
46private-dev
47private-etc alternatives,group,localtime,login.defs,passwd 16private-etc alternatives,group,localtime,login.defs,passwd
48private-lib libfakeroot 17#private-lib libfakeroot,liblzma.so.*,libreadline.so.*
49# Debian based distributions need this for 'dpkg --unpack' (incl. synaptic) 18# Debian based distributions need this for 'dpkg --unpack' (incl. synaptic)
50writable-var 19writable-var
51
52dbus-user none
53dbus-system none
54
55memory-deny-write-execute
diff --git a/etc/profile-m-z/teams-for-linux.profile b/etc/profile-m-z/teams-for-linux.profile
index a13c92bc3..eee083332 100644
--- a/etc/profile-m-z/teams-for-linux.profile
+++ b/etc/profile-m-z/teams-for-linux.profile
@@ -4,33 +4,23 @@
4# Persistent local customizations 4# Persistent local customizations
5include teams-for-linux.local 5include teams-for-linux.local
6# Persistent global definitions 6# Persistent global definitions
7# added by included profile 7include globals.local
8#include globals.local 8
9# Disabled until someone reported positive feedback
10ignore include disable-xdg.inc
11ignore include whitelist-runuser-common.inc
12ignore include whitelist-usr-share-common.inc
9 13
10ignore dbus-user none 14ignore dbus-user none
11ignore dbus-system none 15ignore dbus-system none
12 16
13noblacklist ${HOME}/.config/teams-for-linux 17noblacklist ${HOME}/.config/teams-for-linux
14 18
15include disable-devel.inc
16include disable-exec.inc
17include disable-interpreters.inc
18
19mkdir ${HOME}/.config/teams-for-linux 19mkdir ${HOME}/.config/teams-for-linux
20whitelist ${HOME}/.config/teams-for-linux 20whitelist ${HOME}/.config/teams-for-linux
21include whitelist-common.inc
22include whitelist-var-common.inc
23
24nou2f
25novideo
26shell none
27 21
28disable-mnt
29private-bin bash,cut,echo,egrep,grep,head,sed,sh,teams-for-linux,tr,xdg-mime,xdg-open,zsh 22private-bin bash,cut,echo,egrep,grep,head,sed,sh,teams-for-linux,tr,xdg-mime,xdg-open,zsh
30private-cache
31private-dev
32private-etc ca-certificates,crypto-policies,fonts,ld.so.cache,localtime,machine-id,pki,resolv.conf,ssl 23private-etc ca-certificates,crypto-policies,fonts,ld.so.cache,localtime,machine-id,pki,resolv.conf,ssl
33private-tmp
34 24
35# Redirect 25# Redirect
36include electron.profile 26include electron.profile
diff --git a/etc/profile-m-z/teams.profile b/etc/profile-m-z/teams.profile
index bd7faa80a..c8d98cbaa 100644
--- a/etc/profile-m-z/teams.profile
+++ b/etc/profile-m-z/teams.profile
@@ -4,8 +4,14 @@
4# Persistent local customizations 4# Persistent local customizations
5include teams.local 5include teams.local
6# Persistent global definitions 6# Persistent global definitions
7# added by included profile 7include globals.local
8#include globals.local 8
9# Disabled until someone reported positive feedback
10ignore include disable-xdg.inc
11ignore include whitelist-runuser-common.inc
12ignore include whitelist-usr-share-common.inc
13ignore novideo
14ignore private-tmp
9 15
10# see #3404 16# see #3404
11ignore apparmor 17ignore apparmor
@@ -15,24 +21,10 @@ ignore dbus-system none
15noblacklist ${HOME}/.config/teams 21noblacklist ${HOME}/.config/teams
16noblacklist ${HOME}/.config/Microsoft 22noblacklist ${HOME}/.config/Microsoft
17 23
18include disable-devel.inc
19include disable-exec.inc
20include disable-interpreters.inc
21
22mkdir ${HOME}/.config/teams 24mkdir ${HOME}/.config/teams
23mkdir ${HOME}/.config/Microsoft 25mkdir ${HOME}/.config/Microsoft
24whitelist ${HOME}/.config/teams 26whitelist ${HOME}/.config/teams
25whitelist ${HOME}/.config/Microsoft 27whitelist ${HOME}/.config/Microsoft
26include whitelist-common.inc
27include whitelist-var-common.inc
28
29nou2f
30shell none
31tracelog
32
33disable-mnt
34private-cache
35private-dev
36 28
37# Redirect 29# Redirect
38include electron.profile 30include electron.profile
diff --git a/etc/profile-m-z/telegram.profile b/etc/profile-m-z/telegram.profile
index 5be834fb0..0e7413fc9 100644
--- a/etc/profile-m-z/telegram.profile
+++ b/etc/profile-m-z/telegram.profile
@@ -25,5 +25,5 @@ seccomp
25 25
26disable-mnt 26disable-mnt
27private-cache 27private-cache
28private-etc alsa,ca-certificates,crypto-policies,fonts,group,ld.so.cache,localtime,machine-id,pki,pulse,resolv.conf,ssl 28private-etc alsa,alternatives,ca-certificates,crypto-policies,fonts,group,ld.so.cache,localtime,machine-id,os-release,pki,pulse,resolv.conf,ssl,xdg
29private-tmp 29private-tmp
diff --git a/etc/profile-m-z/textmaker18.profile b/etc/profile-m-z/textmaker18.profile
index d28947394..e5a4b6454 100644
--- a/etc/profile-m-z/textmaker18.profile
+++ b/etc/profile-m-z/textmaker18.profile
@@ -7,5 +7,5 @@ include textmaker18.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
11 11
diff --git a/etc/profile-m-z/textmaker18free.profile b/etc/profile-m-z/textmaker18free.profile
index 7b4fd5b08..0e918bf0a 100644
--- a/etc/profile-m-z/textmaker18free.profile
+++ b/etc/profile-m-z/textmaker18free.profile
@@ -7,5 +7,5 @@ include textmaker18free.local
7include globals.local 7include globals.local
8 8
9# Redirect 9# Redirect
10include softmaker-common.inc 10include softmaker-common.profile
11 11
diff --git a/etc/profile-m-z/thunderbird.profile b/etc/profile-m-z/thunderbird.profile
index 2e7b69cec..b478fbe1e 100644
--- a/etc/profile-m-z/thunderbird.profile
+++ b/etc/profile-m-z/thunderbird.profile
@@ -6,7 +6,7 @@ include thunderbird.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9ignore whitelist-runuser-common.inc 9ignore include whitelist-runuser-common.inc
10 10
11# writable-run-user and dbus are needed by enigmail 11# writable-run-user and dbus are needed by enigmail
12ignore dbus-user none 12ignore dbus-user none
diff --git a/etc/profile-m-z/totem.profile b/etc/profile-m-z/totem.profile
index 7bb2f3e2d..36495064e 100644
--- a/etc/profile-m-z/totem.profile
+++ b/etc/profile-m-z/totem.profile
@@ -30,7 +30,7 @@ whitelist ${HOME}/.config/totem
30whitelist ${HOME}/.local/share/totem 30whitelist ${HOME}/.local/share/totem
31whitelist /usr/share/totem 31whitelist /usr/share/totem
32include whitelist-common.inc 32include whitelist-common.inc
33include whitelist-players.inc 33include whitelist-player-common.inc
34include whitelist-runuser-common.inc 34include whitelist-runuser-common.inc
35include whitelist-usr-share-common.inc 35include whitelist-usr-share-common.inc
36include whitelist-var-common.inc 36include whitelist-var-common.inc
diff --git a/etc/profile-m-z/twitch.profile b/etc/profile-m-z/twitch.profile
index 3c50344f1..2f573c872 100644
--- a/etc/profile-m-z/twitch.profile
+++ b/etc/profile-m-z/twitch.profile
@@ -6,31 +6,20 @@ include twitch.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# Disabled until someone reported positive feedback
10ignore nou2f
11ignore novideo
12
9noblacklist ${HOME}/.config/Twitch 13noblacklist ${HOME}/.config/Twitch
10 14
11include disable-devel.inc 15include disable-shell.inc
12include disable-exec.inc
13include disable-interpreters.inc
14include disable-shell.inc
15include disable-xdg.inc
16 16
17mkdir ${HOME}/.config/Twitch 17mkdir ${HOME}/.config/Twitch
18whitelist ${HOME}/.config/Twitch 18whitelist ${HOME}/.config/Twitch
19include whitelist-common.inc
20include whitelist-runuser-common.inc
21include whitelist-usr-share-common.inc
22include whitelist-var-common.inc
23
24seccomp !chroot
25shell none
26 19
27disable-mnt
28private-bin twitch 20private-bin twitch
29private-cache
30private-dev
31private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg 21private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
32private-opt Twitch 22private-opt Twitch
33private-tmp
34 23
35# Redirect 24# Redirect
36include electron.profile 25include electron.profile
diff --git a/etc/profile-m-z/unrar.profile b/etc/profile-m-z/unrar.profile
index e07a6fc93..9487f8e68 100644
--- a/etc/profile-m-z/unrar.profile
+++ b/etc/profile-m-z/unrar.profile
@@ -7,40 +7,8 @@ include unrar.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-* 10include archiver-common.inc
11
12include disable-common.inc
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-passwdmgr.inc
17include disable-programs.inc
18include disable-shell.inc
19
20caps.drop all
21hostname unrar
22ipc-namespace
23machine-id
24net none
25no3d
26nodvd
27#nogroups
28nonewprivs
29#noroot
30nosound
31notv
32nou2f
33novideo
34protocol unix
35seccomp
36shell none
37tracelog
38x11 none
39 11
40private-bin unrar 12private-bin unrar
41private-dev
42private-etc alternatives,group,localtime,passwd 13private-etc alternatives,group,localtime,passwd
43private-tmp 14private-tmp
44
45dbus-user none
46dbus-system none
diff --git a/etc/profile-m-z/unzip.profile b/etc/profile-m-z/unzip.profile
index e08511c12..8da9ea820 100644
--- a/etc/profile-m-z/unzip.profile
+++ b/etc/profile-m-z/unzip.profile
@@ -7,42 +7,9 @@ include unzip.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-*
11
12# GNOME Shell integration (chrome-gnome-shell) 10# GNOME Shell integration (chrome-gnome-shell)
13noblacklist ${HOME}/.local/share/gnome-shell 11noblacklist ${HOME}/.local/share/gnome-shell
14 12
15include disable-common.inc 13include archiver-common.inc
16include disable-devel.inc
17include disable-exec.inc
18include disable-interpreters.inc
19include disable-passwdmgr.inc
20include disable-programs.inc
21include disable-shell.inc
22
23caps.drop all
24hostname unzip
25ipc-namespace
26machine-id
27net none
28no3d
29nodvd
30#nogroups
31nonewprivs
32noroot
33nosound
34notv
35nou2f
36novideo
37protocol unix
38seccomp
39shell none
40tracelog
41x11 none
42 14
43private-bin unzip
44private-dev
45private-etc alternatives,group,localtime,passwd 15private-etc alternatives,group,localtime,passwd
46
47dbus-user none
48dbus-system none
diff --git a/etc/profile-m-z/vivaldi.profile b/etc/profile-m-z/vivaldi.profile
index cd06b7f4c..fdeb0307f 100644
--- a/etc/profile-m-z/vivaldi.profile
+++ b/etc/profile-m-z/vivaldi.profile
@@ -35,5 +35,7 @@ whitelist ${HOME}/.local/lib/vivaldi
35ignore dbus-user none 35ignore dbus-user none
36ignore dbus-system none 36ignore dbus-system none
37 37
38read-write ${HOME}/.local/lib/vivaldi
39
38# Redirect 40# Redirect
39include chromium-common.profile 41include chromium-common.profile
diff --git a/etc/profile-m-z/vlc.profile b/etc/profile-m-z/vlc.profile
index fc8efe089..9a12686cd 100644
--- a/etc/profile-m-z/vlc.profile
+++ b/etc/profile-m-z/vlc.profile
@@ -27,7 +27,7 @@ whitelist ${HOME}/.config/vlc
27whitelist ${HOME}/.config/aacs 27whitelist ${HOME}/.config/aacs
28whitelist ${HOME}/.local/share/vlc 28whitelist ${HOME}/.local/share/vlc
29include whitelist-common.inc 29include whitelist-common.inc
30include whitelist-players.inc 30include whitelist-player-common.inc
31include whitelist-var-common.inc 31include whitelist-var-common.inc
32 32
33#apparmor - on Ubuntu 18.04 it refuses to start without dbus access 33#apparmor - on Ubuntu 18.04 it refuses to start without dbus access
diff --git a/etc/profile-m-z/w3m.profile b/etc/profile-m-z/w3m.profile
index bd33edd6a..0e172333a 100644
--- a/etc/profile-m-z/w3m.profile
+++ b/etc/profile-m-z/w3m.profile
@@ -7,6 +7,11 @@ include w3m.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10# Uncomment or add to your w3m.local if you want to use w3m-img on a vconsole
11#ignore nogroups
12#ignore private-dev
13#ignore private-etc
14
10noblacklist ${HOME}/.w3m 15noblacklist ${HOME}/.w3m
11 16
12blacklist /tmp/.X11-unix 17blacklist /tmp/.X11-unix
diff --git a/etc/profile-m-z/wget.profile b/etc/profile-m-z/wget.profile
index 8a64d2d73..f67d28618 100644
--- a/etc/profile-m-z/wget.profile
+++ b/etc/profile-m-z/wget.profile
@@ -12,7 +12,6 @@ noblacklist ${HOME}/.wget-hsts
12noblacklist ${HOME}/.wgetrc 12noblacklist ${HOME}/.wgetrc
13 13
14blacklist /tmp/.X11-unix 14blacklist /tmp/.X11-unix
15blacklist ${RUNUSER}/wayland-*
16blacklist ${RUNUSER} 15blacklist ${RUNUSER}
17 16
18include disable-common.inc 17include disable-common.inc
diff --git a/etc/profile-m-z/whalebird.profile b/etc/profile-m-z/whalebird.profile
index 187c49ed8..22a84274d 100644
--- a/etc/profile-m-z/whalebird.profile
+++ b/etc/profile-m-z/whalebird.profile
@@ -4,36 +4,24 @@
4# Persistent local customizations 4# Persistent local customizations
5include whalebird.local 5include whalebird.local
6# Persistent global definitions 6# Persistent global definitions
7# added by included profile 7include globals.local
8#include globals.local 8
9# Disabled until someone reported positive feedback
10ignore include whitelist-runuser-common.inc
11ignore include whitelist-usr-share-common.inc
9 12
10ignore dbus-user none 13ignore dbus-user none
11ignore dbus-system none 14ignore dbus-system none
12 15
13noblacklist ${HOME}/.config/Whalebird 16noblacklist ${HOME}/.config/Whalebird
14 17
15include disable-devel.inc
16include disable-exec.inc
17include disable-interpreters.inc
18include disable-xdg.inc
19
20mkdir ${HOME}/.config/Whalebird 18mkdir ${HOME}/.config/Whalebird
21whitelist ${HOME}/.config/Whalebird 19whitelist ${HOME}/.config/Whalebird
22include whitelist-common.inc
23include whitelist-var-common.inc
24 20
25no3d 21no3d
26nou2f
27novideo
28protocol unix,inet,inet6
29shell none
30 22
31disable-mnt
32private-bin whalebird 23private-bin whalebird
33private-cache
34private-dev
35private-etc fonts,machine-id 24private-etc fonts,machine-id
36private-tmp
37 25
38# Redirect 26# Redirect
39include electron.profile 27include electron.profile
diff --git a/etc/profile-m-z/whois.profile b/etc/profile-m-z/whois.profile
index a9cecb18d..fa7a16093 100644
--- a/etc/profile-m-z/whois.profile
+++ b/etc/profile-m-z/whois.profile
@@ -8,7 +8,6 @@ include whois.local
8include globals.local 8include globals.local
9 9
10blacklist /tmp/.X11-unix 10blacklist /tmp/.X11-unix
11blacklist ${RUNUSER}/wayland-*
12blacklist ${RUNUSER} 11blacklist ${RUNUSER}
13 12
14include disable-common.inc 13include disable-common.inc
diff --git a/etc/profile-m-z/wine.profile b/etc/profile-m-z/wine.profile
index 901340052..6ac74b9da 100644
--- a/etc/profile-m-z/wine.profile
+++ b/etc/profile-m-z/wine.profile
@@ -6,6 +6,7 @@ include wine.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9noblacklist ${HOME}/.cache/winetricks
9noblacklist ${HOME}/.Steam 10noblacklist ${HOME}/.Steam
10noblacklist ${HOME}/.local/share/Steam 11noblacklist ${HOME}/.local/share/Steam
11noblacklist ${HOME}/.local/share/steam 12noblacklist ${HOME}/.local/share/steam
@@ -19,6 +20,8 @@ include disable-interpreters.inc
19include disable-passwdmgr.inc 20include disable-passwdmgr.inc
20include disable-programs.inc 21include disable-programs.inc
21 22
23# whitelist /usr/share/wine
24# include whitelist-usr-share-common.inc
22include whitelist-var-common.inc 25include whitelist-var-common.inc
23 26
24# some applications don't need allow-debuggers, comment the next line 27# some applications don't need allow-debuggers, comment the next line
diff --git a/etc/profile-m-z/wire-desktop.profile b/etc/profile-m-z/wire-desktop.profile
index d265c6bae..151cd2adb 100644
--- a/etc/profile-m-z/wire-desktop.profile
+++ b/etc/profile-m-z/wire-desktop.profile
@@ -4,33 +4,29 @@
4# Persistent local customizations 4# Persistent local customizations
5include wire-desktop.local 5include wire-desktop.local
6# Persistent global definitions 6# Persistent global definitions
7# added by included profile 7include globals.local
8#include globals.local
9 8
10# Debian/Ubuntu use /opt/Wire. As that is not in PATH by default, run `firejail /opt/Wire/wire-desktop` to start it. 9# Debian/Ubuntu use /opt/Wire. As that is not in PATH by default, run `firejail /opt/Wire/wire-desktop` to start it.
11 10
11# Disabled until someone reported positive feedback
12ignore include disable-exec.inc
13ignore include disable-xdg.inc
14ignore include whitelist-runuser-common.inc
15ignore include whitelist-usr-share-common.inc
16ignore include whitelist-var-common.inc
17ignore novideo
18ignore private-cache
19
12ignore dbus-user none 20ignore dbus-user none
13ignore dbus-system none 21ignore dbus-system none
14 22
15noblacklist ${HOME}/.config/Wire 23noblacklist ${HOME}/.config/Wire
16 24
17include disable-devel.inc
18include disable-interpreters.inc
19
20mkdir ${HOME}/.config/Wire 25mkdir ${HOME}/.config/Wire
21whitelist ${HOME}/.config/Wire 26whitelist ${HOME}/.config/Wire
22include whitelist-common.inc
23
24nou2f
25ignore seccomp
26seccomp !chroot
27shell none
28 27
29disable-mnt
30private-bin bash,electron,electron[0-9],electron[0-9][0-9],env,sh,wire-desktop 28private-bin bash,electron,electron[0-9],electron[0-9][0-9],env,sh,wire-desktop
31private-dev
32private-etc alternatives,ca-certificates,crypto-policies,fonts,machine-id,pki,resolv.conf,ssl 29private-etc alternatives,ca-certificates,crypto-policies,fonts,machine-id,pki,resolv.conf,ssl
33private-tmp
34 30
35# Redirect 31# Redirect
36include electron.profile 32include electron.profile
diff --git a/etc/profile-m-z/xfce4-mixer.profile b/etc/profile-m-z/xfce4-mixer.profile
index 6ff4a1103..78cb2862c 100644
--- a/etc/profile-m-z/xfce4-mixer.profile
+++ b/etc/profile-m-z/xfce4-mixer.profile
@@ -19,6 +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/xfce4 23whitelist /usr/share/xfce4
23whitelist /usr/share/xfce4-mixer 24whitelist /usr/share/xfce4-mixer
24include whitelist-common.inc 25include whitelist-common.inc
@@ -48,7 +49,9 @@ private-dev
48private-etc alternatives,asound.conf,fonts,machine-id,pulse 49private-etc alternatives,asound.conf,fonts,machine-id,pulse
49private-tmp 50private-tmp
50 51
51# dbus-user none 52dbus-user filter
52# dbus-system none 53dbus-user.own org.xfce.xfce4-mixer
54dbus-user.talk org.xfce.Xfconf
55dbus-system none
53 56
54memory-deny-write-execute 57# memory-deny-write-execute - breaks on Arch
diff --git a/etc/profile-m-z/xfce4-screenshooter.profile b/etc/profile-m-z/xfce4-screenshooter.profile
index b760b44dd..c9200304c 100644
--- a/etc/profile-m-z/xfce4-screenshooter.profile
+++ b/etc/profile-m-z/xfce4-screenshooter.profile
@@ -48,4 +48,4 @@ private-tmp
48dbus-user none 48dbus-user none
49dbus-system none 49dbus-system none
50 50
51memory-deny-write-execute 51# memory-deny-write-execute -- see #3790
diff --git a/etc/profile-m-z/xournalpp.profile b/etc/profile-m-z/xournalpp.profile
index a52858870..988b878b9 100644
--- a/etc/profile-m-z/xournalpp.profile
+++ b/etc/profile-m-z/xournalpp.profile
@@ -18,7 +18,7 @@ include whitelist-runuser-common.inc
18 18
19#mkdir ${HOME}/.xournalpp 19#mkdir ${HOME}/.xournalpp
20#whitelist ${HOME}/.xournalpp 20#whitelist ${HOME}/.xournalpp
21#whitelist ${HOME}/.texlive2019 21#whitelist ${HOME}/.texlive20*
22#whitelist ${DOCUMENTS} 22#whitelist ${DOCUMENTS}
23#include whitelist-common.inc 23#include whitelist-common.inc
24 24
diff --git a/etc/profile-m-z/xplayer.profile b/etc/profile-m-z/xplayer.profile
index d22d04818..f0290f461 100644
--- a/etc/profile-m-z/xplayer.profile
+++ b/etc/profile-m-z/xplayer.profile
@@ -25,7 +25,7 @@ mkdir ${HOME}/.local/share/xplayer
25whitelist ${HOME}/.config/xplayer 25whitelist ${HOME}/.config/xplayer
26whitelist ${HOME}/.local/share/xplayer 26whitelist ${HOME}/.local/share/xplayer
27include whitelist-common.inc 27include whitelist-common.inc
28include whitelist-players.inc 28include whitelist-player-common.inc
29include whitelist-var-common.inc 29include whitelist-var-common.inc
30 30
31# apparmor - makes settings immutable 31# apparmor - makes settings immutable
diff --git a/etc/profile-m-z/xzdec.profile b/etc/profile-m-z/xzdec.profile
index 542363b57..082392a08 100644
--- a/etc/profile-m-z/xzdec.profile
+++ b/etc/profile-m-z/xzdec.profile
@@ -7,35 +7,4 @@ include xzdec.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-* 10include archiver-common.inc
11
12include disable-common.inc
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-passwdmgr.inc
17include disable-programs.inc
18
19caps.drop all
20ipc-namespace
21machine-id
22net none
23no3d
24nodvd
25#nogroups
26nonewprivs
27#noroot
28nosound
29notv
30nou2f
31novideo
32protocol unix
33seccomp
34shell none
35tracelog
36x11 none
37
38private-dev
39
40dbus-user none
41dbus-system none
diff --git a/etc/profile-m-z/yelp.profile b/etc/profile-m-z/yelp.profile
index e198af8b2..479582b2a 100644
--- a/etc/profile-m-z/yelp.profile
+++ b/etc/profile-m-z/yelp.profile
@@ -20,7 +20,9 @@ include disable-xdg.inc
20mkdir ${HOME}/.config/yelp 20mkdir ${HOME}/.config/yelp
21whitelist ${HOME}/.config/yelp 21whitelist ${HOME}/.config/yelp
22whitelist /usr/share/doc 22whitelist /usr/share/doc
23whitelist /usr/share/groff
23whitelist /usr/share/help 24whitelist /usr/share/help
25whitelist /usr/share/man
24whitelist /usr/share/yelp 26whitelist /usr/share/yelp
25whitelist /usr/share/yelp-tools 27whitelist /usr/share/yelp-tools
26whitelist /usr/share/yelp-xsl 28whitelist /usr/share/yelp-xsl
@@ -31,11 +33,15 @@ include whitelist-var-common.inc
31 33
32apparmor 34apparmor
33caps.drop all 35caps.drop all
36# machine-id breaks sound - uncomment here or put it in your yelp.local if you don't need it
37#machine-id
34net none 38net none
35nodvd 39nodvd
36nogroups 40nogroups
37nonewprivs 41nonewprivs
38noroot 42noroot
43# nosound - uncomment here or put it in your yelp.local if you don't need it
44#nosound
39notv 45notv
40nou2f 46nou2f
41novideo 47novideo
@@ -46,17 +52,25 @@ shell none
46tracelog 52tracelog
47 53
48disable-mnt 54disable-mnt
49private-bin yelp 55private-bin groff,man,tbl,troff,yelp
50private-cache 56private-cache
51private-dev 57private-dev
52private-etc alsa,alternatives,asound.conf,crypto-policies,cups,dconf,drirc,fonts,gcrypt,gtk-3.0,machine-id,openal,os-release,pulse,sgml,xml 58private-etc alsa,alternatives,asound.conf,crypto-policies,cups,dconf,drirc,fonts,gcrypt,groff,gtk-3.0,machine-id,man_db.conf,openal,os-release,pulse,sgml,xml
53private-tmp 59private-tmp
54 60
61dbus-user filter
62dbus-user.own org.gnome.Yelp
63dbus-user.talk ca.desrt.dconf
55dbus-system none 64dbus-system none
56 65
57# read-only ${HOME} breaks some not necesarry featrues, comment it if 66# read-only ${HOME} breaks some features:
58# you need them or put 'ignore read-only ${HOME}' into your yelp.local.
59# broken features:
60# 1. yelp --editor-mode 67# 1. yelp --editor-mode
61# 2. saving the window geometry 68# 2. saving the window geometry
69# comment the line below or put 'ignore read-only ${HOME}' into your yelp.local if you need these features
62read-only ${HOME} 70read-only ${HOME}
71read-write ${HOME}/.cache
72# 3. printing to PDF in ${DOCUMENTS}
73# additionally uncomment the lines below or put 'noblacklist ${DOCUMENTS}' and
74# 'whitelist ${DOCUMENTS}' into your yelp.local if you need printing to PDF support
75#noblacklist ${DOCUMENTS}
76#whitelist ${DOCUMENTS}
diff --git a/etc/profile-m-z/youtube-dl.profile b/etc/profile-m-z/youtube-dl.profile
index d9dee6891..6ce632682 100644
--- a/etc/profile-m-z/youtube-dl.profile
+++ b/etc/profile-m-z/youtube-dl.profile
@@ -21,7 +21,6 @@ include allow-python2.inc
21include allow-python3.inc 21include allow-python3.inc
22 22
23blacklist /tmp/.X11-unix 23blacklist /tmp/.X11-unix
24blacklist ${RUNUSER}/wayland-*
25blacklist ${RUNUSER} 24blacklist ${RUNUSER}
26 25
27include disable-common.inc 26include disable-common.inc
diff --git a/etc/profile-m-z/youtube-viewer.profile b/etc/profile-m-z/youtube-viewer.profile
index 513cb0f6e..a3a2afa29 100644
--- a/etc/profile-m-z/youtube-viewer.profile
+++ b/etc/profile-m-z/youtube-viewer.profile
@@ -7,10 +7,6 @@ include youtube-viewer.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist /tmp/.X11-unix
11blacklist ${RUNUSER}/wayland-*
12blacklist ${RUNUSER}
13
14noblacklist ${HOME}/.config/youtube-viewer 10noblacklist ${HOME}/.config/youtube-viewer
15 11
16include allow-perl.inc 12include allow-perl.inc
@@ -47,11 +43,11 @@ shell none
47tracelog 43tracelog
48 44
49disable-mnt 45disable-mnt
50# private-bin ffmpeg,ffprobe,firefox,gtk-youtube-viewer,gtk2-youtube-viewer,gtk3-youtube-viewer,mpv,python*,smplayer,sh,which,vlc,youtube-dl,youtube-viewer 46private-bin ffmpeg,ffprobe,firefox,gtk-youtube-viewer,gtk2-youtube-viewer,gtk3-youtube-viewer,mpv,python*,sh,smplayer,stty,vlc,which,youtube-dl,youtube-viewer
51private-cache 47private-cache
52private-dev 48private-dev
53private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,machine-id,mime.types,nsswitch.conf,passwd,pki,pulse,resolv.conf,ssl,X11,xdg 49private-etc alsa,alternatives,asound.conf,ca-certificates,crypto-policies,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,machine-id,mime.types,nsswitch.conf,passwd,pki,pulse,resolv.conf,ssl,X11,xdg
54private-tmp 50private-tmp
55 51
56dbus-user none 52dbus-user none
57dbus-system none \ No newline at end of file 53dbus-system none
diff --git a/etc/profile-m-z/youtube.profile b/etc/profile-m-z/youtube.profile
index a6c7750a9..ad7ceaee4 100644
--- a/etc/profile-m-z/youtube.profile
+++ b/etc/profile-m-z/youtube.profile
@@ -6,32 +6,19 @@ include youtube.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# Disabled until someone reported positive feedback
10ignore nou2f
11
9noblacklist ${HOME}/.config/Youtube 12noblacklist ${HOME}/.config/Youtube
10 13
11include disable-devel.inc 14include disable-shell.inc
12include disable-exec.inc
13include disable-interpreters.inc
14include disable-shell.inc
15include disable-xdg.inc
16 15
17mkdir ${HOME}/.config/Youtube 16mkdir ${HOME}/.config/Youtube
18whitelist ${HOME}/.config/Youtube 17whitelist ${HOME}/.config/Youtube
19include whitelist-common.inc
20include whitelist-runuser-common.inc
21include whitelist-usr-share-common.inc
22include whitelist-var-common.inc
23
24novideo
25seccomp !chroot
26shell none
27 18
28disable-mnt
29private-bin youtube 19private-bin youtube
30private-cache
31private-dev
32private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg 20private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
33private-opt Youtube 21private-opt Youtube
34private-tmp
35 22
36# Redirect 23# Redirect
37include electron.profile 24include electron.profile
diff --git a/etc/profile-m-z/youtubemusic-nativefier.profile b/etc/profile-m-z/youtubemusic-nativefier.profile
index 3a94a5707..74b0e38b9 100644
--- a/etc/profile-m-z/youtubemusic-nativefier.profile
+++ b/etc/profile-m-z/youtubemusic-nativefier.profile
@@ -8,31 +8,14 @@ include globals.local
8 8
9noblacklist ${HOME}/.config/youtubemusic-nativefier-040164 9noblacklist ${HOME}/.config/youtubemusic-nativefier-040164
10 10
11include disable-devel.inc 11include disable-shell.inc
12include disable-exec.inc
13include disable-interpreters.inc
14include disable-shell.inc
15include disable-xdg.inc
16 12
17mkdir ${HOME}/.config/youtubemusic-nativefier-040164 13mkdir ${HOME}/.config/youtubemusic-nativefier-040164
18whitelist ${HOME}/.config/youtubemusic-nativefier-040164 14whitelist ${HOME}/.config/youtubemusic-nativefier-040164
19include whitelist-common.inc
20include whitelist-runuser-common.inc
21include whitelist-usr-share-common.inc
22include whitelist-var-common.inc
23 15
24nou2f
25novideo
26seccomp !chroot
27shell none
28
29disable-mnt
30private-bin youtubemusic-nativefier 16private-bin youtubemusic-nativefier
31private-cache
32private-dev
33private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg 17private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
34private-opt youtubemusic-nativefier 18private-opt youtubemusic-nativefier
35private-tmp
36 19
37# Redirect 20# Redirect
38include electron.profile 21include electron.profile
diff --git a/etc/profile-m-z/ytmdesktop.profile b/etc/profile-m-z/ytmdesktop.profile
index 5c37b838b..ab46fccc2 100644
--- a/etc/profile-m-z/ytmdesktop.profile
+++ b/etc/profile-m-z/ytmdesktop.profile
@@ -10,30 +10,12 @@ ignore dbus-user none
10 10
11noblacklist ${HOME}/.config/youtube-music-desktop-app 11noblacklist ${HOME}/.config/youtube-music-desktop-app
12 12
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-xdg.inc
17
18mkdir ${HOME}/.config/youtube-music-desktop-app 13mkdir ${HOME}/.config/youtube-music-desktop-app
19whitelist ${HOME}/.config/youtube-music-desktop-app 14whitelist ${HOME}/.config/youtube-music-desktop-app
20include whitelist-common.inc
21include whitelist-runuser-common.inc
22include whitelist-usr-share-common.inc
23include whitelist-var-common.inc
24
25nou2f
26novideo
27seccomp !chroot
28shell none
29 15
30disable-mnt
31# private-bin env,ytmdesktop 16# private-bin env,ytmdesktop
32private-cache
33private-dev
34private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg 17private-etc alsa,alternatives,asound.conf,ati,bumblebee,ca-certificates,crypto-policies,drirc,fonts,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,mime.types,nsswitch.conf,nvidia,pki,pulse,resolv.conf,selinux,ssl,X11,xdg
35# private-opt 18# private-opt
36private-tmp
37 19
38# Redirect 20# Redirect
39include electron.profile 21include electron.profile
diff --git a/etc/profile-m-z/zathura.profile b/etc/profile-m-z/zathura.profile
index 5274e5b42..86615341f 100644
--- a/etc/profile-m-z/zathura.profile
+++ b/etc/profile-m-z/zathura.profile
@@ -28,7 +28,6 @@ include whitelist-var-common.inc
28 28
29apparmor 29apparmor
30caps.drop all 30caps.drop all
31ipc-namespace
32machine-id 31machine-id
33net none 32net none
34nodvd 33nodvd
diff --git a/etc/profile-m-z/zoom.profile b/etc/profile-m-z/zoom.profile
index f175e5e21..e8cd64c93 100644
--- a/etc/profile-m-z/zoom.profile
+++ b/etc/profile-m-z/zoom.profile
@@ -6,16 +6,20 @@ include zoom.local
6# Persistent global definitions 6# Persistent global definitions
7include globals.local 7include globals.local
8 8
9# Disabled until someone reported positive feedback
10ignore apparmor
11ignore novideo
12ignore dbus-user none
13ignore dbus-system none
14
15# nogroups breaks webcam access on non-systemd systems (see #3711).
16# If you use such a system uncomment the line below or put 'ignore nogroups' in your zoom.local
17#ignore nogroups
18
9noblacklist ${HOME}/.config/zoomus.conf 19noblacklist ${HOME}/.config/zoomus.conf
10noblacklist ${HOME}/.zoom 20noblacklist ${HOME}/.zoom
11 21
12include disable-common.inc 22nowhitelist ${DOWNLOADS}
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-passwdmgr.inc
17include disable-programs.inc
18include disable-xdg.inc
19 23
20mkdir ${HOME}/.cache/zoom 24mkdir ${HOME}/.cache/zoom
21mkfile ${HOME}/.config/zoomus.conf 25mkfile ${HOME}/.config/zoomus.conf
@@ -23,27 +27,9 @@ mkdir ${HOME}/.zoom
23whitelist ${HOME}/.cache/zoom 27whitelist ${HOME}/.cache/zoom
24whitelist ${HOME}/.config/zoomus.conf 28whitelist ${HOME}/.config/zoomus.conf
25whitelist ${HOME}/.zoom 29whitelist ${HOME}/.zoom
26include whitelist-common.inc
27include whitelist-runuser-common.inc
28include whitelist-usr-share-common.inc
29include whitelist-var-common.inc
30 30
31caps.drop all
32netfilter
33nodvd
34#nogroups - breaks webcam access (see #3711)
35nonewprivs
36noroot
37notv
38nou2f
39protocol unix,inet,inet6,netlink
40seccomp !chroot
41shell none
42tracelog
43
44disable-mnt
45private-cache
46private-dev
47# Disable for now, see https://github.com/netblue30/firejail/issues/3726 31# Disable for now, see https://github.com/netblue30/firejail/issues/3726
48#private-etc alternatives,ca-certificates,crypto-policies,fonts,group,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,machine-id,nsswitch.conf,pki,resolv.conf,ssl 32#private-etc alternatives,ca-certificates,crypto-policies,fonts,group,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,machine-id,nsswitch.conf,pki,resolv.conf,ssl
49private-tmp 33
34# Redirect
35include electron.profile
diff --git a/etc/profile-m-z/zstd.profile b/etc/profile-m-z/zstd.profile
index be27c10e1..42749ba6d 100644
--- a/etc/profile-m-z/zstd.profile
+++ b/etc/profile-m-z/zstd.profile
@@ -7,37 +7,4 @@ include zstd.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10blacklist ${RUNUSER}/wayland-* 10include archiver-common.inc
11
12include disable-common.inc
13include disable-devel.inc
14include disable-exec.inc
15include disable-interpreters.inc
16include disable-passwdmgr.inc
17include disable-programs.inc
18
19apparmor
20caps.drop all
21hostname zstd
22ipc-namespace
23machine-id
24net none
25no3d
26nodvd
27nogroups
28nonewprivs
29#noroot
30nosound
31notv
32nou2f
33novideo
34protocol unix
35seccomp
36shell none
37tracelog
38x11 none
39
40private-cache
41private-dev
42
43memory-deny-write-execute
diff --git a/src/firecfg/firecfg.config b/src/firecfg/firecfg.config
index b0a223911..23b1e364a 100644
--- a/src/firecfg/firecfg.config
+++ b/src/firecfg/firecfg.config
@@ -34,6 +34,7 @@ abiword
34abrowser 34abrowser
35akonadi_control 35akonadi_control
36akregator 36akregator
37alacarte
37amarok 38amarok
38amule 39amule
39amuled 40amuled
@@ -63,6 +64,7 @@ audacious
63audacity 64audacity
64audio-recorder 65audio-recorder
65authenticator 66authenticator
67authenticator-rs
66autokey-gtk 68autokey-gtk
67autokey-qt 69autokey-qt
68autokey-run 70autokey-run
@@ -139,6 +141,7 @@ cmus
139code 141code
140code-oss 142code-oss
141cola 143cola
144com.github.bleakgrey.tootle
142com.github.dahenson.agenda 145com.github.dahenson.agenda
143com.github.johnfactotum.Foliate 146com.github.johnfactotum.Foliate
144com.gitlab.newsflash 147com.gitlab.newsflash
@@ -173,11 +176,13 @@ dnox
173dnscrypt-proxy 176dnscrypt-proxy
174dnsmasq 177dnsmasq
175dolphin 178dolphin
179dolphin-emu
176dooble 180dooble
177dooble-qt4 181dooble-qt4
178dosbox 182dosbox
179dragon 183dragon
180drawio 184drawio
185drill
181dropbox 186dropbox
182d-feet 187d-feet
183easystroke 188easystroke
@@ -197,14 +202,14 @@ enpass
197eog 202eog
198eom 203eom
199ephemeral 204ephemeral
200#epiphany 205#epiphany - see #2995
201equalx 206equalx
202et 207et
203etr 208etr
204evince 209evince
205evince-previewer 210evince-previewer
206evince-thumbnailer 211evince-thumbnailer
207evolution 212#evolution - see #3647
208exfalso 213exfalso
209exiftool 214exiftool
210falkon 215falkon
@@ -212,7 +217,7 @@ fbreader
212feedreader 217feedreader
213feh 218feh
214ferdi 219ferdi
215ffmpeg 220#ffmpeg
216ffmpegthumbnailer 221ffmpegthumbnailer
217ffplay 222ffplay
218ffprobe 223ffprobe
@@ -334,6 +339,7 @@ gradio
334gramps 339gramps
335gravity-beams-and-evaporating-stars 340gravity-beams-and-evaporating-stars
336gthumb 341gthumb
342gtk-straw-viewer
337gtk-youtube-viewer 343gtk-youtube-viewer
338gtk2-youtube-viewer 344gtk2-youtube-viewer
339gtk3-youtube-viewer 345gtk3-youtube-viewer
@@ -417,6 +423,7 @@ kwrite
417leafpad 423leafpad
418# less - breaks man 424# less - breaks man
419libreoffice 425libreoffice
426librewolf
420liferea 427liferea
421lightsoff 428lightsoff
422lincity-ng 429lincity-ng
@@ -456,6 +463,7 @@ mate-calculator
456mate-color-select 463mate-color-select
457mate-dictionary 464mate-dictionary
458mathematica 465mathematica
466matrix-mirage
459mattermost-desktop 467mattermost-desktop
460mcabber 468mcabber
461mediainfo 469mediainfo
@@ -467,6 +475,8 @@ mencoder
467mendeleydesktop 475mendeleydesktop
468menulibre 476menulibre
469meteo-qt 477meteo-qt
478microsoft-edge
479microsoft-edge-dev
470midori 480midori
471min 481min
472mindless 482mindless
@@ -578,6 +588,7 @@ pdfsam
578pdftotext 588pdftotext
579peek 589peek
580penguin-command 590penguin-command
591photoflare
581picard 592picard
582pidgin 593pidgin
583#ping - disabled until we fix #1912 594#ping - disabled until we fix #1912
@@ -682,6 +693,7 @@ steam-native
682steam-runtime 693steam-runtime
683stellarium 694stellarium
684strawberry 695strawberry
696straw-viewer
685strings 697strings
686studio.sh 698studio.sh
687subdownloader 699subdownloader
diff --git a/src/firejail/firejail.h b/src/firejail/firejail.h
index 6c0ebcd43..80987e494 100644
--- a/src/firejail/firejail.h
+++ b/src/firejail/firejail.h
@@ -372,7 +372,7 @@ char *guess_shell(void);
372// sandbox.c 372// sandbox.c
373#define SANDBOX_DONE '1' 373#define SANDBOX_DONE '1'
374int sandbox(void* sandbox_arg); 374int sandbox(void* sandbox_arg);
375void start_application(int no_sandbox, char *set_sandbox_status) __attribute__((noreturn)); 375void start_application(int no_sandbox, int fd, char *set_sandbox_status) __attribute__((noreturn));
376void set_apparmor(void); 376void set_apparmor(void);
377 377
378// network_main.c 378// network_main.c
diff --git a/src/firejail/fs.c b/src/firejail/fs.c
index 76ec102c3..0d4e496e8 100644
--- a/src/firejail/fs.c
+++ b/src/firejail/fs.c
@@ -162,6 +162,13 @@ static void disable_file(OPERATION op, const char *filename) {
162 } 162 }
163 else if (op == MOUNT_TMPFS) { 163 else if (op == MOUNT_TMPFS) {
164 if (S_ISDIR(s.st_mode)) { 164 if (S_ISDIR(s.st_mode)) {
165 if (getuid()) {
166 if (strncmp(cfg.homedir, fname, strlen(cfg.homedir)) != 0 ||
167 fname[strlen(cfg.homedir)] != '/') {
168 fprintf(stderr, "Error: tmpfs outside $HOME is only available for root\n");
169 exit(1);
170 }
171 }
165 fs_tmpfs(fname, getuid()); 172 fs_tmpfs(fname, getuid());
166 last_disable = SUCCESSFUL; 173 last_disable = SUCCESSFUL;
167 } 174 }
@@ -366,14 +373,6 @@ void fs_blacklist(void) {
366 else if (strncmp(entry->data, "tmpfs ", 6) == 0) { 373 else if (strncmp(entry->data, "tmpfs ", 6) == 0) {
367 ptr = entry->data + 6; 374 ptr = entry->data + 6;
368 op = MOUNT_TMPFS; 375 op = MOUNT_TMPFS;
369 char *resolved_path = realpath(ptr, NULL);
370 if (!resolved_path || strncmp(cfg.homedir, resolved_path, strlen(cfg.homedir)) != 0) {
371 if (getuid() != 0) {
372 fprintf(stderr, "Error: tmpfs outside $HOME is only available for root\n");
373 exit(1);
374 }
375 }
376 free(resolved_path);
377 } 376 }
378 else if (strncmp(entry->data, "mkdir ", 6) == 0) { 377 else if (strncmp(entry->data, "mkdir ", 6) == 0) {
379 EUID_USER(); 378 EUID_USER();
@@ -1262,28 +1261,3 @@ void fs_private_tmp(void) {
1262 } 1261 }
1263 closedir(dir); 1262 closedir(dir);
1264} 1263}
1265
1266// this function is called from sandbox.c before blacklist/whitelist functions
1267void fs_private_cache(void) {
1268 char *cache;
1269 if (asprintf(&cache, "%s/.cache", cfg.homedir) == -1)
1270 errExit("asprintf");
1271 // check if ~/.cache is a valid destination
1272 struct stat s;
1273 if (lstat(cache, &s) == -1) {
1274 fwarning("skipping private-cache: cannot find %s\n", cache);
1275 free(cache);
1276 return;
1277 }
1278 if (!S_ISDIR(s.st_mode)) {
1279 if (S_ISLNK(s.st_mode))
1280 fwarning("skipping private-cache: %s is a symbolic link\n", cache);
1281 else
1282 fwarning("skipping private-cache: %s is not a directory\n", cache);
1283 free(cache);
1284 return;
1285 }
1286 // do the mount
1287 fs_tmpfs(cache, getuid()); // check ownership of ~/.cache
1288 free(cache);
1289}
diff --git a/src/firejail/fs_home.c b/src/firejail/fs_home.c
index af891d61f..8c7c19203 100644
--- a/src/firejail/fs_home.c
+++ b/src/firejail/fs_home.c
@@ -360,43 +360,38 @@ void fs_private(void) {
360 selinux_relabel_path("/root", "/root"); 360 selinux_relabel_path("/root", "/root");
361 fs_logger("tmpfs /root"); 361 fs_logger("tmpfs /root");
362 362
363 if (arg_allusers) { 363 // mask /home
364 if (u != 0) 364 if (!arg_allusers) {
365 // mask user home directory
366 // the directory should be owned by the current user
367 fs_tmpfs(homedir, 1);
368 }
369 else { // mask /home
370 if (arg_debug) 365 if (arg_debug)
371 printf("Mounting a new /home directory\n"); 366 printf("Mounting a new /home directory\n");
372 if (mount("tmpfs", "/home", "tmpfs", MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_STRICTATIME, "mode=755,gid=0") < 0) 367 if (mount("tmpfs", "/home", "tmpfs", MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_STRICTATIME, "mode=755,gid=0") < 0)
373 errExit("mounting /home directory"); 368 errExit("mounting /home directory");
374 selinux_relabel_path("/home", "/home"); 369 selinux_relabel_path("/home", "/home");
375 fs_logger("tmpfs /home"); 370 fs_logger("tmpfs /home");
371 }
376 372
377 if (u != 0) { 373 if (u != 0) {
378 if (strncmp(homedir, "/home/", 6) == 0) { 374 if (!arg_allusers && strncmp(homedir, "/home/", 6) == 0) {
379 // create /home/user 375 // create new empty /home/user directory
380 if (arg_debug) 376 if (arg_debug)
381 printf("Create a new user directory\n"); 377 printf("Create a new user directory\n");
382 if (mkdir(homedir, S_IRWXU) == -1) { 378 if (mkdir(homedir, S_IRWXU) == -1) {
383 if (mkpath_as_root(homedir) == -1) 379 if (mkpath_as_root(homedir) == -1)
384 errExit("mkpath"); 380 errExit("mkpath");
385 if (mkdir(homedir, S_IRWXU) == -1 && errno != EEXIST) 381 if (mkdir(homedir, S_IRWXU) == -1)
386 errExit("mkdir"); 382 errExit("mkdir");
387 }
388 if (chown(homedir, u, g) < 0)
389 errExit("chown");
390
391 selinux_relabel_path(homedir, homedir);
392 fs_logger2("mkdir", homedir);
393 fs_logger2("tmpfs", homedir);
394 } 383 }
395 else 384 if (chown(homedir, u, g) < 0)
396 // mask user home directory 385 errExit("chown");
397 // the directory should be owned by the current user 386
398 fs_tmpfs(homedir, 1); 387 selinux_relabel_path(homedir, homedir);
388 fs_logger2("mkdir", homedir);
389 fs_logger2("tmpfs", homedir);
399 } 390 }
391 else
392 // mask user home directory
393 // the directory should be owned by the current user
394 fs_tmpfs(homedir, 1);
400 } 395 }
401 396
402 skel(homedir, u, g); 397 skel(homedir, u, g);
diff --git a/src/firejail/fs_lib.c b/src/firejail/fs_lib.c
index 64444bba2..5cfd33b42 100644
--- a/src/firejail/fs_lib.c
+++ b/src/firejail/fs_lib.c
@@ -378,6 +378,9 @@ void fs_private_lib(void) {
378 // bring in firejail executable libraries in case we are redirected here by a firejail symlink from /usr/local/bin/firejail 378 // bring in firejail executable libraries in case we are redirected here by a firejail symlink from /usr/local/bin/firejail
379 fslib_install_list("/usr/bin/firejail,firejail"); // todo: use the installed path for the executable 379 fslib_install_list("/usr/bin/firejail,firejail"); // todo: use the installed path for the executable
380 380
381 // install libraries needed by fcopy
382 fslib_install_list(PATH_FCOPY);
383
381 fmessage("Installed %d %s and %d %s\n", lib_cnt, (lib_cnt == 1)? "library": "libraries", 384 fmessage("Installed %d %s and %d %s\n", lib_cnt, (lib_cnt == 1)? "library": "libraries",
382 dir_cnt, (dir_cnt == 1)? "directory": "directories"); 385 dir_cnt, (dir_cnt == 1)? "directory": "directories");
383 386
diff --git a/src/firejail/join.c b/src/firejail/join.c
index ca8b8c4bf..d2f802add 100644
--- a/src/firejail/join.c
+++ b/src/firejail/join.c
@@ -20,10 +20,14 @@
20#include "firejail.h" 20#include "firejail.h"
21#include <sys/stat.h> 21#include <sys/stat.h>
22#include <sys/wait.h> 22#include <sys/wait.h>
23#include <fcntl.h>
24#include <unistd.h> 23#include <unistd.h>
25#include <errno.h> 24#include <errno.h>
26 25
26#include <fcntl.h>
27#ifndef O_PATH
28#define O_PATH 010000000
29#endif
30
27#include <sys/prctl.h> 31#include <sys/prctl.h>
28#ifndef PR_SET_NO_NEW_PRIVS 32#ifndef PR_SET_NO_NEW_PRIVS
29#define PR_SET_NO_NEW_PRIVS 38 33#define PR_SET_NO_NEW_PRIVS 38
@@ -299,6 +303,21 @@ static void extract_umask(pid_t pid) {
299 fclose(fp); 303 fclose(fp);
300} 304}
301 305
306static int open_shell(void) {
307 EUID_ASSERT();
308 assert(cfg.shell);
309
310 if (arg_debug)
311 printf("Opening shell %s\n", cfg.shell);
312 // file descriptor will leak if not opened with O_CLOEXEC !!
313 int fd = open(cfg.shell, O_PATH|O_CLOEXEC);
314 if (fd == -1) {
315 fprintf(stderr, "Error: cannot open shell %s\n", cfg.shell);
316 exit(1);
317 }
318 return fd;
319}
320
302// return false if the sandbox identified by pid is not fully set up yet or if 321// return false if the sandbox identified by pid is not fully set up yet or if
303// it is no firejail sandbox at all, return true if the sandbox is complete 322// it is no firejail sandbox at all, return true if the sandbox is complete
304bool is_ready_for_join(const pid_t pid) { 323bool is_ready_for_join(const pid_t pid) {
@@ -391,6 +410,10 @@ void join(pid_t pid, int argc, char **argv, int index) {
391 410
392 extract_x11_display(parent); 411 extract_x11_display(parent);
393 412
413 int shfd = -1;
414 if (!arg_shell_none)
415 shfd = open_shell();
416
394 EUID_ROOT(); 417 EUID_ROOT();
395 // in user mode set caps seccomp, cpu, cgroup, etc 418 // in user mode set caps seccomp, cpu, cgroup, etc
396 if (getuid() != 0) { 419 if (getuid() != 0) {
@@ -522,10 +545,9 @@ void join(pid_t pid, int argc, char **argv, int index) {
522 extract_command(argc, argv, index); 545 extract_command(argc, argv, index);
523 if (cfg.command_line == NULL) { 546 if (cfg.command_line == NULL) {
524 assert(cfg.shell); 547 assert(cfg.shell);
525 cfg.command_line = cfg.shell;
526 cfg.window_title = cfg.shell; 548 cfg.window_title = cfg.shell;
527 } 549 }
528 if (arg_debug) 550 else if (arg_debug)
529 printf("Extracted command #%s#\n", cfg.command_line); 551 printf("Extracted command #%s#\n", cfg.command_line);
530 552
531 // set cpu affinity 553 // set cpu affinity
@@ -554,11 +576,13 @@ void join(pid_t pid, int argc, char **argv, int index) {
554 dbus_set_system_bus_env(); 576 dbus_set_system_bus_env();
555#endif 577#endif
556 578
557 start_application(0, NULL); 579 start_application(0, shfd, NULL);
558 580
559 __builtin_unreachable(); 581 __builtin_unreachable();
560 } 582 }
561 EUID_USER(); 583 EUID_USER();
584 if (shfd != -1)
585 close(shfd);
562 586
563 int status = 0; 587 int status = 0;
564 //***************************** 588 //*****************************
diff --git a/src/firejail/ls.c b/src/firejail/ls.c
index 1a65c9ff0..e61edf427 100644
--- a/src/firejail/ls.c
+++ b/src/firejail/ls.c
@@ -26,6 +26,7 @@
26#include <dirent.h> 26#include <dirent.h>
27#include <pwd.h> 27#include <pwd.h>
28#include <grp.h> 28#include <grp.h>
29#include <fcntl.h>
29//#include <dirent.h> 30//#include <dirent.h>
30//#include <stdio.h> 31//#include <stdio.h>
31//#include <stdlib.h> 32//#include <stdlib.h>
@@ -293,6 +294,41 @@ void sandboxfs(int op, pid_t pid, const char *path1, const char *path2) {
293 printf("file2 %s\n", fname2 ? fname2 : "(null)"); 294 printf("file2 %s\n", fname2 ? fname2 : "(null)");
294 } 295 }
295 296
297 // get file from sandbox and store it in the current directory
298 // implemented using --cat
299 if (op == SANDBOX_FS_GET) {
300 char *dest_fname = strrchr(fname1, '/');
301 if (!dest_fname || *(++dest_fname) == '\0') {
302 fprintf(stderr, "Error: invalid file name %s\n", fname1);
303 exit(1);
304 }
305 // create destination file if necessary
306 EUID_ASSERT();
307 int fd = open(dest_fname, O_WRONLY|O_CREAT|O_CLOEXEC, S_IRUSR | S_IWRITE);
308 if (fd == -1) {
309 fprintf(stderr, "Error: cannot open %s for writing\n", dest_fname);
310 exit(1);
311 }
312 struct stat s;
313 if (fstat(fd, &s) == -1)
314 errExit("fstat");
315 if (!S_ISREG(s.st_mode)) {
316 fprintf(stderr, "Error: %s is no regular file\n", dest_fname);
317 exit(1);
318 }
319 if (ftruncate(fd, 0) == -1)
320 errExit("ftruncate");
321 // go quiet - messages on stdout will corrupt the file
322 arg_debug = 0;
323 arg_quiet = 1;
324 // redirection
325 if (dup2(fd, STDOUT_FILENO) == -1)
326 errExit("dup2");
327 assert(fd != STDOUT_FILENO);
328 close(fd);
329 op = SANDBOX_FS_CAT;
330 }
331
296 // sandbox root directory 332 // sandbox root directory
297 char *rootdir; 333 char *rootdir;
298 if (asprintf(&rootdir, "/proc/%d/root", pid) == -1) 334 if (asprintf(&rootdir, "/proc/%d/root", pid) == -1)
@@ -317,92 +353,6 @@ void sandboxfs(int op, pid_t pid, const char *path1, const char *path2) {
317 __gcov_flush(); 353 __gcov_flush();
318#endif 354#endif
319 } 355 }
320
321 // get file from sandbox and store it in the current directory
322 else if (op == SANDBOX_FS_GET) {
323 char *src_fname =fname1;
324 char *dest_fname = strrchr(fname1, '/');
325 if (!dest_fname || *(++dest_fname) == '\0') {
326 fprintf(stderr, "Error: invalid file name %s\n", fname1);
327 exit(1);
328 }
329
330 EUID_ROOT();
331 if (arg_debug)
332 printf("copy %s to %s\n", src_fname, dest_fname);
333
334 // create a user-owned temporary file in /run/firejail directory
335 char tmp_fname[] = "/run/firejail/tmpget-XXXXXX";
336 int fd = mkstemp(tmp_fname);
337 if (fd == -1) {
338 fprintf(stderr, "Error: cannot create temporary file %s\n", tmp_fname);
339 exit(1);
340 }
341 SET_PERMS_FD(fd, getuid(), getgid(), 0600);
342 close(fd);
343
344 // copy the source file into the temporary file - we need to chroot
345 pid_t child = fork();
346 if (child < 0)
347 errExit("fork");
348 if (child == 0) {
349 // chroot
350 if (chroot(rootdir) < 0)
351 errExit("chroot");
352 if (chdir("/") < 0)
353 errExit("chdir");
354
355 // drop privileges
356 drop_privs(0);
357
358 // copy the file
359 if (copy_file(src_fname, tmp_fname, getuid(), getgid(), 0600)) // already a regular user
360 _exit(1);
361#ifdef HAVE_GCOV
362 __gcov_flush();
363#endif
364 _exit(0);
365 }
366
367 // wait for the child to finish
368 int status = 0;
369 waitpid(child, &status, 0);
370 if (WIFEXITED(status) && WEXITSTATUS(status) == 0);
371 else {
372 unlink(tmp_fname);
373 exit(1);
374 }
375
376 // copy the temporary file into the destination file
377 child = fork();
378 if (child < 0)
379 errExit("fork");
380 if (child == 0) {
381 // drop privileges
382 drop_privs(0);
383
384 // copy the file
385 if (copy_file(tmp_fname, dest_fname, getuid(), getgid(), 0600)) // already a regular user
386 _exit(1);
387#ifdef HAVE_GCOV
388 __gcov_flush();
389#endif
390 _exit(0);
391 }
392
393 // wait for the child to finish
394 status = 0;
395 waitpid(child, &status, 0);
396 if (WIFEXITED(status) && WEXITSTATUS(status) == 0);
397 else {
398 unlink(tmp_fname);
399 exit(1);
400 }
401
402 // remove the temporary file
403 unlink(tmp_fname);
404 EUID_USER();
405 }
406 // get file from host and store it in the sandbox 356 // get file from host and store it in the sandbox
407 else if (op == SANDBOX_FS_PUT && path2) { 357 else if (op == SANDBOX_FS_PUT && path2) {
408 char *src_fname =fname1; 358 char *src_fname =fname1;
diff --git a/src/firejail/main.c b/src/firejail/main.c
index 676d04895..e5d8a4720 100644
--- a/src/firejail/main.c
+++ b/src/firejail/main.c
@@ -161,7 +161,6 @@ int fullargc = 0;
161static pid_t child = 0; 161static pid_t child = 0;
162pid_t sandbox_pid; 162pid_t sandbox_pid;
163mode_t orig_umask = 022; 163mode_t orig_umask = 022;
164unsigned long long start_timestamp;
165 164
166static void clear_atexit(void) { 165static void clear_atexit(void) {
167 EUID_ROOT(); 166 EUID_ROOT();
@@ -868,7 +867,8 @@ char *guess_shell(void) {
868 shell = getenv("SHELL"); 867 shell = getenv("SHELL");
869 if (shell) { 868 if (shell) {
870 invalid_filename(shell, 0); // no globbing 869 invalid_filename(shell, 0); // no globbing
871 if (!is_dir(shell) && strstr(shell, "..") == NULL && stat(shell, &s) == 0 && access(shell, X_OK) == 0) 870 if (!is_dir(shell) && strstr(shell, "..") == NULL && stat(shell, &s) == 0 && access(shell, X_OK) == 0 &&
871 strcmp(shell, PATH_FIREJAIL) != 0)
872 return shell; 872 return shell;
873 } 873 }
874 874
@@ -1026,7 +1026,7 @@ int main(int argc, char **argv, char **envp) {
1026 init_cfg(argc, argv); 1026 init_cfg(argc, argv);
1027 1027
1028 // get starting timestamp, process --quiet 1028 // get starting timestamp, process --quiet
1029 start_timestamp = getticks(); 1029 timetrace_start();
1030 char *env_quiet = getenv("FIREJAIL_QUIET"); 1030 char *env_quiet = getenv("FIREJAIL_QUIET");
1031 if (check_arg(argc, argv, "--quiet", 1) || (env_quiet && strcmp(env_quiet, "yes") == 0)) 1031 if (check_arg(argc, argv, "--quiet", 1) || (env_quiet && strcmp(env_quiet, "yes") == 0))
1032 arg_quiet = 1; 1032 arg_quiet = 1;
@@ -2398,6 +2398,13 @@ int main(int argc, char **argv, char **envp) {
2398 fprintf(stderr, "Error: invalid MAC address\n"); 2398 fprintf(stderr, "Error: invalid MAC address\n");
2399 exit(1); 2399 exit(1);
2400 } 2400 }
2401
2402 // check multicast address
2403 if (br->macsandbox[0] & 1) {
2404 fprintf(stderr, "Error: invalid MAC address (multicast)\n");
2405 exit(1);
2406 }
2407
2401 } 2408 }
2402 else 2409 else
2403 exit_err_feature("networking"); 2410 exit_err_feature("networking");
@@ -2780,7 +2787,7 @@ int main(int argc, char **argv, char **envp) {
2780 2787
2781 // build the sandbox command 2788 // build the sandbox command
2782 if (prog_index == -1 && cfg.shell) { 2789 if (prog_index == -1 && cfg.shell) {
2783 cfg.command_line = cfg.shell; 2790 assert(cfg.command_line == NULL); // runs cfg.shell
2784 cfg.window_title = cfg.shell; 2791 cfg.window_title = cfg.shell;
2785 cfg.command_name = cfg.shell; 2792 cfg.command_name = cfg.shell;
2786 } 2793 }
@@ -3023,8 +3030,15 @@ int main(int argc, char **argv, char **envp) {
3023 ptr += strlen(ptr); 3030 ptr += strlen(ptr);
3024 3031
3025 if (!arg_nogroups) { 3032 if (!arg_nogroups) {
3033 // add firejail group
3034 gid_t g = get_group_id("firejail");
3035 if (g) {
3036 sprintf(ptr, "%d %d 1\n", g, g);
3037 ptr += strlen(ptr);
3038 }
3039
3026 // add tty group 3040 // add tty group
3027 gid_t g = get_group_id("tty"); 3041 g = get_group_id("tty");
3028 if (g) { 3042 if (g) {
3029 sprintf(ptr, "%d %d 1\n", g, g); 3043 sprintf(ptr, "%d %d 1\n", g, g);
3030 ptr += strlen(ptr); 3044 ptr += strlen(ptr);
diff --git a/src/firejail/no_sandbox.c b/src/firejail/no_sandbox.c
index 01df77ee6..6c7803602 100644
--- a/src/firejail/no_sandbox.c
+++ b/src/firejail/no_sandbox.c
@@ -204,14 +204,15 @@ void run_no_sandbox(int argc, char **argv) {
204 break; 204 break;
205 } 205 }
206 } 206 }
207 // if shell is /usr/bin/firejail, replace it with /bin/bash 207
208 if (strcmp(cfg.shell, PATH_FIREJAIL) == 0) { 208// if shell is /usr/bin/firejail, replace it with /bin/bash
209 cfg.shell = "/bin/bash"; 209// if (strcmp(cfg.shell, PATH_FIREJAIL) == 0) {
210 prog_index = 0; 210// cfg.shell = "/bin/bash";
211 } 211// prog_index = 0;
212// }
212 213
213 if (prog_index == 0) { 214 if (prog_index == 0) {
214 cfg.command_line = cfg.shell; 215 assert(cfg.command_line == NULL); // runs cfg.shell
215 cfg.window_title = cfg.shell; 216 cfg.window_title = cfg.shell;
216 } else { 217 } else {
217 build_cmdline(&cfg.command_line, &cfg.window_title, argc, argv, prog_index); 218 build_cmdline(&cfg.command_line, &cfg.window_title, argc, argv, prog_index);
@@ -230,5 +231,5 @@ void run_no_sandbox(int argc, char **argv) {
230 231
231 arg_quiet = 1; 232 arg_quiet = 1;
232 233
233 start_application(1, NULL); 234 start_application(1, -1, NULL);
234} 235}
diff --git a/src/firejail/profile.c b/src/firejail/profile.c
index 5ddf6fdbb..1ee8cdfcb 100644
--- a/src/firejail/profile.c
+++ b/src/firejail/profile.c
@@ -619,6 +619,17 @@ int profile_check_line(char *ptr, int lineno, const char *fname) {
619#endif 619#endif
620 return 0; 620 return 0;
621 } 621 }
622 else if (strncmp(ptr, "netns ", 6) == 0) {
623#ifdef HAVE_NETWORK
624 if (checkcfg(CFG_NETWORK)) {
625 arg_netns = ptr + 6;
626 check_netns(arg_netns);
627 }
628 else
629 warning_feature_disabled("networking");
630#endif
631 return 0;
632 }
622 else if (strcmp(ptr, "net none") == 0) { 633 else if (strcmp(ptr, "net none") == 0) {
623 arg_nonetwork = 1; 634 arg_nonetwork = 1;
624 cfg.bridge0.configured = 0; 635 cfg.bridge0.configured = 0;
@@ -745,6 +756,12 @@ int profile_check_line(char *ptr, int lineno, const char *fname) {
745 fprintf(stderr, "Error: invalid MAC address\n"); 756 fprintf(stderr, "Error: invalid MAC address\n");
746 exit(1); 757 exit(1);
747 } 758 }
759
760 // check multicast address
761 if (br->macsandbox[0] & 1) {
762 fprintf(stderr, "Error: invalid MAC address (multicast)\n");
763 exit(1);
764 }
748 } 765 }
749 else 766 else
750 warning_feature_disabled("networking"); 767 warning_feature_disabled("networking");
@@ -1497,7 +1514,10 @@ int profile_check_line(char *ptr, int lineno, const char *fname) {
1497 if (checkcfg(CFG_JOIN) || getuid() == 0) { 1514 if (checkcfg(CFG_JOIN) || getuid() == 0) {
1498 // try to join by name only 1515 // try to join by name only
1499 pid_t pid; 1516 pid_t pid;
1500 if (!name2pid(ptr + 14, &pid)) { 1517 EUID_ROOT();
1518 int r = name2pid(ptr + 14, &pid);
1519 EUID_USER();
1520 if (!r) {
1501 if (!cfg.shell && !arg_shell_none) 1521 if (!cfg.shell && !arg_shell_none)
1502 cfg.shell = guess_shell(); 1522 cfg.shell = guess_shell();
1503 1523
diff --git a/src/firejail/pulseaudio.c b/src/firejail/pulseaudio.c
index 84cbb1977..a5c924a70 100644
--- a/src/firejail/pulseaudio.c
+++ b/src/firejail/pulseaudio.c
@@ -31,6 +31,8 @@
31#define O_PATH 010000000 31#define O_PATH 010000000
32#endif 32#endif
33 33
34#define PULSE_CLIENT_SYSCONF "/etc/pulse/client.conf"
35
34// disable pulseaudio socket 36// disable pulseaudio socket
35void pulseaudio_disable(void) { 37void pulseaudio_disable(void) {
36 if (arg_debug) 38 if (arg_debug)
@@ -73,8 +75,8 @@ void pulseaudio_disable(void) {
73 closedir(dir); 75 closedir(dir);
74} 76}
75 77
76static void pulseaudio_set_environment(const char *path) { 78static void pulseaudio_fallback(const char *path) {
77 assert(path); 79 fmessage("Cannot mount tmpfs on %s/.config/pulse\n", cfg.homedir);
78 if (setenv("PULSE_CLIENTCONFIG", path, 1) < 0) 80 if (setenv("PULSE_CLIENTCONFIG", path, 1) < 0)
79 errExit("setenv"); 81 errExit("setenv");
80} 82}
@@ -84,9 +86,9 @@ void pulseaudio_init(void) {
84 struct stat s; 86 struct stat s;
85 87
86 // do we have pulseaudio in the system? 88 // do we have pulseaudio in the system?
87 if (stat("/etc/pulse/client.conf", &s) == -1) { 89 if (stat(PULSE_CLIENT_SYSCONF, &s) == -1) {
88 if (arg_debug) 90 if (arg_debug)
89 printf("/etc/pulse/client.conf not found\n"); 91 printf("%s not found\n", PULSE_CLIENT_SYSCONF);
90 return; 92 return;
91 } 93 }
92 94
@@ -101,7 +103,7 @@ void pulseaudio_init(void) {
101 char *pulsecfg = NULL; 103 char *pulsecfg = NULL;
102 if (asprintf(&pulsecfg, "%s/client.conf", RUN_PULSE_DIR) == -1) 104 if (asprintf(&pulsecfg, "%s/client.conf", RUN_PULSE_DIR) == -1)
103 errExit("asprintf"); 105 errExit("asprintf");
104 if (copy_file("/etc/pulse/client.conf", pulsecfg, -1, -1, 0644)) // root needed 106 if (copy_file(PULSE_CLIENT_SYSCONF, pulsecfg, -1, -1, 0644)) // root needed
105 errExit("copy_file"); 107 errExit("copy_file");
106 FILE *fp = fopen(pulsecfg, "a"); 108 FILE *fp = fopen(pulsecfg, "a");
107 if (!fp) 109 if (!fp)
@@ -126,11 +128,11 @@ void pulseaudio_init(void) {
126 if (create_empty_dir_as_user(homeusercfg, 0700)) 128 if (create_empty_dir_as_user(homeusercfg, 0700))
127 fs_logger2("create", homeusercfg); 129 fs_logger2("create", homeusercfg);
128 130
129 // if ~/.config/pulse now exists and there are no symbolic links, mount the new directory 131 // if ~/.config/pulse exists and there are no symbolic links, mount the new directory
130 // else set environment variable 132 // else set environment variable
131 int fd = safe_fd(homeusercfg, O_PATH|O_DIRECTORY|O_NOFOLLOW|O_CLOEXEC); 133 int fd = safe_fd(homeusercfg, O_PATH|O_DIRECTORY|O_NOFOLLOW|O_CLOEXEC);
132 if (fd == -1) { 134 if (fd == -1) {
133 pulseaudio_set_environment(pulsecfg); 135 pulseaudio_fallback(pulsecfg);
134 goto out; 136 goto out;
135 } 137 }
136 // confirm the actual mount destination is owned by the user 138 // confirm the actual mount destination is owned by the user
@@ -138,12 +140,12 @@ void pulseaudio_init(void) {
138 if (errno != EACCES) 140 if (errno != EACCES)
139 errExit("fstat"); 141 errExit("fstat");
140 close(fd); 142 close(fd);
141 pulseaudio_set_environment(pulsecfg); 143 pulseaudio_fallback(pulsecfg);
142 goto out; 144 goto out;
143 } 145 }
144 if (s.st_uid != getuid()) { 146 if (s.st_uid != getuid()) {
145 close(fd); 147 close(fd);
146 pulseaudio_set_environment(pulsecfg); 148 pulseaudio_fallback(pulsecfg);
147 goto out; 149 goto out;
148 } 150 }
149 // preserve a read-only mount 151 // preserve a read-only mount
@@ -171,8 +173,9 @@ void pulseaudio_init(void) {
171 char *p; 173 char *p;
172 if (asprintf(&p, "%s/client.conf", homeusercfg) == -1) 174 if (asprintf(&p, "%s/client.conf", homeusercfg) == -1)
173 errExit("asprintf"); 175 errExit("asprintf");
176 if (setenv("PULSE_CLIENTCONFIG", p, 1) < 0)
177 errExit("setenv");
174 fs_logger2("create", p); 178 fs_logger2("create", p);
175 pulseaudio_set_environment(p);
176 free(p); 179 free(p);
177 180
178 // RUN_PULSE_DIR not needed anymore, mask it 181 // RUN_PULSE_DIR not needed anymore, mask it
diff --git a/src/firejail/sandbox.c b/src/firejail/sandbox.c
index 8bfe76603..d811fe45a 100644
--- a/src/firejail/sandbox.c
+++ b/src/firejail/sandbox.c
@@ -141,7 +141,7 @@ void set_apparmor(void) {
141} 141}
142#endif 142#endif
143 143
144void seccomp_debug(void) { 144static void seccomp_debug(void) {
145 if (arg_debug == 0) 145 if (arg_debug == 0)
146 return; 146 return;
147 147
@@ -400,19 +400,8 @@ static int monitor_application(pid_t app_pid) {
400} 400}
401 401
402static void print_time(void) { 402static void print_time(void) {
403 if (start_timestamp) { 403 float delta = timetrace_end();
404 unsigned long long end_timestamp = getticks(); 404 fmessage("Child process initialized in %.02f ms\n", delta);
405 // measure 1 ms
406 usleep(1000);
407 unsigned long long onems = getticks() - end_timestamp;
408 if (onems) {
409 fmessage("Child process initialized in %.02f ms\n",
410 (float) (end_timestamp - start_timestamp) / (float) onems);
411 return;
412 }
413 }
414
415 fmessage("Child process initialized\n");
416} 405}
417 406
418 407
@@ -472,7 +461,7 @@ static int ok_to_run(const char *program) {
472 return 0; 461 return 0;
473} 462}
474 463
475void start_application(int no_sandbox, char *set_sandbox_status) { 464void start_application(int no_sandbox, int fd, char *set_sandbox_status) {
476 // set environment 465 // set environment
477 if (no_sandbox == 0) { 466 if (no_sandbox == 0) {
478 env_defaults(); 467 env_defaults();
@@ -482,7 +471,7 @@ void start_application(int no_sandbox, char *set_sandbox_status) {
482 umask(orig_umask); 471 umask(orig_umask);
483 472
484 if (arg_debug) { 473 if (arg_debug) {
485 printf("starting application\n"); 474 printf("Starting application\n");
486 printf("LD_PRELOAD=%s\n", getenv("LD_PRELOAD")); 475 printf("LD_PRELOAD=%s\n", getenv("LD_PRELOAD"));
487 } 476 }
488 477
@@ -499,9 +488,6 @@ void start_application(int no_sandbox, char *set_sandbox_status) {
499 if (set_sandbox_status) 488 if (set_sandbox_status)
500 *set_sandbox_status = SANDBOX_DONE; 489 *set_sandbox_status = SANDBOX_DONE;
501 execl(arg_audit_prog, arg_audit_prog, NULL); 490 execl(arg_audit_prog, arg_audit_prog, NULL);
502
503 perror("execl");
504 exit(1);
505 } 491 }
506 //**************************************** 492 //****************************************
507 // start the program without using a shell 493 // start the program without using a shell
@@ -543,35 +529,37 @@ void start_application(int no_sandbox, char *set_sandbox_status) {
543 //**************************************** 529 //****************************************
544 else { 530 else {
545 assert(cfg.shell); 531 assert(cfg.shell);
546 assert(cfg.command_line);
547 532
548 char *arg[5]; 533 char *arg[5];
549 int index = 0; 534 int index = 0;
550 arg[index++] = cfg.shell; 535 arg[index++] = cfg.shell;
551 if (login_shell) { 536 if (cfg.command_line) {
552 arg[index++] = "-l";
553 if (arg_debug)
554 printf("Starting %s login shell\n", cfg.shell);
555 } else {
556 arg[index++] = "-c";
557 if (arg_debug) 537 if (arg_debug)
558 printf("Running %s command through %s\n", cfg.command_line, cfg.shell); 538 printf("Running %s command through %s\n", cfg.command_line, cfg.shell);
539 arg[index++] = "-c";
559 if (arg_doubledash) 540 if (arg_doubledash)
560 arg[index++] = "--"; 541 arg[index++] = "--";
561 arg[index++] = cfg.command_line; 542 arg[index++] = cfg.command_line;
562 } 543 }
563 arg[index] = NULL; 544 else if (login_shell) {
545 if (arg_debug)
546 printf("Starting %s login shell\n", cfg.shell);
547 arg[index++] = "-l";
548 }
549 else if (arg_debug)
550 printf("Starting %s shell\n", cfg.shell);
551
564 assert(index < 5); 552 assert(index < 5);
553 arg[index] = NULL;
565 554
566 if (arg_debug) { 555 if (arg_debug) {
567 char *msg; 556 char *msg;
568 if (asprintf(&msg, "sandbox %d, execvp into %s", sandbox_pid, cfg.command_line) == -1) 557 if (asprintf(&msg, "sandbox %d, execvp into %s",
558 sandbox_pid, cfg.command_line ? cfg.command_line : cfg.shell) == -1)
569 errExit("asprintf"); 559 errExit("asprintf");
570 logmsg(msg); 560 logmsg(msg);
571 free(msg); 561 free(msg);
572 }
573 562
574 if (arg_debug) {
575 int i; 563 int i;
576 for (i = 0; i < 5; i++) { 564 for (i = 0; i < 5; i++) {
577 if (arg[i] == NULL) 565 if (arg[i] == NULL)
@@ -591,10 +579,14 @@ void start_application(int no_sandbox, char *set_sandbox_status) {
591 if (set_sandbox_status) 579 if (set_sandbox_status)
592 *set_sandbox_status = SANDBOX_DONE; 580 *set_sandbox_status = SANDBOX_DONE;
593 execvp(arg[0], arg); 581 execvp(arg[0], arg);
582
583 // join sandbox without shell in the mount namespace
584 if (fd > -1)
585 fexecve(fd, arg, environ);
594 } 586 }
595 587
596 perror("execvp"); 588 perror("Cannot start application");
597 exit(1); // it should never get here!!! 589 exit(1);
598} 590}
599 591
600static void enforce_filters(void) { 592static void enforce_filters(void) {
@@ -923,12 +915,9 @@ int sandbox(void* sandbox_arg) {
923 915
924#ifdef HAVE_USERTMPFS 916#ifdef HAVE_USERTMPFS
925 if (arg_private_cache) { 917 if (arg_private_cache) {
926 if (cfg.chrootdir) 918 EUID_USER();
927 fwarning("private-cache feature is disabled in chroot\n"); 919 profile_add("tmpfs ${HOME}/.cache");
928 else if (arg_overlay) 920 EUID_ROOT();
929 fwarning("private-cache feature is disabled in overlay\n");
930 else
931 fs_private_cache();
932 } 921 }
933#endif 922#endif
934 923
@@ -1237,7 +1226,7 @@ int sandbox(void* sandbox_arg) {
1237 set_nice(cfg.nice); 1226 set_nice(cfg.nice);
1238 set_rlimits(); 1227 set_rlimits();
1239 1228
1240 start_application(0, set_sandbox_status); 1229 start_application(0, -1, set_sandbox_status);
1241 } 1230 }
1242 1231
1243 munmap(set_sandbox_status, 1); 1232 munmap(set_sandbox_status, 1);
diff --git a/src/firejail/util.c b/src/firejail/util.c
index 02befdc12..a3927cc88 100644
--- a/src/firejail/util.c
+++ b/src/firejail/util.c
@@ -36,6 +36,11 @@
36#define O_PATH 010000000 36#define O_PATH 010000000
37#endif 37#endif
38 38
39#include <sys/syscall.h>
40#ifdef __NR_openat2
41#include <linux/openat2.h>
42#endif
43
39#define MAX_GROUPS 1024 44#define MAX_GROUPS 1024
40#define MAXBUF 4098 45#define MAXBUF 4098
41#define EMPTY_STRING ("") 46#define EMPTY_STRING ("")
@@ -70,10 +75,11 @@ static void clean_supplementary_groups(gid_t gid) {
70 goto clean_all; 75 goto clean_all;
71 76
72 // clean supplementary group list 77 // clean supplementary group list
73 // allow only tty, audio, video, games 78 // allow only firejail, tty, audio, video, games
74 gid_t new_groups[MAX_GROUPS]; 79 gid_t new_groups[MAX_GROUPS];
75 int new_ngroups = 0; 80 int new_ngroups = 0;
76 char *allowed[] = { 81 char *allowed[] = {
82 "firejail",
77 "tty", 83 "tty",
78 "audio", 84 "audio",
79 "video", 85 "video",
@@ -1007,12 +1013,8 @@ int create_empty_dir_as_user(const char *dir, mode_t mode) {
1007 if (chmod(dir, mode) == -1) 1013 if (chmod(dir, mode) == -1)
1008 {;} // do nothing 1014 {;} // do nothing
1009 } 1015 }
1010 else if (arg_debug) { 1016 else if (arg_debug)
1011 char *str; 1017 printf("Directory %s not created: %s\n", dir, strerror(errno));
1012 if (asprintf(&str, "Directory %s not created", dir) == -1)
1013 errExit("asprintf");
1014 perror(str);
1015 }
1016#ifdef HAVE_GCOV 1018#ifdef HAVE_GCOV
1017 __gcov_flush(); 1019 __gcov_flush();
1018#endif 1020#endif
@@ -1157,46 +1159,57 @@ void disable_file_path(const char *path, const char *file) {
1157 free(fname); 1159 free(fname);
1158} 1160}
1159 1161
1160// open file without following any symbolic link 1162// open an existing file without following any symbolic link
1161// returns a file descriptor on success, or -1 if a symlink is found
1162int safe_fd(const char *path, int flags) { 1163int safe_fd(const char *path, int flags) {
1164 flags |= O_NOFOLLOW;
1163 assert(path); 1165 assert(path);
1164 if (*path != '/') 1166 if (*path != '/' || strstr(path, "..")) {
1165 goto errexit; 1167 fprintf(stderr, "Error: invalid path %s\n", path);
1166 if (strstr(path, "..")) 1168 exit(1);
1167 goto errexit; 1169 }
1168
1169 int parentfd = open("/", O_PATH|O_DIRECTORY|O_CLOEXEC);
1170 if (parentfd == -1)
1171 errExit("open");
1172 int fd = -1; 1170 int fd = -1;
1173 1171
1174 char *last_tok = EMPTY_STRING; 1172#ifdef __NR_openat2 // kernel 5.6 or better
1173 struct open_how oh;
1174 memset(&oh, 0, sizeof(oh));
1175 oh.flags = flags;
1176 oh.resolve = RESOLVE_NO_SYMLINKS;
1177 fd = syscall(__NR_openat2, -1, path, &oh, sizeof(struct open_how));
1178 if (fd != -1 || errno != ENOSYS)
1179 return fd;
1180#endif
1181
1182 // openat2 syscall is not available, traverse path and
1183 // check each component if it is a symbolic link or not
1175 char *dup = strdup(path); 1184 char *dup = strdup(path);
1176 if (!dup) 1185 if (!dup)
1177 errExit("strdup"); 1186 errExit("strdup");
1178 char *tok = strtok(dup, "/"); 1187 char *tok = strtok(dup, "/");
1179 if (!tok) { // root directory 1188 if (!tok) { // root directory
1180 free(dup); 1189 free(dup);
1181 return parentfd; 1190 return open("/", flags);
1182 } 1191 }
1192 char *last_tok = EMPTY_STRING;
1193 int parentfd = open("/", O_PATH|O_CLOEXEC);
1194 if (parentfd == -1)
1195 errExit("open");
1183 1196
1184 while(1) { 1197 while(1) {
1185 // open the element, assuming it is a directory; this fails with ENOTDIR if it is a symbolic link 1198 // open path component, assuming it is a directory; this fails with ENOTDIR if it is a symbolic link
1186 // if token is a single dot, the previous directory is reopened 1199 // if token is a single dot, the previous directory is reopened
1187 fd = openat(parentfd, tok, O_PATH|O_DIRECTORY|O_NOFOLLOW|O_CLOEXEC); 1200 fd = openat(parentfd, tok, O_PATH|O_DIRECTORY|O_NOFOLLOW|O_CLOEXEC);
1188 if (fd == -1) { 1201 if (fd == -1) {
1189 // if the following token is NULL, the current token is the final path element 1202 // if the following token is NULL, the current token is the final path component
1190 // try again to open it, this time using the passed flags, and return -1 or the descriptor 1203 // try again to open it, this time using the passed flags, and return -1 or the descriptor
1191 last_tok = tok; 1204 last_tok = tok;
1192 tok = strtok(NULL, "/"); 1205 tok = strtok(NULL, "/");
1193 if (!tok) 1206 if (!tok)
1194 fd = openat(parentfd, last_tok, flags|O_NOFOLLOW); 1207 fd = openat(parentfd, last_tok, flags);
1195 close(parentfd); 1208 close(parentfd);
1196 free(dup); 1209 free(dup);
1197 return fd; // -1 if open failed 1210 return fd;
1198 } 1211 }
1199 // move on to next path segment 1212 // move on to next path component
1200 last_tok = tok; 1213 last_tok = tok;
1201 tok = strtok(NULL, "/"); 1214 tok = strtok(NULL, "/");
1202 if (!tok) 1215 if (!tok)
@@ -1204,18 +1217,13 @@ int safe_fd(const char *path, int flags) {
1204 close(parentfd); 1217 close(parentfd);
1205 parentfd = fd; 1218 parentfd = fd;
1206 } 1219 }
1207 1220 // getting here when the last path component exists and is of file type directory
1208 // we are here because the last path element exists and is of file type directory
1209 // reopen it using the passed flags 1221 // reopen it using the passed flags
1210 close(fd); 1222 close(fd);
1211 fd = openat(parentfd, last_tok, flags|O_NOFOLLOW); 1223 fd = openat(parentfd, last_tok, flags);
1212 close(parentfd); 1224 close(parentfd);
1213 free(dup); 1225 free(dup);
1214 return fd; // -1 if open failed 1226 return fd;
1215
1216errexit:
1217 fprintf(stderr, "Error: cannot open \"%s\": invalid path\n", path);
1218 exit(1);
1219} 1227}
1220 1228
1221int has_handler(pid_t pid, int signal) { 1229int has_handler(pid_t pid, int signal) {
@@ -1321,7 +1329,7 @@ static int has_link(const char *dir) {
1321 assert(dir); 1329 assert(dir);
1322 int fd = safe_fd(dir, O_PATH|O_DIRECTORY|O_NOFOLLOW|O_CLOEXEC); 1330 int fd = safe_fd(dir, O_PATH|O_DIRECTORY|O_NOFOLLOW|O_CLOEXEC);
1323 if (fd == -1) { 1331 if (fd == -1) {
1324 if (errno == ENOTDIR && is_dir(dir)) 1332 if ((errno == ELOOP || errno == ENOTDIR) && is_dir(dir))
1325 return 1; 1333 return 1;
1326 } 1334 }
1327 else 1335 else
diff --git a/src/firejail/x11.c b/src/firejail/x11.c
index e10abad4e..4872a5207 100644
--- a/src/firejail/x11.c
+++ b/src/firejail/x11.c
@@ -1368,7 +1368,7 @@ void fs_x11(void) {
1368void x11_block(void) { 1368void x11_block(void) {
1369#ifdef HAVE_X11 1369#ifdef HAVE_X11
1370 // check abstract socket presence and network namespace options 1370 // check abstract socket presence and network namespace options
1371 if ((!arg_nonetwork && !cfg.bridge0.configured && !cfg.interface0.configured) 1371 if ((!arg_nonetwork && !arg_netns && !cfg.bridge0.configured && !cfg.interface0.configured)
1372 && x11_abstract_sockets_present()) { 1372 && x11_abstract_sockets_present()) {
1373 fprintf(stderr, "ERROR: --x11=none specified, but abstract X11 socket still accessible.\n" 1373 fprintf(stderr, "ERROR: --x11=none specified, but abstract X11 socket still accessible.\n"
1374 "Additional setup required. To block abstract X11 socket you can either:\n" 1374 "Additional setup required. To block abstract X11 socket you can either:\n"
diff --git a/src/include/common.h b/src/include/common.h
index 2fa61cc91..5df51c5a9 100644
--- a/src/include/common.h
+++ b/src/include/common.h
@@ -118,21 +118,6 @@ static inline int mac_not_zero(const unsigned char mac[6]) {
118 return 0; 118 return 0;
119} 119}
120 120
121// rtdsc timestamp on x86-64/amd64 processors
122static inline unsigned long long getticks(void) {
123#if defined(__x86_64__)
124 unsigned a, d;
125 asm volatile("rdtsc" : "=a" (a), "=d" (d));
126 return ((unsigned long long)a) | (((unsigned long long)d) << 32);
127#elif defined(__i386__)
128 unsigned long long ret;
129 __asm__ __volatile__("rdtsc" : "=A" (ret));
130 return ret;
131#else
132 return 0; // not implemented
133#endif
134}
135
136void timetrace_start(void); 121void timetrace_start(void);
137float timetrace_end(void); 122float timetrace_end(void);
138int join_namespace(pid_t pid, char *type); 123int join_namespace(pid_t pid, char *type);
diff --git a/src/lib/common.c b/src/lib/common.c
index 1fd317d4f..823442835 100644
--- a/src/lib/common.c
+++ b/src/lib/common.c
@@ -30,6 +30,7 @@
30#include <signal.h> 30#include <signal.h>
31#include <dirent.h> 31#include <dirent.h>
32#include <string.h> 32#include <string.h>
33#include <time.h>
33#include "../include/common.h" 34#include "../include/common.h"
34#define BUFLEN 4096 35#define BUFLEN 4096
35 36
@@ -277,7 +278,7 @@ int pid_hidepid(void) {
277 if (strstr(buf, "proc /proc proc")) { 278 if (strstr(buf, "proc /proc proc")) {
278 fclose(fp); 279 fclose(fp);
279 // check hidepid 280 // check hidepid
280 if (strstr(buf, "hidepid=2") || strstr(buf, "hidepid=1")) 281 if (strstr(buf, "hidepid="))
281 return 1; 282 return 1;
282 return 0; 283 return 0;
283 } 284 }
@@ -290,38 +291,42 @@ int pid_hidepid(void) {
290//************************** 291//**************************
291// time trace based on getticks function 292// time trace based on getticks function
292//************************** 293//**************************
293static int tt_not_implemented = 0; // not implemented for the current architecture 294typedef struct list_entry_t {
294static unsigned long long tt_1ms = 0; 295 struct list_entry_t *next;
295static unsigned long long tt = 0; // start time 296 struct timespec ts;
297} ListEntry;
296 298
297void timetrace_start(void) { 299static ListEntry *ts_list = NULL;
298 if (tt_not_implemented)
299 return;
300 unsigned long long t1 = getticks();
301 if (t1 == 0) {
302 tt_not_implemented = 1;
303 return;
304 }
305 300
306 if (tt_1ms == 0) { 301static inline float msdelta(struct timespec *start, struct timespec *end) {
307 usleep(1000); // sleep 1 ms 302 unsigned sec = end->tv_sec - start->tv_sec;
308 unsigned long long t2 = getticks(); 303 long nsec = end->tv_nsec - start->tv_nsec;
309 tt_1ms = t2 - t1; 304 return (float) sec * 1000 + (float) nsec / 1000000;
310 if (tt_1ms == 0) { 305}
311 tt_not_implemented = 1;
312 return;
313 }
314 }
315 306
316 tt = getticks(); 307void timetrace_start(void) {
308 ListEntry *t = malloc(sizeof(ListEntry));
309 if (!t)
310 errExit("malloc");
311 memset(t, 0, sizeof(ListEntry));
312 clock_gettime(CLOCK_MONOTONIC, &t->ts);
313
314 // add it to the list
315 t->next = ts_list;
316 ts_list = t;
317} 317}
318 318
319float timetrace_end(void) { 319float timetrace_end(void) {
320 if (tt_not_implemented) 320 if (!ts_list)
321 return 0; 321 return 0;
322 322
323 unsigned long long delta = getticks() - tt; 323 // remove start time from the list
324 assert(tt_1ms); 324 ListEntry *t = ts_list;
325 ts_list = t->next;
325 326
326 return (float) delta / (float) tt_1ms; 327 struct timespec end;
328 clock_gettime(CLOCK_MONOTONIC, &end);
329 float rv = msdelta(&t->ts, &end);
330 free(t);
331 return rv;
327} 332}
diff --git a/src/man/firejail.txt b/src/man/firejail.txt
index 8c73962fb..347e2b31b 100644
--- a/src/man/firejail.txt
+++ b/src/man/firejail.txt
@@ -76,10 +76,10 @@ If an appropriate profile is not found, Firejail will use a default profile.
76The default profile is quite restrictive. In case the application doesn't work, use --noprofile option 76The default profile is quite restrictive. In case the application doesn't work, use --noprofile option
77to disable it. For more information, please see \fBSECURITY PROFILES\fR section below. 77to disable it. For more information, please see \fBSECURITY PROFILES\fR section below.
78.PP 78.PP
79If a program argument is not specified, Firejail starts /bin/bash shell. 79If a program argument is not specified, Firejail starts the user's preferred shell.
80Examples: 80Examples:
81.PP 81.PP
82$ firejail [OPTIONS] # starting a /bin/bash shell 82$ firejail [OPTIONS] # starting the program specified in $SHELL, usually /bin/bash
83.PP 83.PP
84$ firejail [OPTIONS] firefox # starting Mozilla Firefox 84$ firejail [OPTIONS] firefox # starting Mozilla Firefox
85.PP 85.PP
@@ -1558,7 +1558,7 @@ Parent pid 8553, child pid 8554
1558Child process initialized 1558Child process initialized
1559.br 1559.br
1560[...] 1560[...]
1561#if HAVE_USERNS 1561#ifdef HAVE_USERNS
1562.TP 1562.TP
1563\fB\-\-noroot 1563\fB\-\-noroot
1564Install a user namespace with a single user - the current user. 1564Install a user namespace with a single user - the current user.
@@ -2476,7 +2476,7 @@ $ firejail \-\-shell=none script.sh
2476\fB\-\-shell=program 2476\fB\-\-shell=program
2477Set default user shell. Use this shell to run the application using \-c shell option. 2477Set default user shell. Use this shell to run the application using \-c shell option.
2478For example "firejail \-\-shell=/bin/dash firefox" will start Mozilla Firefox as "/bin/dash \-c firefox". 2478For example "firejail \-\-shell=/bin/dash firefox" will start Mozilla Firefox as "/bin/dash \-c firefox".
2479By default Bash shell (/bin/bash) is used. 2479By default the user's preferred shell is used.
2480.br 2480.br
2481 2481
2482.br 2482.br
@@ -3023,7 +3023,7 @@ We provide a tool that automates all this integration, please see \&\flfirecfg\f
3023.SH EXAMPLES 3023.SH EXAMPLES
3024.TP 3024.TP
3025\f\firejail 3025\f\firejail
3026Sandbox a regular /bin/bash session. 3026Sandbox a regular shell session.
3027.TP 3027.TP
3028\f\firejail firefox 3028\f\firejail firefox
3029Start Mozilla Firefox. 3029Start Mozilla Firefox.
@@ -3043,7 +3043,7 @@ Start Firefox in a new network namespace. An IP address is
3043assigned automatically. 3043assigned automatically.
3044.TP 3044.TP
3045\f\firejail \-\-net=br0 \-\-ip=10.10.20.5 \-\-net=br1 \-\-net=br2 3045\f\firejail \-\-net=br0 \-\-ip=10.10.20.5 \-\-net=br1 \-\-net=br2
3046Start a /bin/bash session in a new network namespace and connect it 3046Start a shell session in a new network namespace and connect it
3047to br0, br1, and br2 host bridge devices. IP addresses are assigned 3047to br0, br1, and br2 host bridge devices. IP addresses are assigned
3048automatically for the interfaces connected to br1 and b2 3048automatically for the interfaces connected to br1 and b2
3049#endif 3049#endif
diff --git a/src/man/preproc.awk b/src/man/preproc.awk
index 20081b551..1471be3ec 100755
--- a/src/man/preproc.awk
+++ b/src/man/preproc.awk
@@ -23,7 +23,7 @@
23BEGIN { 23BEGIN {
24 macros[0] = 0 24 macros[0] = 0
25 for (arg in ARGV) { 25 for (arg in ARGV) {
26 if (ARGV[arg] ~ /^-D[A-Z_]+$/) { 26 if (ARGV[arg] ~ /^-D[A-Z0-9_]+$/) {
27 macros[length(macros) + 1] = substr(ARGV[arg], 3) 27 macros[length(macros) + 1] = substr(ARGV[arg], 3)
28 } 28 }
29 ARGV[arg] = "" 29 ARGV[arg] = ""
@@ -31,7 +31,7 @@ BEGIN {
31 31
32 include = 1 32 include = 1
33} 33}
34/^#ifdef [A-Z_]+$/ { 34/^#ifdef [A-Z0-9_]+$/ {
35 macro = substr($0, 8) 35 macro = substr($0, 8)
36 for (i in macros) { 36 for (i in macros) {
37 if (macros[i] == macro) { 37 if (macros[i] == macro) {
diff --git a/test/fs/fscheck-tmpfs.exp b/test/fs/fscheck-tmpfs.exp
index ebd3eeb9c..818549fe2 100755
--- a/test/fs/fscheck-tmpfs.exp
+++ b/test/fs/fscheck-tmpfs.exp
@@ -7,12 +7,49 @@ set timeout 10
7spawn $env(SHELL) 7spawn $env(SHELL)
8match_max 100000 8match_max 100000
9 9
10# .. 10send -- "mkdir -p ~/fjtest-dir/fjtest-dir\r"
11send -- "firejail --tmpfs=fscheck-dir\r" 11after 100
12send -- "mkdir /tmp/fjtest-dir\r"
13after 100
14
15if { ! [file exists ~/fjtest-dir/fjtest-dir] } {
16 puts "TESTING ERROR 1\n"
17 exit
18}
19if { ! [file exists /tmp/fjtest-dir] } {
20 puts "TESTING ERROR 2\n"
21 exit
22}
23
24send -- "firejail --noprofile --tmpfs=~/fjtest-dir\r"
25expect {
26 timeout {puts "TESTING ERROR 3\n";exit}
27 "Child process initialized"
28}
29after 500
30
31send -- "ls ~/fjtest-dir/fjtest-dir\r"
32expect {
33 timeout {puts "TESTING ERROR 4\n";exit}
34 "No such file or directory"
35}
36after 500
37
38send -- "exit\r"
39after 500
40
41send -- "firejail --noprofile --tmpfs=/tmp/fjtest-dir\r"
12expect { 42expect {
13 timeout {puts "TESTING ERROR 0.1\n";exit} 43 timeout {puts "TESTING ERROR 5\n";exit}
14 "Error" 44 "Error"
15} 45}
46after 500
47
48# cleanup
49send -- "rm -fr ~/fjtest-dir\r"
16after 100 50after 100
51send -- "rm -fr /tmp/fjtest-dir\r"
52after 100
53
17 54
18puts "\nall done\n" 55puts "\nall done\n"
diff --git a/test/fs/private-cache.exp b/test/fs/private-cache.exp
index 0597e8921..6e4c6bd1b 100755
--- a/test/fs/private-cache.exp
+++ b/test/fs/private-cache.exp
@@ -7,16 +7,17 @@ set timeout 10
7spawn $env(SHELL) 7spawn $env(SHELL)
8match_max 100000 8match_max 100000
9 9
10if {[file exists ~/.cache]} { 10send -- "mkdir --mode=700 ~/.cache\r"
11 puts "found .cache directory\n"
12} else {
13 send -- "mkdir --mode=755 ~/.cache\r"
14}
15after 100 11after 100
16 12
17send -- "touch ~/.cache/abcdefg\r" 13send -- "touch ~/.cache/abcdefg\r"
18after 100 14after 100
19 15
16if { ! [file exists ~/.cache/abcdefg] } {
17 puts "TESTING ERROR 0\n"
18 exit
19}
20
20send -- "firejail --noprofile --private-cache\r" 21send -- "firejail --noprofile --private-cache\r"
21expect { 22expect {
22 timeout {puts "TESTING ERROR 1\n";exit} 23 timeout {puts "TESTING ERROR 1\n";exit}
@@ -34,23 +35,8 @@ after 100
34send -- "exit\r" 35send -- "exit\r"
35sleep 1 36sleep 1
36 37
37send -- "rm -v ~/.cache/abcdefg\r" 38# cleanup
38expect { 39send -- "rm ~/.cache/abcdefg\r"
39 timeout {puts "TESTING ERROR 3\n";exit}
40 "removed"
41}
42after 100 40after 100
43 41
44# redo the test with --private
45
46send -- "firejail --noprofile --private --private-cache\r"
47expect {
48 timeout {puts "TESTING ERROR 4\n";exit}
49 "Warning"
50}
51sleep 1
52
53send -- "exit\r"
54sleep 1
55
56puts "\nall done\n" 42puts "\nall done\n"
diff --git a/test/profiles/profiles.sh b/test/profiles/profiles.sh
index 75d961eb1..2d7d2a966 100755
--- a/test/profiles/profiles.sh
+++ b/test/profiles/profiles.sh
@@ -40,7 +40,7 @@ if [ -d "/run/user/$UID" ]; then
40 PROFILES=`ls /etc/firejail/*.profile` 40 PROFILES=`ls /etc/firejail/*.profile`
41 echo "TESTING: default profiles installed in /etc" 41 echo "TESTING: default profiles installed in /etc"
42else 42else
43 PROFILES=`ls /etc/firejail/fi*.profile /etc/firejail/fl*.profile /etc/firejail/free*.profile` 43 PROFILES=`ls /etc/firejail/transmission*.profile /etc/firejail/fi*.profile /etc/firejail/fl*.profile /etc/firejail/free*.profile`
44 echo "TESTING: small number of default profiles installed in /etc" 44 echo "TESTING: small number of default profiles installed in /etc"
45fi 45fi
46 46