nspawn: fix MS_SHARED mount propagation for userns containers
authorLennart Poettering <lennart@poettering.net>
Thu, 23 Jul 2020 09:13:44 +0000 (11:13 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 27 Jul 2020 08:26:34 +0000 (10:26 +0200)
commitf7505a8f7d65bcf38ade3c08aa4330569810104c
treecd53876b6b3bd7937f88201114e52d66f08f4c8d
parente558945db307fd1799d2a817c9da0cb61eaf7eac
nspawn: fix MS_SHARED mount propagation for userns containers

We want our OS trees to be MS_SHARED by default, so that our service
namespacing logic can work correctly. Thus in nspawn we mount everything
MS_SHARED when organizing our tree. We do this early on, before changing
the user namespace (if that's requested). However CLONE_NEWUSER actually
resets MS_SHARED to MS_SLAVE for all mounts (so that less privileged
environments can't affect the more privileged ones). Hence, when
invoking it we have to reset things to MS_SHARED afterwards again. This
won't reestablish propagation, but it will make sure we get a new set of
mount peer groups everywhere that then are honoured for the mount
namespaces/propagated mounts set up inside the container further down.

(cherry picked from commit 2a2e78e969d9549502066af90217104461d908e6)
src/nspawn/nspawn.c