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