释
可以使用unshare命令创建专用于脚本的命名空间:
unshare --mount /path/to/script # Execute command in dedicated mount namespace
该脚本使用自己的mount命名空间。
它可能看起来像这样:
mount --make-rslave / # Prevent this mount namespace
# from changing the real namespace
mount --bind /foo/tmptmp foo/tmp # Do the bind
touch /foo/tmp/tmpFile # Create tmp files
echo $( ls /foo/tmptmp )
echo $( ls /foo/tmp )
#output:
#tmpFile
#tmpFile
使用unshare执行脚本后,让我们看看主系统发生了什么。
ls /foo/tmptmp
#output: tmpFile
ls /foo/tmp
#output:
#(Note that the file is only present in /foo/tmptmp)
umount /foo/tmptmp
#output: umount: /foo/tmptmp: not mounted
#(Note that the bind did only affect the mount namespace of the script)
解
将此问题应用于问题的问题会产生以下需要通过unshare --mount调用的脚本:
mount --make-rslave /
mount --bind /your/tmp/file /var/tmp
checkinstall