Mount Namespace
Основна інформація
Простір імен монтування - це функція ядра Linux, яка забезпечує ізоляцію точок монтування файлової системи, які бачать група процесів. Кожен простір імен монтування має свій набір точок монтування файлової системи, і зміни в точках монтування в одному просторі імен не впливають на інші простори імен. Це означає, що процеси, які працюють в різних просторах імен монтування, можуть мати різні види ієрархії файлової системи.
Простори імен монтування особливо корисні в контейнеризації, де кожен контейнер повинен мати свою власну файлову систему та конфігурацію, відокремлену від інших контейнерів та системи хоста.
Як це працює:
При створенні нового простору імен монтування він ініціалізується з копією точок монтування з простору імен його батька. Це означає, що при створенні нового простору імен він спільно використовує той самий вид файлової системи, що й його батько. Однак будь-які подальші зміни в точках монтування всередині простору імен не впливають на батьківський або інші простори імен.
Коли процес модифікує точку монтування всередині свого простору імен, таку як монтування або розмонтовування файлової системи, зміни є локальними для цього простору імен і не впливають на інші простори імен. Це дозволяє кожному простору імен мати свою власну незалежну ієрархію файлової системи.
Процеси можуть переміщатися між просторами імен за допомогою системного виклику
setns()
, або створювати нові простори імен за допомогою системних викликівunshare()
абоclone()
з прапорцемCLONE_NEWNS
. Коли процес переходить до нового простору імен або створює його, він почне використовувати точки монтування, що асоційовані з цим простором імен.Дескриптори файлів та іноди спільно використовуються між просторами імен, що означає, що якщо процес в одному просторі імен має відкритий дескриптор файлу, що вказує на файл, він може передати цей дескриптор файлу процесу в іншому просторі імен, і обидва процеси матимуть доступ до одного й того ж файлу. Однак шлях до файлу може бути різним у обох просторах імен через різницю в точках монтування.
Лабораторія:
Створення різних просторів імен
CLI
Монтувавши новий екземпляр файлової системи /proc
, якщо використовується параметр --mount-proc
, ви забезпечуєте, що новий простір імен має точний та ізольований перегляд інформації про процес, специфічний для цього простору імен.
Docker
Перевірте, в якому просторі імені знаходиться ваш процес
Знайдіть всі простори імен точок монтування
```bash sudo find /proc -maxdepth 3 -type l -name mnt -exec readlink {} \; 2>/dev/null | sort -u # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name mnt -exec ls -l {} \; 2>/dev/null | grep ``` ### Увійдіть всередину простору імені Mount ```bash nsenter -m TARGET_PID --pid /bin/bash ``` Також, ви можете **увійти в простір імен іншого процесу лише як root**. І ви **не можете** **увійти** в інший простір імен **без дескриптора**, що вказує на нього (наприклад, `/proc/self/ns/mnt`).
Оскільки нові монти доступні лише в межах простору імен, можливо, що простір імен містить чутливу інформацію, до якої можна отримати доступ лише з нього.
Підключіть щось
Посилання
Last updated