После долгих головных болей я думаю, что у меня есть некоторые ответы. Каждый процесс действительно является частью ровно одного пользовательского пространства имен (, как подтверждается здесь ), изображение в статье точно отображает это. Помимо init, процессы создаются другими процессами. Когда процесс создает дочерний процесс, у него есть возможность назначить дочерний процесс в новое пользовательское пространство имен, которое также называется «дочерним пространством имен» пользовательского пространства имен родительского процесса.
Так называемые сопоставления UID (идентификатора пользователя )и GID (идентификатора группы)позволяют процессу UID и GID для кажутся разными при проверке из другого пространства имен. Сопоставления важны, потому что процесс может, например, изменять файлы в системе, которая обрабатывает из других пространств имен захотят получить доступ, и они также захотят увидеть осмысленный UID или GID на эти файлы из-за пределов пространства имен.
Сопоставление UID (то же самое для GID )работает, используя UID процесса, который создает новое пространство имен, сопоставление этого с /proc/
и назначение сопоставленного UID для нового процесса в новом пространстве имен. Если сопоставление не указано при создании нового пользовательского пространства имен, то UID процессов в новом пространстве имен примет значение /proc/sys/kernel/overflowuid
Более подробную информацию о том, как можно определить такие отображения, можно найти в этой статье LWN .