我尝试使用container
包中的unshare
工具设置带有隔离装载命名空间的linux util-linux
:
% sudo unshare -m -f /bin/bash
所以我期待bash将在命名空间中启动,其中mount命名空间(即文件系统)将与主机完全隔离,但是我仍然可以修改主机FS(创建/删除文件)主持人FS)。我在这里做错了什么?
答案 0 :(得分:2)
挂载{{3}}仅通过复制父树来创建单独的挂载树。
您仍然必须将文件系统重新安装为只读,卸载它们,将tmpfs挂载到它们或namespace到干净的树中以防止访问。通过用户名称空间切换到umapped用户可能会有所帮助,但它不会阻止访问世界可读/可写文件。
如果您需要设置更复杂的命名空间环境 - 基本上是容器 - 您可以使用pivot_root或firejail根据配置文件自动执行这些任务。 runc在直接访问基元之间提供了一些中间功能集,如unshare所做的那样,以及容器运行时。
答案 1 :(得分:0)
我假设mount命名空间是隔离的,因为命名空间中的mount / unmount对主机FS没有影响。所以我认为修改FS是另一个问题,可能与用户有关,但不完全确定。