aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in4
-rwxr-xr-xgcov.sh6
-rw-r--r--src/firecfg/desktop_files.c10
-rw-r--r--src/firecfg/main.c63
-rw-r--r--src/firejail/usage.c409
-rw-r--r--src/firemon/usage.c111
-rw-r--r--src/fnetfilter/main.c41
-rwxr-xr-xtest/environment/csh.exp14
-rwxr-xr-xtest/environment/zsh.exp14
-rwxr-xr-xtest/login_ssh.exp59
-rwxr-xr-xtest/network/netfilter-template.exp23
-rwxr-xr-xtest/root/firecfg.exp6
-rwxr-xr-xtest/root/login_nobody.exp35
-rwxr-xr-xtest/root/root.sh29
-rwxr-xr-xtest/ssh/login.exp49
-rwxr-xr-xtest/ssh/scp.exp63
-rwxr-xr-xtest/ssh/sftp.exp87
-rwxr-xr-xtest/ssh/ssh.sh16
-rwxr-xr-xtest/utils/audit.exp60
-rwxr-xr-xtest/utils/build.exp33
-rwxr-xr-xtest/utils/command.exp23
-rwxr-xr-xtest/utils/name.exp174
-rwxr-xr-xtest/utils/profile_print.exp27
-rwxr-xr-xtest/utils/utils.sh13
24 files changed, 976 insertions, 393 deletions
diff --git a/Makefile.in b/Makefile.in
index 134e7bd66..ebf9d40e8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -299,6 +299,10 @@ test-travis: test-profiles test-fcopy test-fnetfilter test-fs test-utils test-sy
299# with them you will need to restart your computer. 299# with them you will need to restart your computer.
300########################################## 300##########################################
301 301
302# a firejail-test account is required, public/private key setup
303test-ssh:
304 cd test/ssh; ./ssh.sh | grep TESTING
305
302# requires root access 306# requires root access
303test-chroot: 307test-chroot:
304 cd test/chroot; ./chroot.sh | grep testing 308 cd test/chroot; ./chroot.sh | grep testing
diff --git a/gcov.sh b/gcov.sh
index ff910cbe0..8fb4a9a8d 100755
--- a/gcov.sh
+++ b/gcov.sh
@@ -34,7 +34,7 @@ generate() {
34gcov_init 34gcov_init
35lcov -q --capture -d src/firejail -d src/firemon -d src/faudit -d src/fbuilder -d src/fcopy -d src/fnetfilter -d src/fsec-print -d src/fsec-optimize -d src/fseccomp -d src/fnet -d src/ftee -d src/lib -d src/firecfg -d src/fldd --output-file gcov-file-old 35lcov -q --capture -d src/firejail -d src/firemon -d src/faudit -d src/fbuilder -d src/fcopy -d src/fnetfilter -d src/fsec-print -d src/fsec-optimize -d src/fseccomp -d src/fnet -d src/ftee -d src/lib -d src/firecfg -d src/fldd --output-file gcov-file-old
36 36
37#make test-environment 37#make test-utils
38#generate 38#generate
39#sleep 2 39#sleep 2
40#exit 40#exit
@@ -57,6 +57,10 @@ make test-stress
57generate 57generate
58sleep 2 58sleep 2
59 59
60make test-ssh
61generate
62sleep 2
63
60make test-appimage 64make test-appimage
61generate 65generate
62sleep 2 66sleep 2
diff --git a/src/firecfg/desktop_files.c b/src/firecfg/desktop_files.c
index 0a6a0bbf0..49e58528c 100644
--- a/src/firecfg/desktop_files.c
+++ b/src/firecfg/desktop_files.c
@@ -136,15 +136,9 @@ void fix_desktop_files(char *homedir) {
136 136
137 // source 137 // source
138 DIR *dir = opendir("/usr/share/applications"); 138 DIR *dir = opendir("/usr/share/applications");
139 if (!dir) { 139 if (!dir || chdir("/usr/share/applications")) {
140 perror("opendir"); 140 perror("opendir");
141 fprintf(stderr, "Warning: cannot open /usr/share/applications directory, desktop files fixing skipped...\n"); 141 fprintf(stderr, "Warning: cannot access /usr/share/applications directory, desktop files fixing skipped...\n");
142 free(user_apps_dir);
143 return;
144 }
145 if (chdir("/usr/share/applications")) {
146 perror("chdir");
147 fprintf(stderr, "Warning: cannot chdir to /usr/share/applications, desktop files fixing skipped...\n");
148 free(user_apps_dir); 142 free(user_apps_dir);
149 return; 143 return;
150 } 144 }
diff --git a/src/firecfg/main.c b/src/firecfg/main.c
index ab0fd53e3..e636dc385 100644
--- a/src/firecfg/main.c
+++ b/src/firecfg/main.c
@@ -21,38 +21,41 @@
21#include "firecfg.h" 21#include "firecfg.h"
22int arg_debug = 0; 22int arg_debug = 0;
23 23
24static char *usage_str =
25 "Firecfg is the desktop configuration utility for Firejail software. The utility\n"
26 "creates several symbolic links to firejail executable. This allows the user to\n"
27 "sandbox applications automatically, just by clicking on a regular desktop\n"
28 "menus and icons.\n\n"
29 "The symbolic links are placed in /usr/local/bin. For more information, see\n"
30 "DESKTOP INTEGRATION section in man 1 firejail.\n\n"
31 "Usage: firecfg [OPTIONS]\n\n"
32 " --clean - remove all firejail symbolic links.\n\n"
33 " --debug - print debug messages.\n\n"
34 " --fix - fix .desktop files.\n\n"
35 " --fix-sound - create ~/.config/pulse/client.conf file.\n\n"
36 " --help, -? - this help screen.\n\n"
37 " --list - list all firejail symbolic links.\n\n"
38 " --version - print program version and exit.\n\n"
39 "Example:\n\n"
40 " $ sudo firecfg\n"
41 " /usr/local/bin/firefox created\n"
42 " /usr/local/bin/vlc created\n"
43 " [...]\n"
44 " $ firecfg --list\n"
45 " /usr/local/bin/firefox\n"
46 " /usr/local/bin/vlc\n"
47 " [...]\n"
48 " $ sudo firecfg --clean\n"
49 " /usr/local/bin/firefox removed\n"
50 " /usr/local/bin/vlc removed\n"
51 " [...]\n"
52 "\n"
53 "License GPL version 2 or later\n"
54 "Homepage: http://firejail.wordpress.com\n\n";
55
24static void usage(void) { 56static void usage(void) {
25 printf("firecfg - version %s\n\n", VERSION); 57 printf("firecfg - version %s\n\n", VERSION);
26 printf("Firecfg is the desktop configuration utility for Firejail software. The utility\n"); 58 puts(usage_str);
27 printf("creates several symbolic links to firejail executable. This allows the user to\n");
28 printf("sandbox applications automatically, just by clicking on a regular desktop\n");
29 printf("menus and icons.\n\n");
30 printf("The symbolic links are placed in /usr/local/bin. For more information, see\n");
31 printf("DESKTOP INTEGRATION section in man 1 firejail.\n\n");
32 printf("Usage: firecfg [OPTIONS]\n\n");
33 printf(" --clean - remove all firejail symbolic links.\n\n");
34 printf(" --debug - print debug messages.\n\n");
35 printf(" --fix - fix .desktop files.\n\n");
36 printf(" --fix-sound - create ~/.config/pulse/client.conf file.\n\n");
37 printf(" --help, -? - this help screen.\n\n");
38 printf(" --list - list all firejail symbolic links.\n\n");
39 printf(" --version - print program version and exit.\n\n");
40 printf("Example:\n\n");
41 printf(" $ sudo firecfg\n");
42 printf(" /usr/local/bin/firefox created\n");
43 printf(" /usr/local/bin/vlc created\n");
44 printf(" [...]\n");
45 printf(" $ firecfg --list\n");
46 printf(" /usr/local/bin/firefox\n");
47 printf(" /usr/local/bin/vlc\n");
48 printf(" [...]\n");
49 printf(" $ sudo firecfg --clean\n");
50 printf(" /usr/local/bin/firefox removed\n");
51 printf(" /usr/local/bin/vlc removed\n");
52 printf(" [...]\n");
53 printf("\n");
54 printf("License GPL version 2 or later\n");
55 printf("Homepage: http://firejail.wordpress.com\n\n");
56} 59}
57 60
58 61
diff --git a/src/firejail/usage.c b/src/firejail/usage.c
index cefb63a85..1c878c818 100644
--- a/src/firejail/usage.c
+++ b/src/firejail/usage.c
@@ -19,243 +19,246 @@
19*/ 19*/
20#include "firejail.h" 20#include "firejail.h"
21 21
22void usage(void) { 22static char *usage_str =
23 printf("firejail - version %s\n\n", VERSION); 23 "Firejail is a SUID sandbox program that reduces the risk of security breaches by\n"
24 printf("Firejail is a SUID sandbox program that reduces the risk of security breaches by\n"); 24 "restricting the running environment of untrusted applications using Linux\n"
25 printf("restricting the running environment of untrusted applications using Linux\n"); 25 "namespaces.\n"
26 printf("namespaces.\n"); 26 "\n"
27 printf("\n"); 27 "Usage: firejail [options] [program and arguments]\n"
28 printf("Usage: firejail [options] [program and arguments]\n"); 28 "\n"
29 printf("\n"); 29 "Options:\n"
30 printf("Options:\n"); 30 " -- - signal the end of options and disables further option processing.\n"
31 printf(" -- - signal the end of options and disables further option processing.\n"); 31 " --allow-debuggers - allow tools such as strace and gdb inside the sandbox.\n"
32 printf(" --allow-debuggers - allow tools such as strace and gdb inside the sandbox.\n"); 32 " --allow-private-blacklist - allow blacklisting files in private\n"
33 printf(" --allow-private-blacklist - allow blacklisting files in private\n"); 33 "\thome directories.\n"
34 printf("\thome directories.\n"); 34 " --allusers - all user home directories are visible inside the sandbox.\n"
35 printf(" --allusers - all user home directories are visible inside the sandbox.\n"); 35 " --apparmor - enable AppArmor confinement.\n"
36 printf(" --apparmor - enable AppArmor confinement.\n"); 36 " --apparmor.print=name|pid - print apparmor status.\n"
37 printf(" --apparmor.print=name|pid - print apparmor status.\n"); 37 " --appimage - sandbox an AppImage application.\n"
38 printf(" --appimage - sandbox an AppImage application.\n"); 38 " --audit[=test-program] - audit the sandbox.\n"
39 printf(" --audit[=test-program] - audit the sandbox.\n");
40#ifdef HAVE_NETWORK 39#ifdef HAVE_NETWORK
41 printf(" --bandwidth=name|pid - set bandwidth limits.\n"); 40 " --bandwidth=name|pid - set bandwidth limits.\n"
42#endif 41#endif
43#ifdef HAVE_BIND 42#ifdef HAVE_BIND
44 printf(" --bind=dirname1,dirname2 - mount-bind dirname1 on top of dirname2.\n"); 43 " --bind=dirname1,dirname2 - mount-bind dirname1 on top of dirname2.\n"
45 printf(" --bind=filename1,filename2 - mount-bind filename1 on top of filename2.\n"); 44 " --bind=filename1,filename2 - mount-bind filename1 on top of filename2.\n"
46#endif 45#endif
47 printf(" --blacklist=filename - blacklist directory or file.\n"); 46 " --blacklist=filename - blacklist directory or file.\n"
48 printf(" --build - build a whitelisted profile for the application.\n"); 47 " --build - build a whitelisted profile for the application.\n"
49 printf(" --build=filename - build a whitelisted profile for the application.\n"); 48 " --build=filename - build a whitelisted profile for the application.\n"
50 printf(" -c - execute command and exit.\n"); 49 " -c - execute command and exit.\n"
51 printf(" --caps - enable default Linux capabilities filter.\n"); 50 " --caps - enable default Linux capabilities filter.\n"
52 printf(" --caps.drop=all - drop all capabilities.\n"); 51 " --caps.drop=all - drop all capabilities.\n"
53 printf(" --caps.drop=capability,capability - blacklist capabilities filter.\n"); 52 " --caps.drop=capability,capability - blacklist capabilities filter.\n"
54 printf(" --caps.keep=capability,capability - whitelist capabilities filter.\n"); 53 " --caps.keep=capability,capability - whitelist capabilities filter.\n"
55 printf(" --caps.print=name|pid - print the caps filter.\n"); 54 " --caps.print=name|pid - print the caps filter.\n"
56 printf(" --cgroup=tasks-file - place the sandbox in the specified control group.\n"); 55 " --cgroup=tasks-file - place the sandbox in the specified control group.\n"
57#ifdef HAVE_CHROOT 56#ifdef HAVE_CHROOT
58 printf(" --chroot=dirname - chroot into directory.\n"); 57 " --chroot=dirname - chroot into directory.\n"
59#endif 58#endif
60 printf(" --cpu=cpu-number,cpu-number - set cpu affinity.\n"); 59 " --cpu=cpu-number,cpu-number - set cpu affinity.\n"
61 printf(" --cpu.print=name|pid - print the cpus in use.\n"); 60 " --cpu.print=name|pid - print the cpus in use.\n"
62 printf(" --csh - use /bin/csh as default shell.\n"); 61 " --csh - use /bin/csh as default shell.\n"
63 printf(" --debug - print sandbox debug messages.\n"); 62 " --debug - print sandbox debug messages.\n"
64 printf(" --debug-blacklists - debug blacklisting.\n"); 63 " --debug-blacklists - debug blacklisting.\n"
65 printf(" --debug-caps - print all recognized capabilities.\n"); 64 " --debug-caps - print all recognized capabilities.\n"
66 printf(" --debug-check-filename - debug filename checking.\n"); 65 " --debug-check-filename - debug filename checking.\n"
67 printf(" --debug-errnos - print all recognized error numbers.\n"); 66 " --debug-errnos - print all recognized error numbers.\n"
68 printf(" --debug-private-lib - debug for --private-lib option.\n"); 67 " --debug-private-lib - debug for --private-lib option.\n"
69 printf(" --debug-protocols - print all recognized protocols.\n"); 68 " --debug-protocols - print all recognized protocols.\n"
70 printf(" --debug-syscalls - print all recognized system calls.\n"); 69 " --debug-syscalls - print all recognized system calls.\n"
71#ifdef HAVE_WHITELIST 70#ifdef HAVE_WHITELIST
72 printf(" --debug-whitelists - debug whitelisting.\n"); 71 " --debug-whitelists - debug whitelisting.\n"
73#endif 72#endif
74#ifdef HAVE_NETWORK 73#ifdef HAVE_NETWORK
75 printf(" --defaultgw=address - configure default gateway.\n"); 74 " --defaultgw=address - configure default gateway.\n"
76#endif 75#endif
77 printf(" --dns=address - set DNS server.\n"); 76 " --dns=address - set DNS server.\n"
78 printf(" --dns.print=name|pid - print DNS configuration.\n"); 77 " --dns.print=name|pid - print DNS configuration.\n"
79 78 " --env=name=value - set environment variable.\n"
80 printf(" --env=name=value - set environment variable.\n"); 79 " --force - attempt to start a new sandbox inside the existing sandbox.\n"
81 printf(" --force - attempt to start a new sandbox inside the existing sandbox.\n"); 80 " --fs.print=name|pid - print the filesystem log.\n"
82 printf(" --fs.print=name|pid - print the filesystem log.\n"); 81 " --get=name|pid filename - get a file from sandbox container.\n"
83 printf(" --get=name|pid filename - get a file from sandbox container.\n");
84#ifdef HAVE_GIT_INSTALL 82#ifdef HAVE_GIT_INSTALL
85 printf(" --git-install - download, compile and install mainline git version\n"); 83 " --git-install - download, compile and install mainline git version\n"
86 printf("\tof Firejail.\n"); 84 "\tof Firejail.\n"
87 printf(" --git-uninstall - uninstall mainline git version of Firejail\n"); 85 " --git-uninstall - uninstall mainline git version of Firejail\n"
88#endif 86#endif
89 printf(" --help, -? - this help screen.\n"); 87 " --help, -? - this help screen.\n"
90 printf(" --hostname=name - set sandbox hostname.\n"); 88 " --hostname=name - set sandbox hostname.\n"
91 printf(" --hosts-file=file - use file as /etc/hosts.\n"); 89 " --hosts-file=file - use file as /etc/hosts.\n"
92 printf(" --ignore=command - ignore command in profile files.\n"); 90 " --ignore=command - ignore command in profile files.\n"
93#ifdef HAVE_NETWORK 91#ifdef HAVE_NETWORK
94 printf(" --interface=name - move interface in sandbox.\n"); 92 " --interface=name - move interface in sandbox.\n"
95 printf(" --ip=address - set interface IP address.\n"); 93 " --ip=address - set interface IP address.\n"
96 printf(" --ip=none - no IP address and no default gateway are configured.\n"); 94 " --ip=none - no IP address and no default gateway are configured.\n"
97 printf(" --ip6=address - set interface IPv6 address.\n"); 95 " --ip6=address - set interface IPv6 address.\n"
98 printf(" --iprange=address,address - configure an IP address in this range.\n"); 96 " --iprange=address,address - configure an IP address in this range.\n"
99#endif 97#endif
100 printf(" --ipc-namespace - enable a new IPC namespace.\n"); 98 " --ipc-namespace - enable a new IPC namespace.\n"
101 printf(" --join=name|pid - join the sandbox.\n"); 99 " --join=name|pid - join the sandbox.\n"
102 printf(" --join-filesystem=name|pid - join the mount namespace.\n"); 100 " --join-filesystem=name|pid - join the mount namespace.\n"
103#ifdef HAVE_NETWORK 101#ifdef HAVE_NETWORK
104 printf(" --join-network=name|pid - join the network namespace.\n"); 102 " --join-network=name|pid - join the network namespace.\n"
105#endif 103#endif
106 printf(" --join-or-start=name|pid - join the sandbox or start a new one.\n"); 104 " --join-or-start=name|pid - join the sandbox or start a new one.\n"
107 printf(" --list - list all sandboxes.\n"); 105 " --list - list all sandboxes.\n"
108 printf(" --ls=name|pid dir_or_filename - list files in sandbox container.\n"); 106 " --ls=name|pid dir_or_filename - list files in sandbox container.\n"
109#ifdef HAVE_NETWORK 107#ifdef HAVE_NETWORK
110 printf(" --mac=xx:xx:xx:xx:xx:xx - set interface MAC address.\n"); 108 " --mac=xx:xx:xx:xx:xx:xx - set interface MAC address.\n"
111#endif 109#endif
112 printf(" --machine-id - preserve /etc/machine-id\n"); 110 " --machine-id - preserve /etc/machine-id\n"
113#ifdef HAVE_SECCOMP 111#ifdef HAVE_SECCOMP
114 printf(" --memory-deny-write-execute - seccomp filter to block attempts to create\n"); 112 " --memory-deny-write-execute - seccomp filter to block attempts to create\n"
115 printf("\tmemory mappings that are both writable and executable.\n"); 113 "\tmemory mappings that are both writable and executable.\n"
116#endif 114#endif
117#ifdef HAVE_NETWORK 115#ifdef HAVE_NETWORK
118 printf(" --mtu=number - set interface MTU.\n"); 116 " --mtu=number - set interface MTU.\n"
119#endif 117#endif
120 printf(" --name=name - set sandbox name.\n"); 118 " --name=name - set sandbox name.\n"
121#ifdef HAVE_NETWORK 119#ifdef HAVE_NETWORK
122 printf(" --net=bridgename - enable network namespaces and connect to this bridge.\n"); 120 " --net=bridgename - enable network namespaces and connect to this bridge.\n"
123 printf(" --net=ethernet_interface - enable network namespaces and connect to this\n"); 121 " --net=ethernet_interface - enable network namespaces and connect to this\n"
124 printf("\tEthernet interface.\n"); 122 "\tEthernet interface.\n"
125 printf(" --net=none - enable a new, unconnected network namespace.\n"); 123 " --net=none - enable a new, unconnected network namespace.\n"
126 printf(" --netfilter[=filename,arg1,arg2,arg3 ...] - enable firewall.\n"); 124 " --netfilter[=filename,arg1,arg2,arg3 ...] - enable firewall.\n"
127 printf(" --netfilter.print=name|pid - print the firewall.\n"); 125 " --netfilter.print=name|pid - print the firewall.\n"
128 printf(" --netfilter6=filename - enable IPv6 firewall.\n"); 126 " --netfilter6=filename - enable IPv6 firewall.\n"
129 printf(" --netfilter6.print=name|pid - print the IPv6 firewall.\n"); 127 " --netfilter6.print=name|pid - print the IPv6 firewall.\n"
130 printf(" --netns=name - Run the program in a named, persistent network namespace.\n"); 128 " --netns=name - Run the program in a named, persistent network namespace.\n"
131 printf(" --netstats - monitor network statistics.\n"); 129 " --netstats - monitor network statistics.\n"
132#endif 130#endif
133 printf(" --nice=value - set nice value.\n"); 131 " --nice=value - set nice value.\n"
134 printf(" --no3d - disable 3D hardware acceleration.\n"); 132 " --no3d - disable 3D hardware acceleration.\n"
135 printf(" --noblacklist=filename - disable blacklist for file or directory.\n"); 133 " --noblacklist=filename - disable blacklist for file or directory.\n"
136 printf(" --nodbus - disable D-Bus access.\n"); 134 " --nodbus - disable D-Bus access.\n"
137 printf(" --nodvd - disable DVD and audio CD devices.\n"); 135 " --nodvd - disable DVD and audio CD devices.\n"
138 printf(" --noexec=filename - remount the file or directory noexec nosuid and nodev.\n"); 136 " --noexec=filename - remount the file or directory noexec nosuid and nodev.\n"
139 printf(" --nogroups - disable supplementary groups.\n"); 137 " --nogroups - disable supplementary groups.\n"
140 printf(" --nonewprivs - sets the NO_NEW_PRIVS prctl.\n"); 138 " --nonewprivs - sets the NO_NEW_PRIVS prctl.\n"
141 printf(" --noprofile - do not use a security profile.\n"); 139 " --noprofile - do not use a security profile.\n"
142#ifdef HAVE_USERNS 140#ifdef HAVE_USERNS
143 printf(" --noroot - install a user namespace with only the current user.\n"); 141 " --noroot - install a user namespace with only the current user.\n"
144#endif 142#endif
145 printf(" --nosound - disable sound system.\n"); 143 " --nosound - disable sound system.\n"
146 printf(" --noautopulse - disable automatic ~/.config/pulse init.\n"); 144 " --noautopulse - disable automatic ~/.config/pulse init.\n"
147 printf(" --novideo - disable video devices.\n"); 145 " --novideo - disable video devices.\n"
148 printf(" --nowhitelist=filename - disable whitelist for file or directory .\n"); 146 " --nowhitelist=filename - disable whitelist for file or directory .\n"
149 printf(" --output=logfile - stdout logging and log rotation.\n"); 147 " --output=logfile - stdout logging and log rotation.\n"
150 printf(" --output-stderr=logfile - stdout and stderr logging and log rotation.\n"); 148 " --output-stderr=logfile - stdout and stderr logging and log rotation.\n"
151 printf(" --overlay - mount a filesystem overlay on top of the current filesystem.\n"); 149 " --overlay - mount a filesystem overlay on top of the current filesystem.\n"
152 printf(" --overlay-named=name - mount a filesystem overlay on top of the current\n"); 150 " --overlay-named=name - mount a filesystem overlay on top of the current\n"
153 printf("\tfilesystem, and store it in name directory.\n"); 151 "\tfilesystem, and store it in name directory.\n"
154 printf(" --overlay-tmpfs - mount a temporary filesystem overlay on top of the\n"); 152 " --overlay-tmpfs - mount a temporary filesystem overlay on top of the\n"
155 printf("\tcurrent filesystem.\n"); 153 "\tcurrent filesystem.\n"
156 printf(" --overlay-clean - clean all overlays stored in $HOME/.firejail directory.\n"); 154 " --overlay-clean - clean all overlays stored in $HOME/.firejail directory.\n"
157 printf(" --private - temporary home directory.\n"); 155 " --private - temporary home directory.\n"
158 printf(" --private=directory - use directory as user home.\n"); 156 " --private=directory - use directory as user home.\n"
159 printf(" --private-home=file,directory - build a new user home in a temporary\n"); 157 " --private-home=file,directory - build a new user home in a temporary\n"
160 printf("\tfilesystem, and copy the files and directories in the list in\n"); 158 "\tfilesystem, and copy the files and directories in the list in\n"
161 printf("\tthe new home.\n"); 159 "\tthe new home.\n"
162 printf(" --private-bin=file,file - build a new /bin in a temporary filesystem,\n"); 160 " --private-bin=file,file - build a new /bin in a temporary filesystem,\n"
163 printf("\tand copy the programs in the list.\n"); 161 "\tand copy the programs in the list.\n"
164 printf(" --private-dev - create a new /dev directory with a small number of\n"); 162 " --private-dev - create a new /dev directory with a small number of\n"
165 printf("\tcommon device files.\n"); 163 "\tcommon device files.\n"
166 printf(" --private-etc=file,directory - build a new /etc in a temporary\n"); 164 " --private-etc=file,directory - build a new /etc in a temporary\n"
167 printf("\tfilesystem, and copy the files and directories in the list.\n"); 165 "\tfilesystem, and copy the files and directories in the list.\n"
168 printf(" --private-tmp - mount a tmpfs on top of /tmp directory.\n"); 166 " --private-tmp - mount a tmpfs on top of /tmp directory.\n"
169 printf(" --private-opt=file,directory - build a new /opt in a temporary filesystem.\n"); 167 " --private-opt=file,directory - build a new /opt in a temporary filesystem.\n"
170 printf(" --profile=filename - use a custom profile.\n"); 168 " --profile=filename - use a custom profile.\n"
171 printf(" --profile.print=name|pid - print the name of profile file.\n"); 169 " --profile.print=name|pid - print the name of profile file.\n"
172 printf(" --profile-path=directory - use this directory to look for profile files.\n"); 170 " --profile-path=directory - use this directory to look for profile files.\n"
173 printf(" --protocol=protocol,protocol,protocol - enable protocol filter.\n"); 171 " --protocol=protocol,protocol,protocol - enable protocol filter.\n"
174 printf(" --protocol.print=name|pid - print the protocol filter.\n"); 172 " --protocol.print=name|pid - print the protocol filter.\n"
175 printf(" --put=name|pid src-filename dest-filename - put a file in sandbox\n"); 173 " --put=name|pid src-filename dest-filename - put a file in sandbox\n"
176 printf("\tcontainer.\n"); 174 "\tcontainer.\n"
177 printf(" --quiet - turn off Firejail's output.\n"); 175 " --quiet - turn off Firejail's output.\n"
178 printf(" --read-only=filename - set directory or file read-only..\n"); 176 " --read-only=filename - set directory or file read-only..\n"
179 printf(" --read-write=filename - set directory or file read-write.\n"); 177 " --read-write=filename - set directory or file read-write.\n"
180 printf(" --rlimit-as=number - set the maximum size of the process's virtual memory\n"); 178 " --rlimit-as=number - set the maximum size of the process's virtual memory\n"
181 printf("\t(address space) in bytes.\n"); 179 "\t(address space) in bytes.\n"
182 printf(" --rlimit-cpu=number - set the maximum CPU time in seconds.\n"); 180 " --rlimit-cpu=number - set the maximum CPU time in seconds.\n"
183 printf(" --rlimit-fsize=number - set the maximum file size that can be created\n"); 181 " --rlimit-fsize=number - set the maximum file size that can be created\n"
184 printf("\tby a process.\n"); 182 "\tby a process.\n"
185 printf(" --rlimit-nofile=number - set the maximum number of files that can be\n"); 183 " --rlimit-nofile=number - set the maximum number of files that can be\n"
186 printf("\topened by a process.\n"); 184 "\topened by a process.\n"
187 printf(" --rlimit-nproc=number - set the maximum number of processes that can be\n"); 185 " --rlimit-nproc=number - set the maximum number of processes that can be\n"
188 printf("\tcreated for the real user ID of the calling process.\n"); 186 "\tcreated for the real user ID of the calling process.\n"
189 printf(" --rlimit-sigpending=number - set the maximum number of pending signals\n"); 187 " --rlimit-sigpending=number - set the maximum number of pending signals\n"
190 printf("\tfor a process.\n"); 188 "\tfor a process.\n"
191 printf(" --rmenv=name - remove environment variable in the new sandbox.\n"); 189 " --rmenv=name - remove environment variable in the new sandbox.\n"
192#ifdef HAVE_NETWORK 190#ifdef HAVE_NETWORK
193 printf(" --scan - ARP-scan all the networks from inside a network namespace.\n"); 191 " --scan - ARP-scan all the networks from inside a network namespace.\n"
194#endif 192#endif
195#ifdef HAVE_SECCOMP 193#ifdef HAVE_SECCOMP
196 printf(" --seccomp - enable seccomp filter and apply the default blacklist.\n"); 194 " --seccomp - enable seccomp filter and apply the default blacklist.\n"
197 printf(" --seccomp=syscall,syscall,syscall - enable seccomp filter, blacklist the\n"); 195 " --seccomp=syscall,syscall,syscall - enable seccomp filter, blacklist the\n"
198 printf("\tdefault syscall list and the syscalls specified by the command.\n"); 196 "\tdefault syscall list and the syscalls specified by the command.\n"
199 printf(" --seccomp.block-secondary - build only the native architecture filters.\n"); 197 " --seccomp.block-secondary - build only the native architecture filters.\n"
200 printf(" --seccomp.drop=syscall,syscall,syscall - enable seccomp filter, and\n"); 198 " --seccomp.drop=syscall,syscall,syscall - enable seccomp filter, and\n"
201 printf("\tblacklist the syscalls specified by the command.\n"); 199 "\tblacklist the syscalls specified by the command.\n"
202 printf(" --seccomp.keep=syscall,syscall,syscall - enable seccomp filter, and\n"); 200 " --seccomp.keep=syscall,syscall,syscall - enable seccomp filter, and\n"
203 printf("\twhitelist the syscalls specified by the command.\n"); 201 "\twhitelist the syscalls specified by the command.\n"
204 printf(" --seccomp.print=name|pid - print the seccomp filter for the sandbox\n"); 202 " --seccomp.print=name|pid - print the seccomp filter for the sandbox\n"
205 printf("\tidentified by name or PID.\n"); 203 "\tidentified by name or PID.\n"
206#endif 204#endif
207 printf(" --shell=none - run the program directly without a user shell.\n"); 205 " --shell=none - run the program directly without a user shell.\n"
208 printf(" --shell=program - set default user shell.\n"); 206 " --shell=program - set default user shell.\n"
209 printf(" --shutdown=name|pid - shutdown the sandbox identified by name or PID.\n"); 207 " --shutdown=name|pid - shutdown the sandbox identified by name or PID.\n"
210 printf(" --timeout=hh:mm:ss - kill the sandbox automatically after the time\n"); 208 " --timeout=hh:mm:ss - kill the sandbox automatically after the time\n"
211 printf("\thas elapsed.\n"); 209 "\thas elapsed.\n"
212 printf(" --tmpfs=dirname - mount a tmpfs filesystem on directory dirname.\n"); 210 " --tmpfs=dirname - mount a tmpfs filesystem on directory dirname.\n"
213 printf(" --top - monitor the most CPU-intensive sandboxes.\n"); 211 " --top - monitor the most CPU-intensive sandboxes.\n"
214 printf(" --trace - trace open, access and connect system calls.\n"); 212 " --trace - trace open, access and connect system calls.\n"
215 printf(" --tracelog - add a syslog message for every access to files or\n"); 213 " --tracelog - add a syslog message for every access to files or\n"
216 printf("\tdirectoires blacklisted by the security profile.\n"); 214 "\tdirectoires blacklisted by the security profile.\n"
217 printf(" --tree - print a tree of all sandboxed processes.\n"); 215 " --tree - print a tree of all sandboxed processes.\n"
218 printf(" --version - print program version and exit.\n"); 216 " --version - print program version and exit.\n"
219#ifdef HAVE_NETWORK 217#ifdef HAVE_NETWORK
220 printf(" --veth-name=name - use this name for the interface connected to the bridge.\n"); 218 " --veth-name=name - use this name for the interface connected to the bridge.\n"
221#endif 219#endif
222#ifdef HAVE_WHITELIST 220#ifdef HAVE_WHITELIST
223 printf(" --whitelist=filename - whitelist directory or file.\n"); 221 " --whitelist=filename - whitelist directory or file.\n"
224#endif 222#endif
225 printf(" --writable-etc - /etc directory is mounted read-write.\n"); 223 " --writable-etc - /etc directory is mounted read-write.\n"
226 printf(" --writable-run-user - allow access to /run/user/$UID/systemd and\n"); 224 " --writable-run-user - allow access to /run/user/$UID/systemd and\n"
227 printf("\t/run/user/$UID/gnupg.\n"); 225 "\t/run/user/$UID/gnupg.\n"
228 printf(" --writable-var - /var directory is mounted read-write.\n"); 226 " --writable-var - /var directory is mounted read-write.\n"
229 printf(" --writable-var-log - use the real /var/log directory, not a clone.\n"); 227 " --writable-var-log - use the real /var/log directory, not a clone.\n"
230#ifdef HAVE_X11 228#ifdef HAVE_X11
231 printf(" --x11 - enable X11 sandboxing. The software checks first if Xpra is\n"); 229 " --x11 - enable X11 sandboxing. The software checks first if Xpra is\n"
232 printf("\tinstalled, then it checks if Xephyr is installed. If all fails, it will\n"); 230 "\tinstalled, then it checks if Xephyr is installed. If all fails, it will\n"
233 printf("\tattempt to use X11 security extension.\n"); 231 "\tattempt to use X11 security extension.\n"
234 printf(" --x11=none - disable access to X11 sockets.\n"); 232 " --x11=none - disable access to X11 sockets.\n"
235 printf(" --x11=xephyr - enable Xephyr X11 server. The window size is 800x600.\n"); 233 " --x11=xephyr - enable Xephyr X11 server. The window size is 800x600.\n"
236 printf(" --x11=xorg - enable X11 security extension.\n"); 234 " --x11=xorg - enable X11 security extension.\n"
237 printf(" --x11=xpra - enable Xpra X11 server.\n"); 235 " --x11=xpra - enable Xpra X11 server.\n"
238 printf(" --x11=xvfb - enable Xvfb X11 server.\n"); 236 " --x11=xvfb - enable Xvfb X11 server.\n"
239 printf(" --xephyr-screen=WIDTHxHEIGHT - set screen size for --x11=xephyr.\n"); 237 " --xephyr-screen=WIDTHxHEIGHT - set screen size for --x11=xephyr.\n"
240#endif 238#endif
241 printf(" --zsh - use /usr/bin/zsh as default shell.\n"); 239 " --zsh - use /usr/bin/zsh as default shell.\n"
242 printf("\n"); 240 "\n"
243 printf("Examples:\n"); 241 "Examples:\n"
244 printf(" $ firejail firefox\n"); 242 " $ firejail firefox\n"
245 printf("\tstart Mozilla Firefox\n"); 243 "\tstart Mozilla Firefox\n"
246 printf(" $ firejail --debug firefox\n"); 244 " $ firejail --debug firefox\n"
247 printf("\tdebug Firefox sandbox\n"); 245 "\tdebug Firefox sandbox\n"
248 printf(" $ firejail --private --dns=8.8.8.8 firefox\n"); 246 " $ firejail --private --dns=8.8.8.8 firefox\n"
249 printf("\tstart Firefox with a new, empty home directory, and a well-known DNS\n"); 247 "\tstart Firefox with a new, empty home directory, and a well-known DNS\n"
250 printf("\tserver setting.\n"); 248 "\tserver setting.\n"
251 printf(" $ firejail --net=eth0 firefox\n"); 249 " $ firejail --net=eth0 firefox\n"
252 printf("\tstart Firefox in a new network namespace\n"); 250 "\tstart Firefox in a new network namespace\n"
253 printf(" $ firejail --x11=xorg firefox\n"); 251 " $ firejail --x11=xorg firefox\n"
254 printf("\tstart Firefox and sandbox X11\n"); 252 "\tstart Firefox and sandbox X11\n"
255 printf(" $ firejail --list\n"); 253 " $ firejail --list\n"
256 printf("\tlist all running sandboxes\n"); 254 "\tlist all running sandboxes\n"
257 printf("\n"); 255 "\n"
258 printf("License GPL version 2 or later\n"); 256 "License GPL version 2 or later\n"
259 printf("Homepage: http://firejail.wordpress.com\n"); 257 "Homepage: http://firejail.wordpress.com\n"
260 printf("\n"); 258 "\n";
259
260
261void usage(void) {
262 printf("firejail - version %s\n\n", VERSION);
263 puts(usage_str);
261} 264}
diff --git a/src/firemon/usage.c b/src/firemon/usage.c
index 617f4dacd..37bd4e874 100644
--- a/src/firemon/usage.c
+++ b/src/firemon/usage.c
@@ -19,62 +19,65 @@
19*/ 19*/
20#include "firemon.h" 20#include "firemon.h"
21 21
22void usage(void) { 22static char *help_str =
23 printf("firemon - version %s\n", VERSION); 23 "Usage: firemon [OPTIONS] [PID]\n\n"
24 printf("Usage: firemon [OPTIONS] [PID]\n\n"); 24 "Monitor processes started in a Firejail sandbox. Without any PID specified,\n"
25 printf("Monitor processes started in a Firejail sandbox. Without any PID specified,\n"); 25 "all processes started by Firejail are monitored. Descendants of these processes\n"
26 printf("all processes started by Firejail are monitored. Descendants of these processes\n"); 26 "are also being monitored. On Grsecurity systems only root user\n"
27 printf("are also being monitored. On Grsecurity systems only root user\n"); 27 "can run this program.\n\n"
28 printf("can run this program.\n\n"); 28 "Options:\n"
29 printf("Options:\n"); 29 "\t--apparmor - print AppArmor confinement status for each sandbox.\n\n"
30 printf("\t--apparmor - print AppArmor confinement status for each sandbox.\n\n"); 30 "\t--arp - print ARP table for each sandbox.\n\n"
31 printf("\t--arp - print ARP table for each sandbox.\n\n"); 31 "\t--caps - print capabilities configuration for each sandbox.\n\n"
32 printf("\t--caps - print capabilities configuration for each sandbox.\n\n"); 32 "\t--cgroup - print control group information for each sandbox.\n\n"
33 printf("\t--cgroup - print control group information for each sandbox.\n\n"); 33 "\t--cpu - print CPU affinity for each sandbox.\n\n"
34 printf("\t--cpu - print CPU affinity for each sandbox.\n\n"); 34 "\t--help, -? - this help screen.\n\n"
35 printf("\t--help, -? - this help screen.\n\n"); 35 "\t--interface - print network interface information for each sandbox.\n\n"
36 printf("\t--interface - print network interface information for each sandbox.\n\n"); 36 "\t--list - list all sandboxes.\n\n"
37 printf("\t--list - list all sandboxes.\n\n"); 37 "\t--name=name - print information only about named sandbox.\n\n"
38 printf("\t--name=name - print information only about named sandbox.\n\n"); 38 "\t--netstats - monitor network statistics for sandboxes creating a new\n"
39 printf("\t--netstats - monitor network statistics for sandboxes creating a new\n"); 39 "\t\tnetwork namespace.\n\n"
40 printf("\t\tnetwork namespace.\n\n"); 40 "\t--nowrap - enable line wrapping in terminals.\n\n"
41 printf("\t--nowrap - enable line wrapping in terminals.\n\n"); 41 "\t--route - print route table for each sandbox.\n\n"
42 printf("\t--route - print route table for each sandbox.\n\n"); 42 "\t--seccomp - print seccomp configuration for each sandbox.\n\n"
43 printf("\t--seccomp - print seccomp configuration for each sandbox.\n\n"); 43 "\t--tree - print a tree of all sandboxed processes.\n\n"
44 printf("\t--tree - print a tree of all sandboxed processes.\n\n"); 44 "\t--top - monitor the most CPU-intensive sandboxes.\n\n"
45 printf("\t--top - monitor the most CPU-intensive sandboxes.\n\n"); 45 "\t--version - print program version and exit.\n\n"
46 printf("\t--version - print program version and exit.\n\n"); 46
47 "Without any options, firemon monitors all fork, exec, id change, and exit\n"
48 "events in the sandbox. Monitoring a specific PID is also supported.\n\n"
47 49
48 printf("Without any options, firemon monitors all fork, exec, id change, and exit events\n"); 50 "Option --list prints a list of all sandboxes. The format for each entry is as\n"
49 printf("in the sandbox. Monitoring a specific PID is also supported.\n\n"); 51 "follows:\n\n"
52 "\tPID:USER:Command\n\n"
50 53
51 printf("Option --list prints a list of all sandboxes. The format for each entry is as\n"); 54 "Option --tree prints the tree of processes running in the sandbox. The format\n"
52 printf("follows:\n\n"); 55 "for each process entry is as follows:\n\n"
53 printf("\tPID:USER:Command\n\n"); 56 "\tPID:USER:Command\n\n"
54 57
55 printf("Option --tree prints the tree of processes running in the sandbox. The format\n"); 58 "Option --top is similar to the UNIX top command, however it applies only to\n"
56 printf("for each process entry is as follows:\n\n"); 59 "sandboxes. Listed below are the available fields (columns) in alphabetical\n"
57 printf("\tPID:USER:Command\n\n"); 60 "order:\n\n"
61 "\tCommand - command used to start the sandbox.\n"
62 "\tCPU%% - CPU usage, the sandbox share of the elapsed CPU time since the\n"
63 "\t last screen update\n"
64 "\tPID - Unique process ID for the task controlling the sandbox.\n"
65 "\tPrcs - number of processes running in sandbox, including the\n"
66 "\t controlling process.\n"
67 "\tRES - Resident Memory Size (KiB), sandbox non-swapped physical memory.\n"
68 "\t It is a sum of the RES values for all processes running in the\n"
69 "\t sandbox.\n"
70 "\tSHR - Shared Memory Size (KiB), it reflects memory shared with other\n"
71 "\t processes. It is a sum of the SHR values for all processes\n"
72 "\t running in the sandbox, including the controlling process.\n"
73 "\tUptime - sandbox running time in hours:minutes:seconds format.\n"
74 "\tUser - The owner of the sandbox.\n"
75 "\n"
76 "License GPL version 2 or later\n"
77 "Homepage: http://firejail.wordpress.com\n"
78 "\n";
58 79
59 printf("Option --top is similar to the UNIX top command, however it applies only to\n"); 80void usage(void) {
60 printf("sandboxes. Listed below are the available fields (columns) in alphabetical\n"); 81 printf("firemon - version %s\n", VERSION);
61 printf("order:\n\n"); 82 puts(help_str);
62 printf("\tCommand - command used to start the sandbox.\n");
63 printf("\tCPU%% - CPU usage, the sandbox share of the elapsed CPU time since the\n");
64 printf("\t last screen update\n");
65 printf("\tPID - Unique process ID for the task controlling the sandbox.\n");
66 printf("\tPrcs - number of processes running in sandbox, including the controlling\n");
67 printf("\t process.\n");
68 printf("\tRES - Resident Memory Size (KiB), sandbox non-swapped physical memory.\n");
69 printf("\t It is a sum of the RES values for all processes running in the\n");
70 printf("\t sandbox.\n");
71 printf("\tSHR - Shared Memory Size (KiB), it reflects memory shared with other\n");
72 printf("\t processes. It is a sum of the SHR values for all processes running\n");
73 printf("\t in the sandbox, including the controlling process.\n");
74 printf("\tUptime - sandbox running time in hours:minutes:seconds format.\n");
75 printf("\tUser - The owner of the sandbox.\n");
76 printf("\n");
77 printf("License GPL version 2 or later\n");
78 printf("Homepage: http://firejail.wordpress.com\n");
79 printf("\n");
80} 83}
diff --git a/src/fnetfilter/main.c b/src/fnetfilter/main.c
index 828b30d40..ba58ba3c9 100644
--- a/src/fnetfilter/main.c
+++ b/src/fnetfilter/main.c
@@ -50,19 +50,20 @@ static void usage(void) {
50 printf("\tfnetfilter netfilter-command destination-file\n"); 50 printf("\tfnetfilter netfilter-command destination-file\n");
51} 51}
52 52
53static void err_exit_cannot_open_file(const char *fname) {
54 fprintf(stderr, "Error fnetfilter: cannot open %s\n", fname);
55 exit(1);
56}
57
53 58
54static void copy(const char *src, const char *dest) { 59static void copy(const char *src, const char *dest) {
55 FILE *fp1 = fopen(src, "r"); 60 FILE *fp1 = fopen(src, "r");
56 if (!fp1) { 61 if (!fp1)
57 fprintf(stderr, "Error fnetfilter: cannot open %s\n", src); 62 err_exit_cannot_open_file(src);
58 exit(1);
59 }
60 63
61 FILE *fp2 = fopen(dest, "w"); 64 FILE *fp2 = fopen(dest, "w");
62 if (!fp2) { 65 if (!fp2)
63 fprintf(stderr, "Error fnetfilter: cannot open %s\n", dest); 66 err_exit_cannot_open_file(dest);
64 exit(1);
65 }
66 67
67 char buf[MAXBUF]; 68 char buf[MAXBUF];
68 while (fgets(buf, MAXBUF, fp1)) 69 while (fgets(buf, MAXBUF, fp1))
@@ -106,16 +107,12 @@ for (i = 0; i < argcnt; i++)
106 107
107 // open the files 108 // open the files
108 FILE *fp1 = fopen(src, "r"); 109 FILE *fp1 = fopen(src, "r");
109 if (!fp1) { 110 if (!fp1)
110 fprintf(stderr, "Error fnetfilter: cannot open %s\n", src); 111 err_exit_cannot_open_file(src);
111 exit(1);
112 }
113 112
114 FILE *fp2 = fopen(dest, "w"); 113 FILE *fp2 = fopen(dest, "w");
115 if (!fp2) { 114 if (!fp2)
116 fprintf(stderr, "Error fnetfilter: cannot open %s\n", dest); 115 err_exit_cannot_open_file(dest);
117 exit(1);
118 }
119 116
120 int line = 0; 117 int line = 0;
121 char buf[MAXBUF]; 118 char buf[MAXBUF];
@@ -186,19 +183,15 @@ printf("\n");
186//printf("destfile %s\n", destfile); 183//printf("destfile %s\n", destfile);
187 // destfile is a real filename 184 // destfile is a real filename
188 int len = strlen(destfile); 185 int len = strlen(destfile);
189 if (strcspn(destfile, "\\&!?\"'<>%^(){};,*[]") != (size_t)len) { 186 if (strcspn(destfile, "\\&!?\"'<>%^(){};,*[]") != (size_t)len)
190 fprintf(stderr, "Error fnetfilter: invalid destination file in netfilter command\n"); 187 err_exit_cannot_open_file(destfile);
191 exit(1);
192 }
193 188
194 // handle default config (command = NULL, destfile) 189 // handle default config (command = NULL, destfile)
195 if (command == NULL) { 190 if (command == NULL) {
196 // create a default filter file 191 // create a default filter file
197 FILE *fp = fopen(destfile, "w"); 192 FILE *fp = fopen(destfile, "w");
198 if (!fp) { 193 if (!fp)
199 fprintf(stderr, "Error fnetfilter: cannot open %s\n", destfile); 194 err_exit_cannot_open_file(destfile);
200 exit(1);
201 }
202 fprintf(fp, "%s\n", default_filter); 195 fprintf(fp, "%s\n", default_filter);
203 fclose(fp); 196 fclose(fp);
204 } 197 }
diff --git a/test/environment/csh.exp b/test/environment/csh.exp
index 7b9fe7dc4..10a278ebc 100755
--- a/test/environment/csh.exp
+++ b/test/environment/csh.exp
@@ -30,6 +30,20 @@ expect {
30 "/bin/csh" 30 "/bin/csh"
31} 31}
32send -- "exit\r" 32send -- "exit\r"
33sleep 1
34
35send -- "firejail --shell=none --csh\r"
36expect {
37 timeout {puts "TESTING ERROR 3\n";exit}
38 "shell=none was already specified"
39}
40after 100
41
42send -- "firejail --csh --shell=none\r"
43expect {
44 timeout {puts "TESTING ERROR 4\n";exit}
45 "a shell was already specified"
46}
33after 100 47after 100
34 48
35puts "\n" 49puts "\n"
diff --git a/test/environment/zsh.exp b/test/environment/zsh.exp
index 65fe440c7..e7f610e98 100755
--- a/test/environment/zsh.exp
+++ b/test/environment/zsh.exp
@@ -30,6 +30,20 @@ expect {
30 "/bin/zsh" 30 "/bin/zsh"
31} 31}
32send -- "exit\r" 32send -- "exit\r"
33sleep 1
34
35send -- "firejail --shell=none --zsh\r"
36expect {
37 timeout {puts "TESTING ERROR 3\n";exit}
38 "shell=none was already specified"
39}
40after 100
41
42send -- "firejail --zsh --shell=none\r"
43expect {
44 timeout {puts "TESTING ERROR 4\n";exit}
45 "a shell was already specified"
46}
33after 100 47after 100
34 48
35puts "\nall done\n" 49puts "\nall done\n"
diff --git a/test/login_ssh.exp b/test/login_ssh.exp
deleted file mode 100755
index db0721d25..000000000
--- a/test/login_ssh.exp
+++ /dev/null
@@ -1,59 +0,0 @@
1#!/usr/bin/expect -f
2
3set timeout 10
4spawn $env(SHELL)
5match_max 100000
6
7send -- "ssh bingo@0\r"
8expect {
9 timeout {puts "TESTING ERROR 0\n";exit}
10 "password:" {
11 puts "\nTESTING: please enter SSH password"
12 set oldmode [stty -echo -raw]
13 expect_user -re "(.*)\n"
14 send_user "\n"
15 eval stty $oldmode
16# stty echo
17 set pass $expect_out(1,string)
18 send -- "$pass\r"
19 puts "TESTING: password sent to the server"
20 }
21 "Child process initialized"
22}
23sleep 1
24
25# test default gw
26send -- "bash\r"
27sleep 1
28send -- "ps aux; pwd\r"
29expect {
30 timeout {puts "TESTING ERROR 1\n";exit}
31 "/bin/bash"
32}
33expect {
34 timeout {puts "TESTING ERROR 2\n";exit}
35 "bash"
36}
37expect {
38 timeout {puts "TESTING ERROR 3\n";exit}
39 "ps aux"
40}
41expect {
42 timeout {puts "TESTING ERROR 4\n";exit}
43 "home"
44}
45sleep 1
46
47
48send -- "ps aux |wc -l; pwd\r"
49expect {
50 timeout {puts "TESTING ERROR 5\n";exit}
51 "6"
52}
53expect {
54 timeout {puts "TESTING ERROR 6\n";exit}
55 "home"
56}
57sleep 1
58
59puts "\nall done\n"
diff --git a/test/network/netfilter-template.exp b/test/network/netfilter-template.exp
index 1ad28a103..5a15152d3 100755
--- a/test/network/netfilter-template.exp
+++ b/test/network/netfilter-template.exp
@@ -7,6 +7,14 @@ set timeout 10
7spawn $env(SHELL) 7spawn $env(SHELL)
8match_max 100000 8match_max 100000
9 9
10
11send -- "firejail --net=br1 --ip=10.10.30.10 --name=test1 --netfilter=/etc/firejail/blablabla\r"
12expect {
13 timeout {puts "TESTING ERROR 0\n";exit}
14 "invalid network filter file"
15}
16sleep 1
17
10send -- "firejail --net=br1 --ip=10.10.30.10 --name=test1 --netfilter=/etc/firejail/tcpserver.net,5555 ./tcpserver 5555\r" 18send -- "firejail --net=br1 --ip=10.10.30.10 --name=test1 --netfilter=/etc/firejail/tcpserver.net,5555 ./tcpserver 5555\r"
11expect { 19expect {
12 timeout {puts "TESTING ERROR 1\n";exit} 20 timeout {puts "TESTING ERROR 1\n";exit}
@@ -15,6 +23,21 @@ expect {
15sleep 1 23sleep 1
16 24
17spawn $env(SHELL) 25spawn $env(SHELL)
26send -- "firejail --netfilter.print=test1\r"
27expect {
28 timeout {puts "TESTING ERROR 1.1\n";exit}
29 "Chain INPUT"
30}
31expect {
32 timeout {puts "TESTING ERROR 1.2\n";exit}
33 "Chain FORWARD"
34}
35expect {
36 timeout {puts "TESTING ERROR 1.3\n";exit}
37 "Chain OUTPUT"
38}
39sleep 1
40
18send -- "telnet 10.10.30.10 5555\r" 41send -- "telnet 10.10.30.10 5555\r"
19expect { 42expect {
20 timeout {puts "TESTING ERROR 2\n";exit} 43 timeout {puts "TESTING ERROR 2\n";exit}
diff --git a/test/root/firecfg.exp b/test/root/firecfg.exp
index 656b8e215..b73167bd1 100755
--- a/test/root/firecfg.exp
+++ b/test/root/firecfg.exp
@@ -7,10 +7,10 @@ set timeout 10
7spawn $env(SHELL) 7spawn $env(SHELL)
8match_max 100000 8match_max 100000
9 9
10send -- "firecfg\r" 10send -- "firecfg --debug\r"
11sleep 1 11sleep 1
12 12
13send -- "firecfg --clean\r" 13send -- "firecfg --debug --clean\r"
14expect { 14expect {
15 timeout {puts "TESTING ERROR 0\n";exit} 15 timeout {puts "TESTING ERROR 0\n";exit}
16 "less removed" 16 "less removed"
@@ -27,7 +27,7 @@ expect {
27} 27}
28sleep 1 28sleep 1
29 29
30send -- "firecfg\r" 30send -- "firecfg --debug\r"
31expect { 31expect {
32 timeout {puts "TESTING ERROR 3\n";exit} 32 timeout {puts "TESTING ERROR 3\n";exit}
33 "less created" 33 "less created"
diff --git a/test/root/login_nobody.exp b/test/root/login_nobody.exp
new file mode 100755
index 000000000..8e9ec4367
--- /dev/null
+++ b/test/root/login_nobody.exp
@@ -0,0 +1,35 @@
1#!/usr/bin/expect -f
2# This file is part of Firejail project
3# Copyright (C) 2014-2018 Firejail Authors
4# License GPL v2
5
6set timeout 10
7cd /home
8spawn $env(SHELL)
9match_max 100000
10
11send -- "su - nobody -s /usr/bin/firejail\r"
12expect {
13 timeout {puts "TESTING ERROR 0\n";exit}
14 "Child process initialized"
15}
16after 100
17
18send -- "cat /proc/self/status | grep Seccomp\r"
19expect {
20 timeout {puts "TESTING ERROR 3\n";exit}
21 "2"
22}
23after 100
24
25send -- "cat /proc/self/status | grep CapBnd\r"
26expect {
27 timeout {puts "TESTING ERROR 4\n";exit}
28 "0000000000000000"
29}
30after 100
31
32send -- "exit\r"
33sleep 1
34
35puts "\nall done\n"
diff --git a/test/root/root.sh b/test/root/root.sh
index 22b12cf86..4132bc739 100755
--- a/test/root/root.sh
+++ b/test/root/root.sh
@@ -3,6 +3,21 @@
3# set a new firejail config file 3# set a new firejail config file
4#cp firejail.config /etc/firejail/firejail.config 4#cp firejail.config /etc/firejail/firejail.config
5 5
6
7#********************************
8# firecfg
9#********************************
10which less
11if [ "$?" -eq 0 ];
12then
13 echo "TESTING: firecfg (test/root/firecfg.exp)"
14 mv /home/netblue/.local/share/applications /home/netblue/.local/share/applications-store
15 ./firecfg.exp
16 mv /home/netblue/.local/share/applications-store /home/netblue/.local/share/applications
17else
18 echo "TESTING SKIP: firecfg, less not found"
19fi
20
6#******************************** 21#********************************
7# servers 22# servers
8#******************************** 23#********************************
@@ -65,6 +80,9 @@ echo "TESTING: join (test/root/join.exp)"
65echo "TESTING: git-install (test/root/git.exp)" 80echo "TESTING: git-install (test/root/git.exp)"
66./git.exp 81./git.exp
67 82
83echo "TESTING: login-nobody (test/root/login_nobody.exp)"
84./login_nobody.exp
85
68#******************************** 86#********************************
69# seccomp 87# seccomp
70#******************************** 88#********************************
@@ -107,17 +125,6 @@ rm -f tmpfile
107echo "TESTING: firemon events (test/root/firemon-events.exp)" 125echo "TESTING: firemon events (test/root/firemon-events.exp)"
108./firemon-events.exp 126./firemon-events.exp
109 127
110#********************************
111# firecfg
112#********************************
113which less
114if [ "$?" -eq 0 ];
115then
116 echo "TESTING: firecfg (test/root/firecfg.exp)"
117 ./firecfg.exp
118else
119 echo "TESTING SKIP: firecfg, less not found"
120fi
121 128
122# restore the default config file 129# restore the default config file
123#cp ../../etc/firejail.config /etc/firejail/firejail.config 130#cp ../../etc/firejail.config /etc/firejail/firejail.config
diff --git a/test/ssh/login.exp b/test/ssh/login.exp
new file mode 100755
index 000000000..479292c91
--- /dev/null
+++ b/test/ssh/login.exp
@@ -0,0 +1,49 @@
1#!/usr/bin/expect -f
2
3set timeout 10
4spawn $env(SHELL)
5match_max 100000
6
7send -- "ssh firejail-test@0\r"
8expect {
9 timeout {puts "TESTING ERROR 0\n";exit}
10 "Child process initialized" {puts "OK\n"}
11 "an existing sandbox was detected" {puts "OK\n"}
12}
13sleep 1
14
15send -- "ps aux | wc -l\r"
16expect {
17 timeout {puts "TESTING ERROR 1\n";exit}
18 "5"
19}
20after 100
21
22send -- "ls -l /home | grep drw | wc -l\r"
23expect {
24 timeout {puts "TESTING ERROR 2\n";exit}
25 "1"
26}
27after 100
28
29send -- "cat /proc/self/status | grep Seccomp\r"
30expect {
31 timeout {puts "TESTING ERROR 3\n";exit}
32 "2"
33}
34after 100
35
36send -- "cat /proc/self/status | grep CapBnd\r"
37expect {
38 timeout {puts "TESTING ERROR 4\n";exit}
39 "0000000000000000"
40}
41after 100
42
43# preparing scp/sftp tests
44send -- "rm testfile\r"
45
46send -- "exit\r"
47sleep 1
48
49puts "\nall done\n"
diff --git a/test/ssh/scp.exp b/test/ssh/scp.exp
new file mode 100755
index 000000000..355125751
--- /dev/null
+++ b/test/ssh/scp.exp
@@ -0,0 +1,63 @@
1#!/usr/bin/expect -f
2
3set timeout 10
4spawn $env(SHELL)
5match_max 100000
6
7send -- "ssh firejail-test@0\r"
8expect {
9 timeout {puts "TESTING ERROR 0\n";exit}
10 "Child process initialized" {puts "OK\n"}
11 "an existing sandbox was detected" {puts "OK\n"}
12}
13sleep 1
14
15send -- "rm -f testfile\r"
16after 100
17send -- "exit\r"
18sleep 1
19
20send -- "echo 12345 > testfile\r"
21after 100
22send -- "scp testfile firejail-test@0:~/testfile\r"
23expect {
24 timeout {puts "TESTING ERROR 1\n";exit}
25 "100%"
26}
27sleep 1
28
29
30send -- "ssh firejail-test@0\r"
31expect {
32 timeout {puts "TESTING ERROR 2\n";exit}
33 "Child process initialized" {puts "OK\n"}
34 "an existing sandbox was detected" {puts "OK\n"}
35}
36sleep 1
37send -- "cat testfile\r"
38expect {
39 timeout {puts "TESTING ERROR 3\n";exit}
40 "12345"
41}
42after 100
43send -- "exit\r"
44sleep 1
45
46send -- "rm testfile\r"
47after 100
48send -- "scp firejail-test@0:~/testfile testfile\r"
49expect {
50 timeout {puts "TESTING ERROR 4\n";exit}
51 "100%"
52}
53sleep 1
54send -- "cat testfile\r"
55expect {
56 timeout {puts "TESTING ERROR 5\n";exit}
57 "12345"
58}
59after 100
60send -- "rm testfile\r"
61sleep 1
62
63puts "\nall done\n"
diff --git a/test/ssh/sftp.exp b/test/ssh/sftp.exp
new file mode 100755
index 000000000..3b0124ec7
--- /dev/null
+++ b/test/ssh/sftp.exp
@@ -0,0 +1,87 @@
1#!/usr/bin/expect -f
2
3set timeout 10
4spawn $env(SHELL)
5match_max 100000
6
7send -- "ssh firejail-test@0\r"
8expect {
9 timeout {puts "TESTING ERROR 0\n";exit}
10 "Child process initialized" {puts "OK\n"}
11 "an existing sandbox was detected" {puts "OK\n"}
12}
13sleep 1
14
15send -- "rm -f testfile\r"
16after 100
17send -- "exit\r"
18sleep 1
19
20send -- "echo 12345 > testfile\r"
21after 100
22send -- "sftp firejail-test@0\r"
23expect {
24 timeout {puts "TESTING ERROR 1\n";exit}
25 "Connected to 0"
26}
27expect {
28 timeout {puts "TESTING ERROR 2\n";exit}
29 "sftp>"
30}
31after 100
32send -- "put testfile\r"
33expect {
34 timeout {puts "TESTING ERROR 3\n";exit}
35 "100%"
36}
37after 100
38send -- "exit\r"
39sleep 1
40
41
42send -- "ssh firejail-test@0\r"
43expect {
44 timeout {puts "TESTING ERROR 4\n";exit}
45 "Child process initialized" {puts "OK\n"}
46 "an existing sandbox was detected" {puts "OK\n"}
47}
48sleep 1
49send -- "cat testfile\r"
50expect {
51 timeout {puts "TESTING ERROR 5\n";exit}
52 "12345"
53}
54after 100
55send -- "exit\r"
56sleep 1
57
58send -- "rm testfile\r"
59after 100
60send -- "sftp firejail-test@0\r"
61expect {
62 timeout {puts "TESTING ERROR 6\n";exit}
63 "Connected to 0"
64}
65expect {
66 timeout {puts "TESTING ERROR 7\n";exit}
67 "sftp>"
68}
69after 100
70send -- "get testfile\r"
71expect {
72 timeout {puts "TESTING ERROR 8\n";exit}
73 "100%"
74}
75after 100
76send -- "exit\r"
77sleep 1
78send -- "cat testfile\r"
79expect {
80 timeout {puts "TESTING ERROR 9\n";exit}
81 "12345"
82}
83after 100
84send -- "rm testfile\r"
85sleep 1
86
87puts "\nall done\n"
diff --git a/test/ssh/ssh.sh b/test/ssh/ssh.sh
new file mode 100755
index 000000000..20a70b1b6
--- /dev/null
+++ b/test/ssh/ssh.sh
@@ -0,0 +1,16 @@
1#!/bin/bash
2# This file is part of Firejail project
3# Copyright (C) 2014-2018 Firejail Authors
4# License GPL v2
5
6export MALLOC_CHECK_=3
7export MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
8
9echo "TESTING: ssh login (test/ssh/login.exp)"
10./login.exp
11
12echo "TESTING: sftp (test/ssh/sftp.exp)"
13./sftp.exp
14
15echo "TESTING: scp (test/ssh/scp.exp)"
16./scp.exp
diff --git a/test/utils/audit.exp b/test/utils/audit.exp
index 684886af7..6352dc62d 100755
--- a/test/utils/audit.exp
+++ b/test/utils/audit.exp
@@ -96,4 +96,64 @@ expect {
96} 96}
97after 100 97after 100
98 98
99# test seccomp
100send -- "firejail --seccomp.drop=mkdir --audit\r"
101expect {
102 timeout {puts "TESTING ERROR 17\n";exit}
103 "Firejail Audit"
104}
105expect {
106 timeout {puts "TESTING ERROR 18\n";exit}
107 "GOOD: seccomp BPF enabled"
108}
109expect {
110 timeout {puts "TESTING ERROR 19\n";exit}
111 "UGLY: mount syscall permitted"
112}
113expect {
114 timeout {puts "TESTING ERROR 20\n";exit}
115 "UGLY: umount2 syscall permitted"
116}
117expect {
118 timeout {puts "TESTING ERROR 21\n";exit}
119 "UGLY: ptrace syscall permitted"
120}
121expect {
122 timeout {puts "TESTING ERROR 22\n";exit}
123 "UGLY: swapon syscall permitted"
124}
125expect {
126 timeout {puts "TESTING ERROR 23\n";exit}
127 "UGLY: swapoff syscall permitted"
128}
129expect {
130 timeout {puts "TESTING ERROR 24\n";exit}
131 "UGLY: init_module syscall permitted"
132}
133expect {
134 timeout {puts "TESTING ERROR 25\n";exit}
135 "UGLY: delete_module syscall permitted"
136}
137expect {
138 timeout {puts "TESTING ERROR 26\n";exit}
139 "UGLY: chroot syscall permitted"
140}
141expect {
142 timeout {puts "TESTING ERROR 27\n";exit}
143 "UGLY: pivot_root syscall permitted"
144}
145expect {
146 timeout {puts "TESTING ERROR 28\n";exit}
147 "UGLY: iopl syscall permitted"
148}
149expect {
150 timeout {puts "TESTING ERROR 29\n";exit}
151 "UGLY: ioperm syscall permitted"
152}
153expect {
154 timeout {puts "TESTING ERROR 30\n";exit}
155 "GOOD: all capabilities are disabled"
156}
157after 100
158
99puts "\nall done\n" 159puts "\nall done\n"
diff --git a/test/utils/build.exp b/test/utils/build.exp
index de2a9b6ae..5e883e4ba 100755
--- a/test/utils/build.exp
+++ b/test/utils/build.exp
@@ -54,5 +54,38 @@ expect {
54} 54}
55after 100 55after 100
56 56
57send -- "firejail --build cat /etc/passwd\r"
58expect {
59 timeout {puts "TESTING ERROR 10\n";exit}
60 "private-etc passwd,"
61}
62after 100
63
64send -- "firejail --build cat /var/tmp/firejail-test-file-7699\r"
65expect {
66 timeout {puts "TESTING ERROR 11\n";exit}
67 "whitelist /var/tmp/firejail-test-file-7699"
68}
69after 100
70
71send -- "firejail --build man firejail\r"
72expect {
73 timeout {puts "TESTING ERROR 12\n";exit}
74 "whitelist /usr/share/man"
75}
76after 100
77
78send -- "firejail --build wget blablabla\r"
79expect {
80 timeout {puts "TESTING ERROR 13\n";exit}
81 "protocol inet"
82}
83after 100
84
85
86send -- "firejail --build cat /tmp/firejail-test-file-7699\r"
87#todo - bug: it comes back with private-tmp
88sleep 1
89
57 90
58puts "all done\n" 91puts "all done\n"
diff --git a/test/utils/command.exp b/test/utils/command.exp
new file mode 100755
index 000000000..3b18540db
--- /dev/null
+++ b/test/utils/command.exp
@@ -0,0 +1,23 @@
1#!/usr/bin/expect -f
2# This file is part of Firejail project
3# Copyright (C) 2014-2018 Firejail Authors
4# License GPL v2
5
6set timeout 10
7spawn $env(SHELL)
8match_max 100000
9
10send -- "firejail --quiet --private-etc=passwd,group -c ls -al /etc\r"
11expect {
12 timeout {puts "TESTING ERROR 1\n";exit}
13 "cron" {puts "TESTING ERROR 2\n";exit}
14 "group"
15}
16expect {
17 timeout {puts "TESTING ERROR 3\n";exit}
18 "passwd"
19}
20
21
22after 100
23puts "\nall done\n"
diff --git a/test/utils/name.exp b/test/utils/name.exp
new file mode 100755
index 000000000..f00b5866e
--- /dev/null
+++ b/test/utils/name.exp
@@ -0,0 +1,174 @@
1#!/usr/bin/expect -f
2# This file is part of Firejail project
3# Copyright (C) 2014-2018 Firejail Authors
4# License GPL v2
5
6set timeout 10
7spawn $env(SHELL)
8match_max 100000
9
10
11send -- "firejail --name=ftest\r"
12expect {
13 timeout {puts "TESTING ERROR 0\n";exit}
14 "Child process initialized"
15}
16after 100
17
18spawn $env(SHELL)
19send -- "firejail --name=ftest\r"
20expect {
21 timeout {puts "TESTING ERROR 1\n";exit}
22 "Child process initialized"
23}
24after 100
25
26spawn $env(SHELL)
27send -- "firejail --name=ftest\r"
28expect {
29 timeout {puts "TESTING ERROR 2\n";exit}
30 "Child process initialized"
31}
32after 100
33
34spawn $env(SHELL)
35send -- "firejail --name=ftest\r"
36expect {
37 timeout {puts "TESTING ERROR 3\n";exit}
38 "Child process initialized"
39}
40after 100
41
42spawn $env(SHELL)
43send -- "firejail --name=ftest\r"
44expect {
45 timeout {puts "TESTING ERROR 4\n";exit}
46 "Child process initialized"
47}
48after 100
49
50spawn $env(SHELL)
51send -- "firejail --name=ftest\r"
52expect {
53 timeout {puts "TESTING ERROR 5\n";exit}
54 "Child process initialized"
55}
56after 100
57
58spawn $env(SHELL)
59send -- "firejail --name=ftest\r"
60expect {
61 timeout {puts "TESTING ERROR 6\n";exit}
62 "Child process initialized"
63}
64after 100
65
66spawn $env(SHELL)
67send -- "firejail --name=ftest\r"
68expect {
69 timeout {puts "TESTING ERROR 7\n";exit}
70 "Child process initialized"
71}
72after 100
73
74spawn $env(SHELL)
75send -- "firejail --name=ftest\r"
76expect {
77 timeout {puts "TESTING ERROR 8\n";exit}
78 "Child process initialized"
79}
80after 100
81
82spawn $env(SHELL)
83send -- "firejail --name=ftest\r"
84expect {
85 timeout {puts "TESTING ERROR 9\n";exit}
86 "Child process initialized"
87}
88after 100
89
90spawn $env(SHELL)
91send -- "firejail --name=ftest\r"
92expect {
93 timeout {puts "TESTING ERROR 10\n";exit}
94 "Child process initialized"
95}
96after 100
97
98spawn $env(SHELL)
99send -- "firejail --name=ftest\r"
100expect {
101 timeout {puts "TESTING ERROR 11\n";exit}
102 "Child process initialized"
103}
104after 100
105
106spawn $env(SHELL)
107send -- "firejail --list\r"
108expect {
109 timeout {puts "TESTING ERROR 12\n";exit}
110 ":ftest:"
111}
112expect {
113 timeout {puts "TESTING ERROR 13\n";exit}
114 ":ftest-1:"
115}
116expect {
117 timeout {puts "TESTING ERROR 14\n";exit}
118 ":ftest-2:"
119}
120expect {
121 timeout {puts "TESTING ERROR 15\n";exit}
122 ":ftest-3:"
123}
124expect {
125 timeout {puts "TESTING ERROR 16\n";exit}
126 ":ftest-4:"
127}
128expect {
129 timeout {puts "TESTING ERROR 17\n";exit}
130 ":ftest-5:"
131}
132expect {
133 timeout {puts "TESTING ERROR 18\n";exit}
134 ":ftest-6:"
135}
136expect {
137 timeout {puts "TESTING ERROR 19\n";exit}
138 ":ftest-7:"
139}
140expect {
141 timeout {puts "TESTING ERROR 20\n";exit}
142 ":ftest-8:"
143}
144expect {
145 timeout {puts "TESTING ERROR 21\n";exit}
146 ":ftest-9:"
147}
148expect {
149 timeout {puts "TESTING ERROR 22\n";exit}
150 ":ftest-"
151}
152expect {
153 timeout {puts "TESTING ERROR 23\n";exit}
154 ":ftest-"
155}
156after 100
157
158send -- "firejail --shutdown=ftest-5\r"
159expect {
160 timeout {puts "TESTING ERROR 11\n";exit}
161 "Sending SIGTERM"
162}
163sleep 1
164
165spawn $env(SHELL)
166send -- "firejail --list\r"
167expect {
168 timeout {puts "TESTING ERROR 12\n";exit}
169 ":ftest-5:" {puts "TESTING ERROR 15\n";exit}
170 ":ftest-9:"
171}
172
173after 100
174puts "all done\n"
diff --git a/test/utils/profile_print.exp b/test/utils/profile_print.exp
new file mode 100755
index 000000000..20d88a264
--- /dev/null
+++ b/test/utils/profile_print.exp
@@ -0,0 +1,27 @@
1#!/usr/bin/expect -f
2# This file is part of Firejail project
3# Copyright (C) 2014-2018 Firejail Authors
4# License GPL v2
5
6set timeout 10
7spawn $env(SHELL)
8match_max 100000
9
10
11send -- "firejail --name=ftest\r"
12expect {
13 timeout {puts "TESTING ERROR 0\n";exit}
14 "Child process initialized"
15}
16after 100
17
18spawn $env(SHELL)
19send -- "firejail --profile.print=ftest\r"
20expect {
21 timeout {puts "TESTING ERROR 1\n";exit}
22 "/etc/firejail/default.profile"
23}
24
25
26after 100
27puts "all done\n"
diff --git a/test/utils/utils.sh b/test/utils/utils.sh
index d72cc2269..5438e11a8 100755
--- a/test/utils/utils.sh
+++ b/test/utils/utils.sh
@@ -13,13 +13,26 @@ fi
13export PATH="$PATH:/usr/lib/firejail" 13export PATH="$PATH:/usr/lib/firejail"
14 14
15echo "testing" > ~/firejail-test-file-7699 15echo "testing" > ~/firejail-test-file-7699
16echo "testing" > /tmp/firejail-test-file-7699
17echo "testing" > /var/tmp/firejail-test-file-7699
16echo "TESTING: build (test/utils/build.exp)" 18echo "TESTING: build (test/utils/build.exp)"
17./build.exp 19./build.exp
18rm -f ~/firejail-test-file-7699 20rm -f ~/firejail-test-file-7699
21rm -f /tmp/firejail-test-file-7699
22rm -f /var/tmp/firejail-test-file-7699
19 23
20echo "TESTING: audit (test/utils/audit.exp)" 24echo "TESTING: audit (test/utils/audit.exp)"
21./audit.exp 25./audit.exp
22 26
27echo "TESTING: name (test/utils/name.exp)"
28./name.exp
29
30echo "TESTING: command (test/utils/command.exp)"
31./command.exp
32
33echo "TESTING: profile.print (test/utils/profile_print.exp)"
34./profile_print.exp
35
23echo "TESTING: version (test/utils/version.exp)" 36echo "TESTING: version (test/utils/version.exp)"
24./version.exp 37./version.exp
25 38