有没有办法检查另一个挂载命名空间的文件和目录?
setns(2)syscall 似乎能够将线程移动到另一个命名空间,但如果此功能尚未内置到程序(shell、文件服务器等)中,则似乎需要执行新进程。而且由于目标挂载命名空间可能不包含所需的二进制文件,因此这是一个问题。
编辑:
我正在寻找一种“用户友好”的方式来访问命名空间中的文件。我可以想象有一种方法可以将命名空间挂载到主机系统上的某个位置。但由于我不知道有什么可能,所以我问了。
答案1
如果您想要一个保证令人满意的答案,您需要定义“用户友好”,但根据您的需要,/proc/<PID>/root
获取特定进程所见的整个文件系统层次结构,以及/proc/<PID>/mounts
(和/proc/<PID>/mountinfo
)安装在哪里的内容,可能会让您到达您需要去的地方。如果你仅有的如果你有一个命名空间的文件描述符,那么你的处境就不那么愉快了,因为我不知道有什么方法可以从文件描述符转到已经在命名空间中的 PID,但如果这就是你的情况,那么你就把“用户友好”的保留留给了长的时间以前,扭曲是可以预料的。