aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar netblue30 <netblue30@protonmail.com>2023-07-16 11:24:12 -0400
committerLibravatar netblue30 <netblue30@protonmail.com>2023-07-16 11:24:12 -0400
commitcb39a0eafd030829c0081e698cb934fd4f09692f (patch)
tree755ee6a74cd9fee380c4fd1c6a5cb2a4361c4b66
parentfnettrace cleanup (diff)
parentMerge pull request #5900 from kmk3/firecfg-support-doas (diff)
downloadfirejail-cb39a0eafd030829c0081e698cb934fd4f09692f.tar.gz
firejail-cb39a0eafd030829c0081e698cb934fd4f09692f.tar.zst
firejail-cb39a0eafd030829c0081e698cb934fd4f09692f.zip
Merge branch 'master' of ssh://github.com/netblue30/firejail
-rw-r--r--Makefile2
-rw-r--r--etc/ids.config1
-rw-r--r--etc/inc/disable-common.inc3
-rw-r--r--etc/inc/disable-programs.inc2
-rw-r--r--etc/profile-a-l/bleachbit.profile3
-rw-r--r--etc/profile-a-l/feh.profile12
-rw-r--r--etc/profile-m-z/rssguard.profile58
-rw-r--r--src/firecfg/desktop_files.c2
-rw-r--r--src/firecfg/firecfg.config1
-rw-r--r--src/firecfg/firecfg.h2
-rw-r--r--src/firecfg/main.c16
-rw-r--r--src/jailcheck/main.c3
-rw-r--r--src/jailcheck/utils.c5
-rw-r--r--src/man/firecfg.1.in4
-rw-r--r--src/man/jailcheck.1.in5
15 files changed, 103 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 53b57a0e1..fdf83beb4 100644
--- a/Makefile
+++ b/Makefile
@@ -362,7 +362,7 @@ scan-build: clean
362 362
363.PHONY: codespell 363.PHONY: codespell
364codespell: clean 364codespell: clean
365 codespell --ignore-regex "UE|creat|shotcut|ether" src test 365 codespell --ignore-regex "UE|creat|doas|shotcut|ether" src test
366 366
367.PHONY: print-env 367.PHONY: print-env
368print-env: 368print-env:
diff --git a/etc/ids.config b/etc/ids.config
index 880ec6ab5..4b75c701c 100644
--- a/etc/ids.config
+++ b/etc/ids.config
@@ -139,6 +139,7 @@ ${HOME}/.local/share/autostart
139/etc/security 139/etc/security
140/etc/selinux 140/etc/selinux
141/etc/shadow* 141/etc/shadow*
142/etc/sudo*.conf
142/etc/sudoers* 143/etc/sudoers*
143/etc/tripwire 144/etc/tripwire
144${HOME}/.config/firejail 145${HOME}/.config/firejail
diff --git a/etc/inc/disable-common.inc b/etc/inc/disable-common.inc
index 4277100ce..ce4f08958 100644
--- a/etc/inc/disable-common.inc
+++ b/etc/inc/disable-common.inc
@@ -416,6 +416,7 @@ blacklist /tmp/ssh-*
416# top secret 416# top secret
417blacklist /.fscrypt 417blacklist /.fscrypt
418blacklist /etc/davfs2/secrets 418blacklist /etc/davfs2/secrets
419blacklist /etc/doas.conf
419blacklist /etc/group+ 420blacklist /etc/group+
420blacklist /etc/group- 421blacklist /etc/group-
421blacklist /etc/gshadow 422blacklist /etc/gshadow
@@ -428,6 +429,8 @@ blacklist /etc/shadow+
428blacklist /etc/shadow- 429blacklist /etc/shadow-
429blacklist /etc/ssh 430blacklist /etc/ssh
430blacklist /etc/ssh/* 431blacklist /etc/ssh/*
432blacklist /etc/sudo*.conf
433blacklist /etc/sudoers*
431blacklist /home/.ecryptfs 434blacklist /home/.ecryptfs
432blacklist /home/.fscrypt 435blacklist /home/.fscrypt
433blacklist ${HOME}/*.kdb 436blacklist ${HOME}/*.kdb
diff --git a/etc/inc/disable-programs.inc b/etc/inc/disable-programs.inc
index b4a01638f..f95ddf2fa 100644
--- a/etc/inc/disable-programs.inc
+++ b/etc/inc/disable-programs.inc
@@ -329,6 +329,7 @@ blacklist ${HOME}/.config/Qlipper
329blacklist ${HOME}/.config/QuiteRss 329blacklist ${HOME}/.config/QuiteRss
330blacklist ${HOME}/.config/QuiteRssrc 330blacklist ${HOME}/.config/QuiteRssrc
331blacklist ${HOME}/.config/Quotient 331blacklist ${HOME}/.config/Quotient
332blacklist ${HOME}/.config/RSS Guard 4
332blacklist ${HOME}/.config/Rambox 333blacklist ${HOME}/.config/Rambox
333blacklist ${HOME}/.config/Riot 334blacklist ${HOME}/.config/Riot
334blacklist ${HOME}/.config/Rocket.Chat 335blacklist ${HOME}/.config/Rocket.Chat
@@ -432,6 +433,7 @@ blacklist ${HOME}/.config/equalx
432blacklist ${HOME}/.config/evince 433blacklist ${HOME}/.config/evince
433blacklist ${HOME}/.config/evolution 434blacklist ${HOME}/.config/evolution
434blacklist ${HOME}/.config/falkon 435blacklist ${HOME}/.config/falkon
436blacklist ${HOME}/.config/feh
435blacklist ${HOME}/.config/filezilla 437blacklist ${HOME}/.config/filezilla
436blacklist ${HOME}/.config/flameshot 438blacklist ${HOME}/.config/flameshot
437blacklist ${HOME}/.config/flaska.net 439blacklist ${HOME}/.config/flaska.net
diff --git a/etc/profile-a-l/bleachbit.profile b/etc/profile-a-l/bleachbit.profile
index 45ae345c3..52d970d89 100644
--- a/etc/profile-a-l/bleachbit.profile
+++ b/etc/profile-a-l/bleachbit.profile
@@ -7,6 +7,9 @@ include bleachbit.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10# Necessary for BleachBit to erase Trash contents.
11noblacklist ${HOME}/.local/share/Trash
12
10# Allow python (blacklisted by disable-interpreters.inc) 13# Allow python (blacklisted by disable-interpreters.inc)
11include allow-python2.inc 14include allow-python2.inc
12include allow-python3.inc 15include allow-python3.inc
diff --git a/etc/profile-a-l/feh.profile b/etc/profile-a-l/feh.profile
index 82b3f7645..2efd10ba2 100644
--- a/etc/profile-a-l/feh.profile
+++ b/etc/profile-a-l/feh.profile
@@ -7,23 +7,33 @@ include feh.local
7# Persistent global definitions 7# Persistent global definitions
8include globals.local 8include globals.local
9 9
10noblacklist ${HOME}/.config/feh
11
10include disable-common.inc 12include disable-common.inc
11include disable-devel.inc 13include disable-devel.inc
12include disable-exec.inc 14include disable-exec.inc
13include disable-interpreters.inc 15include disable-interpreters.inc
16include disable-proc.inc
14include disable-programs.inc 17include disable-programs.inc
15include disable-shell.inc 18include disable-shell.inc
16 19
20include whitelist-run-common.inc
21include whitelist-runuser-common.inc
22
17# Add the next line to your feh.local to enable network access. 23# Add the next line to your feh.local to enable network access.
18#include feh-network.inc.profile 24#include feh-network.inc.profile
19 25
26apparmor
20caps.drop all 27caps.drop all
28ipc-namespace
29machine-id
21net none 30net none
22no3d 31no3d
23nodvd 32nodvd
24nogroups 33nogroups
25noinput 34noinput
26nonewprivs 35nonewprivs
36noprinters
27noroot 37noroot
28nosound 38nosound
29notv 39notv
@@ -31,6 +41,8 @@ nou2f
31novideo 41novideo
32protocol unix 42protocol unix
33seccomp 43seccomp
44seccomp.block-secondary
45tracelog
34 46
35private-bin feh,jpegexiforient,jpegtran 47private-bin feh,jpegexiforient,jpegtran
36private-cache 48private-cache
diff --git a/etc/profile-m-z/rssguard.profile b/etc/profile-m-z/rssguard.profile
new file mode 100644
index 000000000..81381c205
--- /dev/null
+++ b/etc/profile-m-z/rssguard.profile
@@ -0,0 +1,58 @@
1# Firejail profile for rssguard
2# Description: Simple (yet powerful) Qt feed reader
3# This file is overwritten after every install/update
4# Persistent local customizations
5include rssguard.local
6# Persistent global definitions
7include globals.local
8
9noblacklist ${HOME}/.config/RSS Guard 4
10
11include allow-nodejs.inc
12
13include disable-common.inc
14include disable-devel.inc
15include disable-exec.inc
16include disable-interpreters.inc
17include disable-proc.inc
18include disable-programs.inc
19include disable-shell.inc
20include disable-xdg.inc
21
22mkdir ${HOME}/.config/RSS Guard 4
23whitelist ${HOME}/.config/RSS Guard 4
24whitelist ${DOWNLOADS}
25include whitelist-common.inc
26include whitelist-run-common.inc
27include whitelist-runuser-common.inc
28include whitelist-usr-share-common.inc
29include whitelist-var-common.inc
30
31apparmor
32caps.drop all
33netfilter
34# no3d
35nodvd
36nogroups
37noinput
38nonewprivs
39noroot
40# nosound
41notv
42nou2f
43novideo
44protocol unix,inet,inet6,netlink
45seccomp
46seccomp.block-secondary
47tracelog
48
49disable-mnt
50private-bin node,rssguard
51private-dev
52private-etc @network,@sound,@tls-ca,@x11,mime.types
53private-tmp
54
55dbus-user none
56dbus-system none
57
58restrict-namespaces
diff --git a/src/firecfg/desktop_files.c b/src/firecfg/desktop_files.c
index 963e05ff3..7ac60f70c 100644
--- a/src/firecfg/desktop_files.c
+++ b/src/firecfg/desktop_files.c
@@ -108,7 +108,7 @@ static int have_profile(const char *filename, const char *homedir) {
108 return rv; 108 return rv;
109} 109}
110 110
111void fix_desktop_files(char *homedir) { 111void fix_desktop_files(const char *homedir) {
112 assert(homedir); 112 assert(homedir);
113 struct stat sb; 113 struct stat sb;
114 114
diff --git a/src/firecfg/firecfg.config b/src/firecfg/firecfg.config
index dac5794b4..2755968c9 100644
--- a/src/firecfg/firecfg.config
+++ b/src/firecfg/firecfg.config
@@ -734,6 +734,7 @@ ripperx
734ristretto 734ristretto
735rocketchat 735rocketchat
736rpcs3 736rpcs3
737rssguard
737rtorrent 738rtorrent
738runenpass.sh 739runenpass.sh
739sayonara 740sayonara
diff --git a/src/firecfg/firecfg.h b/src/firecfg/firecfg.h
index 825bf8d03..8f74a1198 100644
--- a/src/firecfg/firecfg.h
+++ b/src/firecfg/firecfg.h
@@ -49,6 +49,6 @@ int is_link(const char *fname);
49void sound(void); 49void sound(void);
50 50
51// desktop_files.c 51// desktop_files.c
52void fix_desktop_files(char *homedir); 52void fix_desktop_files(const char *homedir);
53 53
54#endif 54#endif
diff --git a/src/firecfg/main.c b/src/firecfg/main.c
index da962c35d..4ec81c5b3 100644
--- a/src/firecfg/main.c
+++ b/src/firecfg/main.c
@@ -288,8 +288,11 @@ static void set_links_homedir(const char *homedir) {
288 free(firejail_exec); 288 free(firejail_exec);
289} 289}
290 290
291static char *get_user(void) { 291static const char *get_sudo_user(void) {
292 char *user = getenv("SUDO_USER"); 292 const char *doas_user = getenv("DOAS_USER");
293 const char *sudo_user = getenv("SUDO_USER");
294 const char *user = doas_user ? doas_user : sudo_user;
295
293 if (!user) { 296 if (!user) {
294 user = getpwuid(getuid())->pw_name; 297 user = getpwuid(getuid())->pw_name;
295 if (!user) { 298 if (!user) {
@@ -301,13 +304,13 @@ static char *get_user(void) {
301 return user; 304 return user;
302} 305}
303 306
304static char *get_homedir(const char *user, uid_t *uid, gid_t *gid) { 307static const char *get_homedir(const char *user, uid_t *uid, gid_t *gid) {
305 // find home directory 308 // find home directory
306 struct passwd *pw = getpwnam(user); 309 struct passwd *pw = getpwnam(user);
307 if (!pw) 310 if (!pw)
308 goto errexit; 311 goto errexit;
309 312
310 char *home = pw->pw_dir; 313 const char *home = pw->pw_dir;
311 if (!home) 314 if (!home)
312 goto errexit; 315 goto errexit;
313 316
@@ -326,12 +329,11 @@ int main(int argc, char **argv) {
326 int bindir_set = 0; 329 int bindir_set = 0;
327 330
328 // user setup 331 // user setup
329 char *user = get_user(); 332 const char *user = get_sudo_user();
330 assert(user); 333 assert(user);
331 uid_t uid; 334 uid_t uid;
332 gid_t gid; 335 gid_t gid;
333 char *home = get_homedir(user, &uid, &gid); 336 const char *home = get_homedir(user, &uid, &gid);
334
335 337
336 // check for --bindir 338 // check for --bindir
337 for (i = 1; i < argc; i++) { 339 for (i = 1; i < argc; i++) {
diff --git a/src/jailcheck/main.c b/src/jailcheck/main.c
index 27da309ea..6cc5cf904 100644
--- a/src/jailcheck/main.c
+++ b/src/jailcheck/main.c
@@ -86,7 +86,7 @@ int main(int argc, char **argv) {
86 86
87 // user setup 87 // user setup
88 if (getuid() != 0) { 88 if (getuid() != 0) {
89 fprintf(stderr, "Error: you need to be root (via sudo) to run this program\n"); 89 fprintf(stderr, "Error: you need to be root (via sudo or doas) to run this program\n");
90 exit(1); 90 exit(1);
91 } 91 }
92 user_name = get_sudo_user(); 92 user_name = get_sudo_user();
@@ -120,6 +120,7 @@ int main(int argc, char **argv) {
120 // basic sysfiles 120 // basic sysfiles
121 sysfiles_setup("/etc/shadow"); 121 sysfiles_setup("/etc/shadow");
122 sysfiles_setup("/etc/gshadow"); 122 sysfiles_setup("/etc/gshadow");
123 sysfiles_setup("/usr/bin/doas");
123 sysfiles_setup("/usr/bin/mount"); 124 sysfiles_setup("/usr/bin/mount");
124 sysfiles_setup("/usr/bin/su"); 125 sysfiles_setup("/usr/bin/su");
125 sysfiles_setup("/usr/bin/ksu"); 126 sysfiles_setup("/usr/bin/ksu");
diff --git a/src/jailcheck/utils.c b/src/jailcheck/utils.c
index 97fe8833b..930820604 100644
--- a/src/jailcheck/utils.c
+++ b/src/jailcheck/utils.c
@@ -26,7 +26,10 @@
26#define BUFLEN 4096 26#define BUFLEN 4096
27 27
28char *get_sudo_user(void) { 28char *get_sudo_user(void) {
29 char *user = getenv("SUDO_USER"); 29 char *doas_user = getenv("DOAS_USER");
30 char *sudo_user = getenv("SUDO_USER");
31 char *user = doas_user ? doas_user : sudo_user;
32
30 if (!user) { 33 if (!user) {
31 user = getpwuid(getuid())->pw_name; 34 user = getpwuid(getuid())->pw_name;
32 if (!user) { 35 if (!user) {
diff --git a/src/man/firecfg.1.in b/src/man/firecfg.1.in
index 42add6a41..a85fbc5da 100644
--- a/src/man/firecfg.1.in
+++ b/src/man/firecfg.1.in
@@ -23,7 +23,9 @@ The integration covers:
23- programs started by clicking on file icons in file manager - only Cinnamon, KDE, LXDE/LXQT, MATE and XFCE 23- programs started by clicking on file icons in file manager - only Cinnamon, KDE, LXDE/LXQT, MATE and XFCE
24desktop managers are supported in this moment 24desktop managers are supported in this moment
25.RE 25.RE
26 26.PP
27Note: The examples use \fBsudo\fR, but \fBdoas\fR is also supported.
28.PP
27To set it up, run "sudo firecfg" after installing Firejail software. 29To set it up, run "sudo firecfg" after installing Firejail software.
28The same command should also be run after 30The same command should also be run after
29installing new programs. If the program is supported by Firejail, the symbolic link in /usr/local/bin 31installing new programs. If the program is supported by Firejail, the symbolic link in /usr/local/bin
diff --git a/src/man/jailcheck.1.in b/src/man/jailcheck.1.in
index e889ea91b..eea5987b7 100644
--- a/src/man/jailcheck.1.in
+++ b/src/man/jailcheck.1.in
@@ -24,9 +24,8 @@ them from inside the sandbox.
24\fB5. Seccomp test 24\fB5. Seccomp test
25.TP 25.TP
26\fB6. Networking test 26\fB6. Networking test
27.TP 27.PP
28The program is started as root using sudo. 28The program should be started using \fBsudo\fR or \fBdoas\fR.
29
30.SH OPTIONS 29.SH OPTIONS
31.TP 30.TP
32\fB\-\-debug 31\fB\-\-debug