4fbcc668d0
This commit introduces support for configuring mount propagation when mounting volumes with the `volume_mount` stanza on Linux targets. Similar to Kubernetes, we expose 3 options for configuring mount propagation: - private, which is equivalent to `rprivate` on Linux, which does not allow the container to see any new nested mounts after the chroot was created. - host-to-task, which is equivalent to `rslave` on Linux, which allows new mounts that have been created _outside of the container_ to be visible inside the container after the chroot is created. - bidirectional, which is equivalent to `rshared` on Linux, which allows both the container to see new mounts created on the host, but importantly _allows the container to create mounts that are visible in other containers an don the host_ private and host-to-task are safe, but bidirectional mounts can be dangerous, as if the code inside a container creates a mount, and does not clean it up before tearing down the container, it can cause bad things to happen inside the kernel. To add a layer of safety here, we require that the user has ReadWrite permissions on the volume before allowing bidirectional mounts, as a defense in depth / validation case, although creating mounts should also require a priviliged execution environment inside the container. |
||
---|---|---|
.. | ||
proto | ||
test-resources/busybox | ||
client.go | ||
exec_utils.go | ||
executor.go | ||
executor_basic.go | ||
executor_linux.go | ||
executor_linux_test.go | ||
executor_plugin.go | ||
executor_test.go | ||
executor_universal_linux.go | ||
executor_unix.go | ||
executor_windows.go | ||
legacy_executor_wrapper.go | ||
libcontainer_nsenter_linux.go | ||
pid_collector.go | ||
pid_collector_test.go | ||
plugins.go | ||
pty_unix.go | ||
pty_windows.go | ||
resource_container_default.go | ||
resource_container_linux.go | ||
server.go | ||
utils.go | ||
utils_unix.go | ||
utils_windows.go | ||
z_executor_cmd.go |