PID Namespace
Основна інформація
Простір імен PID (ідентифікатор процесу) - це функція в ядрі Linux, яка забезпечує ізоляцію процесів, дозволяючи групі процесів мати власний набір унікальних PID, відокремлений від PID в інших просторах імен. Це особливо корисно в контейнеризації, де ізоляція процесів є важливою для безпеки та управління ресурсами.
Коли створюється новий простір імен PID, перший процес в цьому просторі імен призначається PID 1. Цей процес стає процесом "init" нового простору імен і відповідає за управління іншими процесами в межах простору імен. Кожен наступний процес, створений в межах простору імен, матиме унікальний PID в цьому просторі імен, і ці PID будуть незалежними від PID в інших просторах імен.
З точки зору процесу в межах простору імен PID, він може бачити лише інші процеси в тому ж просторі імен. Він не відомий процесам в інших просторах імен, і він не може взаємодіяти з ними за допомогою традиційних засобів управління процесами (наприклад, kill
, wait
і т. д.). Це забезпечує рівень ізоляції, який допомагає запобігти взаємодії процесів один з одним.
Як це працює:
Коли створюється новий процес (наприклад, за допомогою системного виклику
clone()
), процес може бути призначений для нового або існуючого простору імен PID. Якщо створюється новий простір імен, процес стає процесом "init" цього простору імен.Ядро підтримує відображення між PID в новому просторі імен та відповідними PID в батьківському просторі імен (тобто просторі імен, з якого було створено новий простір імен). Це відображення дозволяє ядру перекладати PID за необхідності, наприклад, при відправці сигналів між процесами в різних просторах імен.
Процеси в межах простору імен PID можуть бачити та взаємодіяти лише з іншими процесами в тому ж просторі імен. Вони не відомі процесам в інших просторах імен, і їх PID унікальні в межах їх простору імен.
Коли простір імен PID знищується (наприклад, коли процес "init" простору імен виходить), всі процеси в цьому просторі імен припиняються. Це забезпечує правильне очищення всіх ресурсів, пов'язаних з простором імен.
Лабораторія:
Створення різних просторів імен
CLI
Монтуванням нового екземпляру файлової системи /proc
, якщо використовуєте параметр --mount-proc
, ви забезпечуєте, що новий простір монтування має точний та ізольований вид інформації про процеси, специфічні для цього простору імен.
Docker
Перевірте, в якому просторі імен знаходиться ваш процес
Знайдіть всі простори імен PID
Зверніть увагу, що користувач root з початкового (типового) простору імен PID може бачити всі процеси, навіть ті, що знаходяться в нових просторах імен PID, тому ми можемо бачити всі простори імен PID.
Увійдіть всередину простору імен PID
Коли ви входите в простір імен PID зі стандартного простору імен, ви все ще зможете бачити всі процеси. І процес з того PID ns зможе бачити новий bash в PID ns.
Також, ви можете увійти в інший простір імен PID процесу лише як root. І ви не можете увійти в інший простір імен без дескриптора, що вказує на нього (наприклад, /proc/self/ns/pid
)
Посилання
Last updated