Namespaces compatibility list
This document contains the information about the problems user may have when creating tasks living in different namespaces.
Here’s the summary. This matrix shows the known problems, that occur when tasks share some namespace (the columns) while living in different other namespaces (the rows):
+----------------------------+-----+---------+-------+------+-------+---+ | - UTS | IPC | VFS | PID | User | Net | | +============================+=====+=========+=======+======+=======+===+ | UTS X IPC VFS PID User Net | X | 1 X 1 2 | > X 2 | | > X X | | | | | | | | | | | | > 1 | | | | | | +----------------------------+-----+---------+-------+------+-------+---+
-
Both the IPC and the PID namespaces provide IDs to address object inside the kernel. E.g. semaphore with IPCID or process group with pid.
In both cases, tasks shouldn’t try exposing this ID to some other task living in a different namespace via a shared filesystem or IPC shmem/message. The fact is that this ID is only valid within the namespace it was obtained in and may refer to some other object in another namespace.
-
Intentionally, two equal user IDs in different user namespaces should not be equal from the VFS point of view. In other words, user 10 in one user namespace shouldn’t have the same access permissions to files, belonging to user 10 in another namespace.
The same is true for the IPC namespaces being shared - two users from different user namespaces should not access the same IPC objects even having equal UIDs.
But currently this is not so.