本文来自依云's Blog,转载请注明。
脚本需要挂载文件系统,但是不希望外部看到。正确的做法是:
mount --make-rprivate /
然后该干嘛干嘛。当然如果你不知道在执行之前先调用 unshare
或者等价的系统调用,说明这篇文章不适合你阅读。
错误的做法是在挂载的时候加 --make-private
或者把 /
--make-private
。这个标志(MS_PRIVATE
)的意思是挂载/卸载事件在这里停止传播,而不是这个挂载点的事件是否传播出去。至于为什么需要使用 --make-rprivate
(增加了 MS_REC
标志),暂时我还不理解。
这个用法是从 unshare 工具的 strace 结果里挖掘出来的。因为我的目的跟 unshare -m
一样嘛,当然首先想到的是看看它是怎么干的了。你问我为什么不用 unshare -m
?你自己写脚本的时候试试看啰?