Is there a way to inspect the files and directories of another mount namespace?
setns(2) syscall appears to be able to move a thread to another namespace, but if this functionality is not already built in to a program (a shell, fileserver, ..), it appears that executing a new process is required. And since the target mount namespace may not contain the required binary, this is a problem.
Edit:
What I am looking for is a "user-friendly" way to access the files in the namespace. I can imagine there being, for example, a way to mount the namespace somewhere on the host system. But since I don't know what's possible, I'm asking.
Best Answer
You'll need to define "user friendly" if you want a guaranteed satisfactory answer, but depending on your needs,
/proc/<PID>/root
to get the entire filesystem hierarchy as seen by a specific process, and/proc/<PID>/mounts
(and/proc/<PID>/mountinfo
) for what's mounted where, might get you where you need to go. If you only have a file descriptor for a namespace, you're in a far less pleasant position, because I'm not aware of any way you can go from file descriptor to a PID that's already in the namespace, but if that's where you're coming from, you left the "user friendly" reservation a long time ago, and contortions are to be expected.