Мне интересно, что именно означает «поддержка пространств имен» в ядре Linux. Я использую ядро 3.11.1 (самое новое стабильное ядро на данный момент).
Если я решу отключить его, замечу ли я какие-либо изменения в моей системе?
И в случае, если кто-то решит использовать пространства имен, достаточно ли его просто скомпилировать NAMESPACES=Y
в ядре или ему также нужны инструменты пользовательского пространства?
linux
linux-kernel
namespace
Мартин Вегтер
источник
источник
Ответы:
В двух словах, пространства имен обеспечивают способ построения виртуальной системы Linux внутри более крупной системы Linux. Это отличается от запуска виртуальной машины, которая выполняется как непривилегированный процесс: виртуальная машина отображается как один процесс на хосте, тогда как процессы, выполняющиеся в пространстве имен, все еще выполняются на хост-системе.
Виртуальная система, работающая внутри большей системы, называется контейнером . Идея контейнера заключается в том, что процессы, выполняющиеся внутри контейнера, считают, что они являются единственными процессами в системе. В частности, пользователь root внутри контейнера не имеет привилегий root вне контейнера (обратите внимание, что это верно только в достаточно последних версиях ядра).
Пространства имен виртуализируют одну функцию за раз. Некоторые примеры типов пространств имен:
Начиная с ядра Linux 3.8, непривилегированные пользователи могут создавать пространства имен пользователей. Это позволяет обычному пользователю использовать функции, зарезервированные для root (например, изменение таблиц маршрутизации или настройка возможностей).
Пространства имен полагаются на ядро для обеспечения изоляции между пространствами имен. Это довольно сложно сделать правильно, поэтому все еще могут быть ошибки безопасности. Риск ошибок безопасности будет основной причиной, по которой эта функция не будет включена. Еще одна причина не включать его - это когда вы делаете небольшое ядро для встроенного устройства. В ядре общего назначения, которое вы устанавливаете на типичном сервере или рабочей станции, пространства имен должны быть включены, как и любая другая зрелая функция ядра.
Есть еще несколько приложений, которые используют пространства имен. Вот некоторые из них:
Смотрите серию статей LWN Майкла Керриска для получения дополнительной информации.
источник
Пространство имен ядра Linux - это концепция, используемая для изоляции группы процессов от других в отношении доступа к системному ресурсу. Например, два разных пространства имен PID могут содержать процессы с одинаковыми PID, но совершенно разными образами процессов. Они часто используются в виртуализации на уровне ОС, в которой одно ядро одновременно работает с различными операционными системами - все они должны быть основаны на Linux (потому что они разделяют ядро, очевидно), но могут иметь разные дистрибутивы и версии. Смотрите, например, LXC .
Вы можете заметить его отключение, например, в системах на основе systemd, поскольку systemd может использовать пространства имен для своей функции контейнера . Следовательно, многое зависит от того, какой дистрибутив вы используете и что вы собираетесь делать с системой.
Как и в случае почти всех функций ядра, вам определенно нужны какие-то программы пользовательского пространства - даже если вы общались с ядром через специальные файлы (я не уверен, что вы можете это сделать), обычно гораздо лучше полагаться на специализированные инструменты, поскольку они Предложить дружественный API.
источник
Чтобы привести пример использования пространства имен, в системах с поддержкой SELinux (MLS или Strict). Пространство имен обычно используется для создания отдельных
/tmp
и / или/home
каталогов для каждого пользователя. Эти каталоги видны только: пользователю, пользователям с одинаковой меткой, ядру и пользователям с привилегированным доступом. Директория пространства имен/tmp
помечается SELinux-MLS, чтобы соответствовать метке SELinux-MLS пользователя. В этом случае/tmp
каталог, который видит пользователь, может быть действительно смонтирован где-то, кроме/tmp
(/var/user-tmp
). Пользователь, однако, видит только/tmp
те файлы, которые созданы из-за активности пользователя. пользователь никогда не увидит никаких файлов,/tmp
которые являются продуктом других пользователей.источник