ядро: Підтримка просторів імен


15

Мені цікаво, що саме означає функція «Підтримка просторів імен» в ядрі Linux. Я використовую ядро ​​3.11.1 (новітнє стабільне ядро ​​на даний момент).

Якщо я вирішу відключити його, чи помічу я якісь зміни у своїй системі?

І якщо хтось вирішить скористатися просторами імен, чи достатньо просто компілювати NAMESPACES=Yв ядрі, чи йому також потрібні інструменти простору користувачів?


5
Простори імен тут пояснюються досить добре: lwn.net/Articles/531114 (не відповідь, тому що я не дуже відповідаю на ваші запитання - я
вказую

Відповіді:


21

У двох словах, простори імен дозволяють побудувати віртуальну систему Linux всередині більшої системи Linux. Це відрізняється від запуску віртуальної машини, яка працює як непривілейований процес: віртуальна машина з'являється як єдиний процес у хості, тоді як процеси, що працюють у просторі імен, все ще працюють у хост-системі.

Віртуальна система, що працює всередині більшої системи, називається контейнером . Ідея контейнера полягає в тому, що процеси, що працюють всередині контейнера, вважають, що це єдині процеси в системі. Зокрема, користувач root всередині контейнера не має кореневих привілеїв поза контейнером (зауважте, що це справедливо лише в достатній кількості останніх версій ядра).

Простори імен віртуалізують одну функцію за один раз. Деякі приклади типів просторів імен:

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

Простори імен покладаються на ядро, щоб забезпечити ізоляцію між просторами імен. Це правильно скластись, тому все ще можуть бути помилки безпеки. Ризик помилок безпеки буде основною причиною не вмикати функцію. Ще одна причина не вмикати це, коли ви робите невелике ядро ​​для вбудованого пристрою. У ядрі загального призначення, яке ви встановите на типовому сервері або робочій станції, простори імен повинні бути включені, як і будь-яка інша функція зрілого ядра.

Є ще мало програм, які використовують простори імен. Ось декілька:

Дивіться серію статей LWN Майкла Керріска для отримання додаткової інформації.


6

Простір імен ядра Linux - це концепція, що використовується для ізоляції групи процесів від інших щодо доступу до системного ресурсу. Наприклад, два різні простори імен PID можуть містити процеси з однаковими PID, але абсолютно різними зображеннями процесу. Вони часто використовуються у віртуалізації на рівні ОС, в якій одне ядро ​​одночасно працює з різними операційними системами - всі повинні бути на базі Linux (оскільки, очевидно, вони мають спільне ядро), але це можуть бути різні дистрибутиви та версії. Див. Наприклад LXC .

Ви можете помітити його відключення, наприклад, на базі системних систем, оскільки systemd може використовувати простори імен для функції контейнера . Отже, багато що залежить від того, який дистрибутив ви використовуєте та що ви маєте намір робити з системою.

Як і майже з кожною функцією ядра, вам, безумовно, потрібні певні програми для користувальницького простору - навіть якщо ви спілкувалися з ядром через спеціальні файли (я не впевнений, що зможете), зазвичай набагато краще ідея покладатися на спеціалізовані інструменти, оскільки вони пропонуємо передній інтерфейс API.


1

Наведіть приклад використання простору імен у системах, що підтримуються SELinux (MLS або Strict). Простір імен зазвичай використовується для створення індивідуальних /tmpта / або /homeкаталогів для кожного користувача. Ці каталоги можуть бачити лише користувач, користувачі з однаковою міткою, ядро ​​та користувачі з привілейованим доступом. Каталог простору імен /tmpотримує мітку SELinux-MLS відповідно до мітки SELinux-MLS користувача. У цьому сценарії /tmpкаталог, який бачить користувач, може бути дійсно встановлений десь, крім /tmp( /var/user-tmp). Однак користувач бачить лише /tmpті файли, які створені завдяки діяльності користувача. користувач ніколи не побачить файлів, /tmpякі є продуктом інших користувачів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.