systemd 259: Підтримка Musl, розширення можливостей run0 та прощання з System V

Ключові моменти:
  • Часткова підтримка Musl libc (потрібне ручне налаштування в Meson).
  • run0 --empower дозволяє привілейовані дії без зміни UID користувача.
  • Підтверджено припинення підтримки скриптів System V та підвищені вимоги (ядро 5.10+).
  • libsystemd тепер завантажує зовнішні бібліотеки за допомогою dlopen() для зменшення залежностей.
  • Зберігання журналу тепер за замовчуванням є «постійним».

systemd

Після трохи більше ніж трьох місяців розробки, запуск нова версія 259. Це оновлення вносить зміни до архітектури системи, підкреслюючи відкритість до альтернативних стандартних бібліотек, більш суворе управління привілеями та суворіші технічні вимоги для майбутніх версій.

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

Основні нові функції systemd 259

Нова версія systemd 259 вирізняється тим, що є перша версія, яка додає часткову сумісність з Musl, популярна стандартна бібліотека C у легких дистрибутивах та вбудованих середовищах. Ця інтеграція Керування ним здійснюється через опцію libc у системі збірки Meson. Однак, оскільки Musl не реалізує функціональність NSS (перемикач служби імен), кілька компонентів systemd залишаються вимкненими в цій конфігурації.

Серед апомітні прогалини під час компіляції з Musl знайдено nss-systemd, nss-resolve, systemd-homed, systemd-userdbd та параметр DynamicUserКрім того, неможливо запустити systemd-nspawn без привілеїв у цій бібліотеці. Розробники попередили, що збереження цієї підтримки в майбутніх версіях залежатиме від попиту спільноти та стабільності будь-яких додаткових рівнів сумісності, які будуть розроблені.

Ще однією новою функцією нової версії є у утиліті run0, розроблений як сучасна та безпечна альтернатива sudo, яка отримала нова опція – розширення можливостей. Ця функція Це дозволяє вам увійти з підвищеними привілеями. без необхідності змінювати ідентифікатор користувача (UID) на root.

Крім того, замість делегування повного контролю через перемикання користувачів, –empower використовує індикатори можливостей ядра, такі як CAP_SYS_ADMIN, надавати суворо необхідні дозволи здійснювати привілейовані системні виклики. Крім того, результуючі процеси інтегруються в певну групу, яка надає їм доступ до дій Polkit, підтримуючи надійніший розподіл привілеїв, ніж у традиційній моделі sudo.

Кінець епохи: Прощання з System V та новими вимогами

systemd 259 знаменує собою початок кінця для сумісність з Скрипти служби System VБуло оголошено, що в наступній версії застарілі компоненти, такі як systemd-sysv-generator, systemd-rc-local-generator та systemd-sysv-install, будуть остаточно видалені.

Поряд із цим очищенням старого коду, мінімальні вимоги до програмного забезпечення для екосистеми systemd були значно підвищені:

  • Ядро Linux: версія не нижче 5.10.
  • Глібк: 2.34.
  • OpenSSL: 3.0.0.
  • Утиліта для Linux: 2.37.
  • Інші: Python 3.9.0, cryptsetup 2.4.0 та libseccomp 2.4.0.

Модульність та динамічне завантаження в libsystemd

Como частина ініціативи щодо зменшення залежностей безпосередньо при запуску, libsystemd тепер використовує динамічне завантаження через dlopen() Для таких бібліотек, як libacl, libblkid, libseccomp, libselinux та libmount, система завантажуватиме ці бібліотеки в пам'ять лише тоді, коли їхні конкретні функції потрібні процесу, оптимізуючи використання ресурсів. Крім того, функціональність libcap була інтегрована безпосередньо в libsystemd, що спрощує ланцюжок залежностей.

El Обробка журналів змінила конфігурацію за замовчуванням: режим зберігання журналу (Журнал) змінюється з "автоматичного" на "постійний", незалежно від того, чи існував раніше каталог /var/log/journal.

У галузі мереж та віртуалізації:

  • systemd-networkd та systemd-nspawn: Підтримка правил NAT за допомогою iptables видалена, залишаючи nftables єдиним сумісним варіантом.
  • systemd-вирішено: Тепер це дозволяє використовувати локальні перехоплювачі (hucks) у /run/systemd/resolve.hook/ для втручання в запити на розв'язання імен.
  • systemd-importd: Логіку роботи з TAR-файлами інтегровано безпосередньо. Крім того, тепер і `importd`, і `machined` можна запускати на рівні користувача, що дозволяє керувати образами в локальному каталозі користувача (`~/.local/state/machines/`).

Інші нововведення

API на основі протоколу Varlink отримав покращення, що дозволяють доступ до налаштувань служби та здійснення IPC-викликів. такі як Reload() та Reexecute(). Для системних адміністраторів включення властивості OOMKills до служб буде дуже корисним, оскільки це дозволить їм відстежувати, скільки разів процес завершувався через брак пам'яті безпосередньо з інструментів systemd.

Зрештою, процес завантаження системи стає сучаснішим після видалення підтримки TPM 1.2 у systemd-boot, що зосереджує всі зусилля безпеки на стандарті TPM 2.0.

Якщо вам цікаво дізнатися більше про це, ви можете звернутися до подробиці за наступним посиланням.