У двох словах, простори імен дозволяють побудувати віртуальну систему Linux всередині більшої системи Linux. Це відрізняється від запуску віртуальної машини, яка працює як непривілейований процес: віртуальна машина з'являється як єдиний процес у хості, тоді як процеси, що працюють у просторі імен, все ще працюють у хост-системі.
Віртуальна система, що працює всередині більшої системи, називається контейнером . Ідея контейнера полягає в тому, що процеси, що працюють всередині контейнера, вважають, що це єдині процеси в системі. Зокрема, користувач root всередині контейнера не має кореневих привілеїв поза контейнером (зауважте, що це справедливо лише в достатній кількості останніх версій ядра).
Простори імен віртуалізують одну функцію за один раз. Деякі приклади типів просторів імен:
- Простори імен користувачів - це дозволяє процесам вести себе так, ніби вони працювали як різні користувачі всередині і поза простором імен. Зокрема, процеси, що виконуються як UID 0 всередині простору імен, мають привілеї суперпользователя лише стосовно процесів, що працюють в одному просторі імен.
Оскільки Linux kernel 3.8, непривілейовані користувачі можуть створювати простори імен користувачів. Це дозволяє звичайному користувачеві використовувати функції, які зарезервовані під корінь (наприклад, зміна таблиць маршрутизації або налаштування можливостей).
- Простори імен PID - процеси всередині простору імен PID не можуть вбивати або відстежувати процеси поза цим простором імен.
- Монтувати простори імен - це дозволяє процесам мати власний вигляд файлової системи. Цей вигляд може бути частковим переглядом, що дозволяє приховати деякі фрагменти файлової системи, а фрагменти бути рекомпоновані, щоб дерева каталогів з'являлися в різних місцях. Набори просторів імен узагальнюють традиційну функцію chroot для Unix , яка дозволяє обмежити процеси певним піддіревом.
- Мережеві простори імен - дозволяють розділяти мережеві ресурси (мережеві пристрої) і, таким чином, посилюють ізоляцію процесів.
Простори імен покладаються на ядро, щоб забезпечити ізоляцію між просторами імен. Це правильно скластись, тому все ще можуть бути помилки безпеки. Ризик помилок безпеки буде основною причиною не вмикати функцію. Ще одна причина не вмикати це, коли ви робите невелике ядро для вбудованого пристрою. У ядрі загального призначення, яке ви встановите на типовому сервері або робочій станції, простори імен повинні бути включені, як і будь-яка інша функція зрілого ядра.
Є ще мало програм, які використовують простори імен. Ось декілька:
Дивіться серію статей LWN Майкла Керріска для отримання додаткової інформації.