summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Leeming <andrew.leeming@codethink.co.uk>2016-09-16 12:07:18 +0100
committerAndrew Leeming <andrew.leeming@codethink.co.uk>2016-09-16 12:07:18 +0100
commit3272b430b5505d74662614043ea96dd37b60ec6a (patch)
treef44802cab1a1a4b65ea82683d9862fd85d3d48f2
parent9eed9d5d2ec16362a5f01d941f212ec6dc1a538a (diff)
downloadsandboxlib-3272b430b5505d74662614043ea96dd37b60ec6a.tar.gz
Thinking I finally get it
-rw-r--r--sandboxlib/bubblewrap.py29
1 files changed, 23 insertions, 6 deletions
diff --git a/sandboxlib/bubblewrap.py b/sandboxlib/bubblewrap.py
index f46cd7f..b1e1654 100644
--- a/sandboxlib/bubblewrap.py
+++ b/sandboxlib/bubblewrap.py
@@ -105,20 +105,22 @@ def run_sandbox(command, cwd=None, env=None,
if cwd is not None:
bwrap_command.extend(['--chdir', cwd])
- log.warn(bwrap_command)
- #create_mount_points_if_missing(filesystem_root, filesystem_writable_paths)
- for w_mnt in filesystem_writable_paths:
- bwrap_command.extend(['--bind', w_mnt])
+ #FIXME the following only deals with the 'all' or [] cases currently
+ # Also bwrap is writable by default(?) so we need to blacklist non
+ # writable mounts instead of whitelisting these
+ bwrap_command += process_writable_paths(
+ filesystem_root, filesystem_writable_paths)
create_mount_points_if_missing(filesystem_root, extra_mounts)
for ex_mnt in extra_mounts:
- bwrap_command.extend(['--ro-bind', ex_mnt])
+ bwrap_command.extend(['--ro-bind', ex_mnt, ex_mnt])
log.warn(bwrap_command)
argv = bwrap_command + [filesystem_root] + command
print("run_command({}, {}, {}, {})"
.format(argv, stdout, stderr, env))
+ #run_command(['/usr/bin/bwrap', '--bind', 'a', '--bind', 'l', '--bind', 'l', '/', 'echo', 'xyzzy'], -1, -1, None)
exit, out, err = sandboxlib._run_command(argv, stdout, stderr, env=env)
return exit, out, err
@@ -162,4 +164,19 @@ def process_network_config(network):
else:
network_args = []
- return network_args \ No newline at end of file
+ return network_args
+
+def process_writable_paths(fs_root, writable_paths):
+ if writable_paths == 'all':
+ extra_args = []
+ else:
+ if type(writable_paths) != list:
+ assert writable_paths in [None, 'none']
+ writable_paths = []
+
+ extra_args=[]
+ for paths in writable_paths:
+ extra_args.extend(['--bind', paths, paths])
+
+
+ return extra_args \ No newline at end of file