Доступний systemd 245 з реалізацією домашніх каталогів, що переносяться.

Після трьох місяців розробки представлений реліз системного менеджера systemd 245. У новому випуску до складу додані нові компоненти systemd-homed і systemd-repart, включена підтримка профілів користувачів у форматі JSON, забезпечена можливість визначення просторів імен в systemd-journald, додана підтримка механізму «pidfd». Повністю перероблений сайт проекту, на якому зібрано більшу частину доступної документації та запропоновано новий логотип.

Доступний systemd 245 з реалізацією домашніх каталогів, що переносяться.

Основні зміни:

  • Доданий сервіс systemd-homed, що забезпечує управління переносними домашніми каталогами, що поставляються у формі файлу-образу, що монтується, дані в якому зашифровані. Systemd-homed дозволяє створювати самодостатні оточення для даних користувача, які можна переносити між різними системами, не переймаючись синхронізацією ідентифікаторів та конфіденційністю. Параметри облікових даних користувача прив'язані до домашнього каталогу, а не до системних налаштувань – замість /etc/passwd, /etc/group та /etc/shadow використовується профіль у форматі JSON. Детальніше див. минулому анонсі systemd-homed.
  • Доданий супутній systemd-homed компонент «userdb» («systemd-userdb»), який транслює облікові записи UNIX/glibc NSS у записі JSON та надає уніфікований API Varlink для запиту та перебору записів. У прив'язаному до домашнього каталогу профілі JSON вказані параметри, необхідні для роботи користувача, включаючи дані про ім'я, хеше пароля, ключі для шифрування, квоти і ресурси. Профіль може бути засвідчений цифровим підписом, який зберігається на зовнішньому токені Yubikey. Для керування профілями запропонована утиліта "userdbctl". Підтримка профілів у форматі JSON додана в різні компоненти systemd, включаючи systemd-logind і pam-systemd, що дозволяють користувачам переносних каталогів організувати автентифікацію, вхід, налаштування змінних оточення, створення сеансу, встановлення лімітів тощо. Надалі очікується появи можливості генерації JSON профілів фреймворком sssd із збереженням налаштувань користувачів у LDAP.
  • Додано нову утиліту "systemd-repart", призначену для перерозбивки таблиць дискових розділів у форматі GPT. Структура розділів визначається у декларативній формі через файли, що описують які розділи мають або можуть існувати. При кожному завантаженні фактична таблиця розділів порівнюється з цими файлами, після чого додаються розділи, що відсутні, або, якщо певний в налаштуваннях відносний або абсолютний розмір не збігається, збільшується розмір існуючих. Допускаються лише інкрементальні зміни, тобто. видалення та скорочення розміру неможливе, розділи можуть бути лише додані та збільшені.
    Утиліта в основі розрахована на запуск з initrd і автоматично визначає диск, на якому розміщений кореневий розділ, що не вимагає додаткової конфігурації, крім файлів з визначенням змін.

    На практиці systemd-repart може виявитися корисним для образів операційної системи, які спочатку можуть поставлятися в мінімальному вигляді, а після першого завантаження розширюватися до розміру наявного блокового пристрою або доповнюватися додатковими розділами (наприклад, кореневий розділ може розширюватися для охоплення всього диска або після першого завантаження створюватись розділ підкачки або /home). Іншим застосуванням можуть стати конфігурації з двома розділами, що змінюють один одного — спочатку може поставлятися тільки перший розділ, а другий створюватися при першому завантаженні.

  • З'явилася можливість запуску кількох екземплярів systemd-journald, кожен із яких веде логи у своєму просторі імен. Крім основного systemd-journald.service у каталозі .service запропонований шаблон для створення додаткових екземплярів, прив'язаних до своїх просторів імен за допомогою директиви LogNamespace. Кожен простір імен логів обслуговується окремим фоновим процесом зі своїм набором налаштувань та лімітів. Запропонована можливість може бути корисною для балансування навантаження при великому обсязі логів або посилення ізоляції додатків. У journalctl додано опцію «—namespace», що обмежує запит лише вказаним простором імен.
  • У systemd-udevd та інші компоненти systemd додано підтримку механізму призначення альтернативних імен мережевим інтерфейсам, що дозволяє одночасно застосовувати для одного інтерфейсу відразу кілька імен. Розмір імені може сягати 128 символів (раніше ім'я мережного інтерфейсу було обмежено 16 символами). За промовчанням systemd-udevd тепер призначає кожному мережному інтерфейсу всі варіанти імен, що генеруються підтримуваними схемами найменування. Цю поведінку можна змінити через нові установки AlternativeName і AlternativeNamesPolicy у файлах .link. У systemd-nspawn реалізована генерація альтернативних імен з повним ім'ям контейнера для створюваних на стороні хоста veth-лінків.
  • В API sd-event.h додано підтримку підсистеми ядра Linux «pidfd» для обробки ситуації з повторним використанням PID (pidfd зв'язується з конкретним процесом і не змінюється, в той час як PID може бути прив'язаний до іншого процесу після завершення поточного процесу, асоційованого з цим PID). Всі компоненти systemd, за винятком PID 1, переведені на використання pidfds, якщо підсистема підтримується поточним ядром.
  • У systemd-logind через PolicyKit забезпечено перевірку доступу до операції зміни віртуального терміналу. За замовчуванням повноваження на зміну активного терміналу надаються лише користувачам, які хоч раз ініціювали сеанс на локальному віртуальному терміналі.
  • Для спрощення створення образів initrd з systemd обробник PID 1 тепер визначає факт використання в initrd і в цьому випадку автоматично завантажує initrd.target замість default.target. При подібному підході образи initrd та основної системи можуть відрізнятися лише наявністю файлу /etc/initrd-release.
  • Додано новий параметр командного рядка ядра - "systemd.cpu_affinity", еквівалентний опції CPUAffinity в /etc/systemd/system.conf і дозволяє налаштувати маску прив'язки до CPU для PID 1 та інших процесів.
  • Забезпечено перезавантаження бази SELinux разом із перезапуском PID 1 через команди, подібні до «systemctl daemon-reload».
  • У обробник PID 1 додано налаштування «systemd.show-status=error», під час встановлення якого на консоль виводяться лише повідомлення про помилки та суттєві затримки при завантаженні.
  • У systemd-sysusers додано підтримку створення користувачів з ім'ям основної групи, що відрізняється від імені користувача.
  • У systemd-growfs через опцію монтування x-systemd.growfs в /etc/fstab реалізована підтримка розширення розділів XFS на додаток до розширення розділів з Ext4 і Btrfs.
  • У /etc/crypttab додано опцію x-initrd.attach для визначення шифрованого розділу, вже розблокованого на стадії initrd.
  • У systemd-cryptsetup додано підтримку (опція pkcs11-uri в /etc/crypttab) розблокування шифрованих розділів за допомогою смарткарт PKCS#11, наприклад, для прикріплення шифрування розділів до брелоків YubiKeys.
  • У /etc/fstab додані нові опції монтування «x-systemd.required-by» та «x-systemd.wanted-by» для явного налаштування unit-ів, що визначають операції монтування, що викликаються замість local-fs.target та remote-fs .target.
  • Додано нову опцію sandbox-ізоляції сервісів — ProtectClock, що обмежує запис у системний годинник (доступ блокується на рівні /dev/rtc, системних викликів та дозволів CAP_SYS_TIME/CAP_WAKE_ALARM).
  • У специфікацію Discoverable Partitions та systemd-gpt-auto-generator додано визначення розділів
    /var та /var/tmp.

  • У "systemctl list-unit-files" при відображенні списку unit-ів з'явився новий стовпець, що відображає стан включення, що пропонується в налаштуваннях виробника для даного типу unit-ів.
  • У "systemctl" додана опція "-with-dependencies", при установці якої команди типу "systemctl status" і "systemctl cat" будуть виводити не тільки всі відповідні unit-и, але і unit-и від яких вони залежать.
  • У systemd-networkd в конфігурації qdisc додано можливість налаштування параметрів TBF (Token Bucket Filter), SFQ (Stochastic Fairness Queuing), CoDel (Controlled-Delay Active Queue Management) та FQ (Fair Queue).
  • У systemd-networkd додано підтримку мережевих пристроїв IFB (Intermediate Functional Block).
  • У systemd-networkd у секції [Route] реалізовано параметр MultiPathRoute для налаштування multi-path маршрутів.
  • У systemd-networkd для клієнта DHCPv4 додано опцію SendDecline, при вказівці якої після прийому DHCP-відповіді з адресою виконується перевірка дублювання адреси та у разі виявлення конфлікту адрес видану адресу відхиляється. Для клієнта DHCPv4 також додано опцію RouteMTUBytes, що дозволяє визначити розмір MTU для маршрутів, що генеруються з прив'язок IP-адрес (leases).
  • Налаштування PrefixRoute у секції "[Address]" файлів ".network" оголошено застарілою. На зміну їй прийшла настройка "AddPrefixRoute", що має зворотний зміст.
  • У файлах .network у налаштування Gateway з секції «[Route]» додано підтримку нового значення «_dhcp», при установці якого статичний маршрут вибирається на основі шлюзу, налаштованого через DHCP.
  • У файлах .network у секції «[RoutingPolicyRule]» з'явилися налаштування
    User та SuppressPrefixLength для завдання маршрутизації від джерела (source routing) на основі діапазонів UID та розміру префікса.

  • У networkctl у команді «status» забезпечено можливість відображення логів у прив'язці до кожного мережного інтерфейсу.
  • У systemd-networkd-wait-online додана підтримка завдання максимального часу очікування переходу інтерфейсу в робочий стан та очікування зникнення інтерфейсу.
  • Припинено обробку файлів .link та .network з порожньою або закоментованою секцією «[Match]».
  • У файлах.
  • Секцію «[TrafficControlQueueingDiscipline]» у файлах .network перейменовано на «[NetworkEmulator]», а з назв пов'язаних налаштувань прибрано префікс «NetworkEmulator».
  • У systemd-resolved для DNS-over-TLS додано підтримку перевірки SNI.

Джерело: opennet.ru

Додати коментар або відгук