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