aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--src/firejail/main.c7
-rw-r--r--src/firejail/rlimit.c2
-rw-r--r--src/firejail/usage.c2
-rw-r--r--src/man/firejail-profile.txt3
-rw-r--r--src/man/firejail.txt51
-rwxr-xr-xtest/environment/rlimit-profile.exp4
-rwxr-xr-xtest/environment/rlimit.exp8
-rw-r--r--test/environment/rlimit.profile1
9 files changed, 71 insertions, 9 deletions
diff --git a/README b/README
index 15c7ae69e..7c4309b8f 100644
--- a/README
+++ b/README
@@ -123,6 +123,8 @@ chiraag-nataraj (https://github.com/chiraag-nataraj)
123Christian Stadelmann (https://github.com/genodeftest) 123Christian Stadelmann (https://github.com/genodeftest)
124 - profile fixes 124 - profile fixes
125 - evolution profile fix 125 - evolution profile fix
126Clayton Williams (https://github.com/gosre)
127 - addition of RLIMIT_AS
126curiosity-seeker (https://github.com/curiosity-seeker) 128curiosity-seeker (https://github.com/curiosity-seeker)
127 - tightening unbound and dnscrypt-proxy profiles 129 - tightening unbound and dnscrypt-proxy profiles
128 - correct and tighten QuiteRss profile 130 - correct and tighten QuiteRss profile
diff --git a/src/firejail/main.c b/src/firejail/main.c
index 458bba6f6..584d0c293 100644
--- a/src/firejail/main.c
+++ b/src/firejail/main.c
@@ -71,7 +71,7 @@ int arg_rlimit_nofile = 0; // rlimit nofile
71int arg_rlimit_nproc = 0; // rlimit nproc 71int arg_rlimit_nproc = 0; // rlimit nproc
72int arg_rlimit_fsize = 0; // rlimit fsize 72int arg_rlimit_fsize = 0; // rlimit fsize
73int arg_rlimit_sigpending = 0; // rlimit fsize 73int arg_rlimit_sigpending = 0; // rlimit fsize
74int arg_rlimit_as = 0; // rlimit as 74int arg_rlimit_as = 0; // rlimit as
75int arg_nogroups = 0; // disable supplementary groups 75int arg_nogroups = 0; // disable supplementary groups
76int arg_nonewprivs = 0; // set the NO_NEW_PRIVS prctl 76int arg_nonewprivs = 0; // set the NO_NEW_PRIVS prctl
77int arg_noroot = 0; // create a new user namespace and disable root user 77int arg_noroot = 0; // create a new user namespace and disable root user
@@ -1271,6 +1271,11 @@ int main(int argc, char **argv) {
1271 sscanf(argv[i] + 20, "%llu", &cfg.rlimit_sigpending); 1271 sscanf(argv[i] + 20, "%llu", &cfg.rlimit_sigpending);
1272 arg_rlimit_sigpending = 1; 1272 arg_rlimit_sigpending = 1;
1273 } 1273 }
1274 else if (strncmp(argv[i], "--rlimit-as=", 12) == 0) {
1275 check_unsigned(argv[i] + 12, "Error: invalid rlimit");
1276 sscanf(argv[i] + 12, "%llu", &cfg.rlimit_as);
1277 arg_rlimit_as = 1;
1278 }
1274 else if (strncmp(argv[i], "--ipc-namespace", 15) == 0) 1279 else if (strncmp(argv[i], "--ipc-namespace", 15) == 0)
1275 arg_ipc = 1; 1280 arg_ipc = 1;
1276 else if (strncmp(argv[i], "--cpu=", 6) == 0) 1281 else if (strncmp(argv[i], "--cpu=", 6) == 0)
diff --git a/src/firejail/rlimit.c b/src/firejail/rlimit.c
index ec5fb3791..e5720a22b 100644
--- a/src/firejail/rlimit.c
+++ b/src/firejail/rlimit.c
@@ -78,7 +78,7 @@ void set_rlimits(void) {
78#ifdef HAVE_GCOV 78#ifdef HAVE_GCOV
79 __gcov_dump(); 79 __gcov_dump();
80#endif 80#endif
81 if (setrlimit(RLIMIT_AS, &rl) == -1) 81 if (setrlimit(RLIMIT_AS, &rl) == -1)
82 errExit("setrlimit"); 82 errExit("setrlimit");
83 if (arg_debug) 83 if (arg_debug)
84 printf("Config rlimit: maximum virtual memory %llu\n", cfg.rlimit_as); 84 printf("Config rlimit: maximum virtual memory %llu\n", cfg.rlimit_as);
diff --git a/src/firejail/usage.c b/src/firejail/usage.c
index 28b5cc8a4..f3b3aace5 100644
--- a/src/firejail/usage.c
+++ b/src/firejail/usage.c
@@ -169,6 +169,8 @@ void usage(void) {
169 printf(" --quiet - turn off Firejail's output.\n"); 169 printf(" --quiet - turn off Firejail's output.\n");
170 printf(" --read-only=filename - set directory or file read-only..\n"); 170 printf(" --read-only=filename - set directory or file read-only..\n");
171 printf(" --read-write=filename - set directory or file read-write.\n"); 171 printf(" --read-write=filename - set directory or file read-write.\n");
172 printf(" --rlimit-as=number - set the maximum size of the process's virtual memory\n");
173 printf("\t(address space) in bytes.\n");
172 printf(" --rlimit-fsize=number - set the maximum file size that can be created\n"); 174 printf(" --rlimit-fsize=number - set the maximum file size that can be created\n");
173 printf("\tby a process.\n"); 175 printf("\tby a process.\n");
174 printf(" --rlimit-nofile=number - set the maximum number of files that can be\n"); 176 printf(" --rlimit-nofile=number - set the maximum number of files that can be\n");
diff --git a/src/man/firejail-profile.txt b/src/man/firejail-profile.txt
index 5825d3427..185420ba4 100644
--- a/src/man/firejail-profile.txt
+++ b/src/man/firejail-profile.txt
@@ -382,6 +382,9 @@ place the sandbox in an existing control group.
382Examples: 382Examples:
383 383
384.TP 384.TP
385\fBrlimit-as 123456789012
386Set he maximum size of the process's virtual memory to 123456789012 bytes.
387.TP
385\fBrlimit-fsize 1024 388\fBrlimit-fsize 1024
386Set the maximum file size that can be created by a process to 1024 bytes. 389Set the maximum file size that can be created by a process to 1024 bytes.
387.TP 390.TP
diff --git a/src/man/firejail.txt b/src/man/firejail.txt
index 20f2b7f8c..7ba09ba8a 100644
--- a/src/man/firejail.txt
+++ b/src/man/firejail.txt
@@ -140,7 +140,7 @@ Example:
140# firejail \-\-bind=/config/etc/passwd,/etc/passwd 140# firejail \-\-bind=/config/etc/passwd,/etc/passwd
141.TP 141.TP
142\fB\-\-blacklist=dirname_or_filename 142\fB\-\-blacklist=dirname_or_filename
143Blacklist directory or file. 143Blacklist directory or file. File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
144.br 144.br
145 145
146.br 146.br
@@ -1009,7 +1009,7 @@ Example:
1009$ firejail \-\-nodvd 1009$ firejail \-\-nodvd
1010.TP 1010.TP
1011\fB\-\-noexec=dirname_or_filename 1011\fB\-\-noexec=dirname_or_filename
1012Remount directory or file noexec, nodev and nosuid. 1012Remount directory or file noexec, nodev and nosuid. File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
1013.br 1013.br
1014 1014
1015.br 1015.br
@@ -1275,7 +1275,8 @@ $ firejail \-\-private-home=.mozilla firefox
1275Build a new /bin in a temporary filesystem, and copy the programs in the list. 1275Build a new /bin in a temporary filesystem, and copy the programs in the list.
1276If no listed file is found, /bin directory will be empty. 1276If no listed file is found, /bin directory will be empty.
1277The same directory is also bind-mounted over /sbin, /usr/bin, /usr/sbin and /usr/local/bin. 1277The same directory is also bind-mounted over /sbin, /usr/bin, /usr/sbin and /usr/local/bin.
1278All modifications are discarded when the sandbox is closed. 1278All modifications are discarded when the sandbox is closed. File globbing is supported,
1279see \fBFILE GLOBBING\fR section for more details.
1279.br 1280.br
1280 1281
1281.br 1282.br
@@ -1505,7 +1506,7 @@ Put a file in sandbox container, see \fBFILE TRANSFER\fR section for more detail
1505Turn off Firejail's output. 1506Turn off Firejail's output.
1506.TP 1507.TP
1507\fB\-\-read-only=dirname_or_filename 1508\fB\-\-read-only=dirname_or_filename
1508Set directory or file read-only. 1509Set directory or file read-only. File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
1509.br 1510.br
1510 1511
1511.br 1512.br
@@ -1526,7 +1527,8 @@ $ firejail --whitelist=~/work --read-only=~ --read-only=~/work
1526.TP 1527.TP
1527\fB\-\-read-write=dirname_or_filename 1528\fB\-\-read-write=dirname_or_filename
1528Set directory or file read-write. Only files or directories belonging to the current user are allowed for 1529Set directory or file read-write. Only files or directories belonging to the current user are allowed for
1529this operation. Example: 1530this operation. File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
1531Example:
1530.br 1532.br
1531 1533
1532.br 1534.br
@@ -1538,6 +1540,10 @@ $ firejail --read-only=~/test --read-write=~/test/a
1538 1540
1539 1541
1540.TP 1542.TP
1543\fB\-\-rlimit-as=number
1544Set the maximum size of the process's virtual memory (address space) in bytes.
1545
1546.TP
1541\fB\-\-rlimit-fsize=number 1547\fB\-\-rlimit-fsize=number
1542Set the maximum file size that can be created by a process. 1548Set the maximum file size that can be created by a process.
1543.TP 1549.TP
@@ -1833,6 +1839,7 @@ $ firejail \-\-shutdown=3272
1833.TP 1839.TP
1834\fB\-\-tmpfs=dirname 1840\fB\-\-tmpfs=dirname
1835Mount a tmpfs filesystem on directory dirname. This option is available only when running the sandbox as root. 1841Mount a tmpfs filesystem on directory dirname. This option is available only when running the sandbox as root.
1842File globbing is supported, see \fBFILE GLOBBING\fR section for more details.
1836.br 1843.br
1837 1844
1838.br 1845.br
@@ -2234,6 +2241,40 @@ $ firejail --tree
2234 2241
2235We provide a tool that automates all this integration, please see \fBman 1 firecfg\fR for more details. 2242We provide a tool that automates all this integration, please see \fBman 1 firecfg\fR for more details.
2236 2243
2244.SH FILE GLOBBING
2245.TP
2246Globbing is the operation that expands a wildcard pattern into the list of pathnames matching the pattern. Matching is defined by:
2247.br
2248
2249.br
2250- '?' matches any character
2251.br
2252- '*' matches any string
2253.br
2254- '[' denotes a range of characters
2255.br
2256.TP
2257The gobing feature is implemented using glibc glob command. For more information on the wildcard syntax see man 7 glob.
2258.br
2259
2260.br
2261.TP
2262The following command line options are supported: \-\-blacklist, \-\-private-bin, \-\-noexec, \-\-read-only, \-\-read-write, and \-\-tmpfs.
2263.br
2264
2265.br
2266.TP
2267Examples:
2268.br
2269
2270.br
2271$ firejail --private-bin=sh,bash,python*
2272.br
2273$ firejail --blacklist=~/dir[1234]
2274.br
2275$ firejail --read-only=~/dir[1-4]
2276.br
2277
2237.SH APPARMOR 2278.SH APPARMOR
2238.TP 2279.TP
2239AppArmor support is disabled by default at compile time. Use --enable-apparmor configuration option to enable it: 2280AppArmor support is disabled by default at compile time. Use --enable-apparmor configuration option to enable it:
diff --git a/test/environment/rlimit-profile.exp b/test/environment/rlimit-profile.exp
index a9e54a405..43d6a3ee0 100755
--- a/test/environment/rlimit-profile.exp
+++ b/test/environment/rlimit-profile.exp
@@ -27,6 +27,10 @@ expect {
27} 27}
28expect { 28expect {
29 timeout {puts "TESTING ERROR 1.4\n";exit} 29 timeout {puts "TESTING ERROR 1.4\n";exit}
30 "Max address space 123456789012 123456789012"
31}
32expect {
33 timeout {puts "TESTING ERROR 1.5\n";exit}
30 "Max pending signals 200 200" 34 "Max pending signals 200 200"
31} 35}
32after 100 36after 100
diff --git a/test/environment/rlimit.exp b/test/environment/rlimit.exp
index ecbe2a3b7..38cdc3eea 100755
--- a/test/environment/rlimit.exp
+++ b/test/environment/rlimit.exp
@@ -5,7 +5,7 @@ cd /home
5spawn $env(SHELL) 5spawn $env(SHELL)
6match_max 100000 6match_max 100000
7 7
8send -- "firejail --rlimit-fsize=1024 --rlimit-nproc=1000 --rlimit-nofile=500 --rlimit-sigpending=200\r" 8send -- "firejail --rlimit-fsize=1024 --rlimit-nproc=1000 --rlimit-nofile=500 --rlimit-sigpending=200 --rlimit-as=123456789012\r"
9expect { 9expect {
10 timeout {puts "TESTING ERROR 0\n";exit} 10 timeout {puts "TESTING ERROR 0\n";exit}
11 "Child process initialized" 11 "Child process initialized"
@@ -27,10 +27,14 @@ expect {
27} 27}
28expect { 28expect {
29 timeout {puts "TESTING ERROR 1.4\n";exit} 29 timeout {puts "TESTING ERROR 1.4\n";exit}
30 "Max pending signals 200 200" 30 "Max address space 123456789012 123456789012"
31} 31}
32expect { 32expect {
33 timeout {puts "TESTING ERROR 1.5\n";exit} 33 timeout {puts "TESTING ERROR 1.5\n";exit}
34 "Max pending signals 200 200"
35}
36expect {
37 timeout {puts "TESTING ERROR 1.6\n";exit}
34 "home" 38 "home"
35} 39}
36after 100 40after 100
diff --git a/test/environment/rlimit.profile b/test/environment/rlimit.profile
index 88fc9ff31..a57471604 100644
--- a/test/environment/rlimit.profile
+++ b/test/environment/rlimit.profile
@@ -2,3 +2,4 @@
2rlimit-nproc 1000 2rlimit-nproc 1000
3 rlimit-nofile 500 3 rlimit-nofile 500
4rlimit-sigpending 200 4rlimit-sigpending 200
5rlimit-as 123456789012