X-Git-Url: https://iankelling.org/git/?p=newns;a=blobdiff_plain;f=newns;h=823d184b5b07b323d17acbe91a46b5b2a3ccd694;hp=d6a1b08eb6bc7805cb5d3fadcc7f50b591b29ef2;hb=6c826f3613b0c3b86257b111b3078013fdf34b78;hpb=11818aeee42717a9ce5ca1b4ac7bde4a646f1306 diff --git a/newns b/newns index d6a1b08..823d184 100755 --- a/newns +++ b/newns @@ -38,17 +38,19 @@ fi usage() { cat </dev/null; then existing=true @@ -176,13 +190,26 @@ start() { mkdir -p /root/mount_namespaces if ! mountpoint /root/mount_namespaces >/dev/null; then mount --bind /root/mount_namespaces /root/mount_namespaces - mount --make-private /root/mount_namespaces fi + # note: This is outside the mount condition because I've mysteriously + # had this become shared instead of private, perhaps it + # got remounted somehow and lost the setting. + mount --make-private /root/mount_namespaces if [[ ! -e /root/mount_namespaces/$nn ]]; then touch /root/mount_namespaces/$nn fi if ! mountpoint /root/mount_namespaces/$nn >/dev/null; then - unshare --mount=/root/mount_namespaces/$nn + # documentation on propagation is a bit weird because it + # confusingly talks about binds, namespaces, and mirrors (which + # seems to be just another name for bind), shared subtrees + # (which seems to a term for binds and namespaces), and does not + # properly specify whether the documentation applies to binds, + # namespaces, or both. Notably, propagation for binds is marked + # on the original mount point, and propagation for a mount + # namespace is marked on mounts within the namespace. Here, we + # specify that we want mount changes propagated to us, but not + # back. + unshare --propagation slave --mount=/root/mount_namespaces/$nn fi #### end mount namespace setup ####