Namespaces Linux: сравнение пространств двух процессов
Сравните net, mnt и user namespaces через procfs. Установите границы вывода: общий net namespace не означает общие файлы, права или отдельное ядро.
Изоляцию нужно проверять по каждому виду ресурса
Два процесса видят одинаковые сетевые интерфейсы, но разные файлы. Это не противоречие: изоляция Linux состоит из нескольких пространств имён. Проверка только одного вида не описывает всё окружение программы.
Вместо догадки по имени контейнера сравним ссылки procfs. Учебная пара — текущая оболочка и процесс с PID 1, видимый в том же procfs. Это сравнение не обещает доступ к начальному процессу настоящего хоста.
Идентичность пространства, а не название контейнера
В /proc/PID/ns находятся ссылки для поддерживаемых пространств имён. Их представление содержит тип и inode. Для проверки идентичности пространства используют сочетание устройства и inode при разыменовании ссылки, сравнивая один и тот же тип.
Пространства net, mnt и user относятся к разным видам ресурсов. Совпадение net не доказывает совпадение mnt. Ссылки не являются неизменными глобальными идентификаторами между перезагрузками и не свидетельствуют о наличии отдельного ядра.
Сравните три вида пространств
Команда stat использует GNU-формат вывода. Если доступ к одному PID запрещён, сохраните отказ как ограничение наблюдения, не заменяя его предположением о равенстве.
namespace_pid=$$
for kind in net mnt user; do
printf "%s: shell / pid1\n" "$kind"
stat -L -c "%d:%i" "/proc/$namespace_pid/ns/$kind" "/proc/1/ns/$kind"
doneСделайте узкий вывод из сравнения
Для каждого kind сопоставьте две пары device:inode. Равенство позволяет говорить об одном пространстве этого вида у выбранных живых процессов. Различие mnt подсказывает проверить mountinfo, если они видят разные файлы.
Вообразите результат: net совпал, mnt различается, user совпал. Корректная запись отчёта перечисляет эти три факта. Фраза «изоляции нет» потеряла бы существенное различие файловых представлений. Для следующего шага выбирайте ресурс, связанный с исходным симптомом.
Проверьте своё рассуждение
Задача: PID 1 внутри контейнера имеет те же пространства, что ваша оболочка. Можно ли заключить, что контейнер совпадает с хостом?
Нет. Сначала установите, какой PID 1 вы наблюдаете. Процесс с таким номером в доступном procfs может быть начальным процессом контейнера, а сведения о хосте остаются вне этого наблюдения.
Сравнение не выполняет вход в пространство
Пример только читает метаданные; он не вызывает setns, unshare или запуск контейнера. Набор ссылок зависит от ядра и его конфигурации. Для длительных сравнений учитывайте завершение процессов и жизненный цикл пространств, иначе старые номера легко принять за актуальную идентичность.
Технические источники
Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.
- Linux man-pages — namespaces(7)
Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.
Нужны собственная Linux-система, смонтированный procfs и Bash. Доступность полей зависит от ядра, его конфигурации, прав и пространств имён. Примеры только читают диагностические интерфейсы; браузерный симулятор их не реализует.
От материала к практике
Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.