Випуск системного менеджера systemd 257

Після півроку розробки представлений реліз системного менеджера systemd 257. Ключові зміни: нові утиліти systemd-sbsign і systemd-keyutil, підтримка MPTCP при активації по сокету, початкова підтримка зборки з Си-бібліотекою Musl, утиліта updatectl для керування установкою оновлень через system можливість запуску сервісів у окремих PID namespace, захист від випадкового видалення файлів під час використання "systemd-tmpfiles -purge".

Серед змін у новому випуску:

  • Додано нову утиліту systemd-sbsign для засвідчення цифровим підписом виконуваних файлів у форматі PE (Portable Executable), призначених для використання під час завантаження в режимі EFI Secure Boot. Для формування підпису можуть використовуватися движки та провайдери, що надаються бібліотекою OpenSSL. Systemd-sbsign може застосовуватися як альтернатива додаткам sbsigntool і pesign в утиліті ukify при формуванні універсальних образів ядра UKI (Unified Kernel Image), що об'єднують в одному файлі завантажувач для UEFI (UEFI boot stub), образ ядра Linux і системне оточення initrd, що завантажується в пам'ять.
  • Додано нову утиліту systemd-keyutil, що реалізує різні операції над закритими ключами та сертифікатами X.509. Наприклад, systemd-keyutil може використовуватися для перевірки можливості завантаження закритих ключів та сертифікатів, а також вилучення з них відкритих ключів у форматі PEM.
  • У unit-ах ".socket", що використовуються для забезпечення роботи механізму активації по сокету (запуск процесів при спробі встановлення мережного з'єднання), реалізована підтримка MPTCP (Multipath TCP), розширення протоколу TCP для організації роботи TCP-з'єднання з доставкою пакетів одночасно по декількох маршрутах через різні мережеві інтерфейси, прив'язані до Моя IP адреса.
  • До складу включені зміни, необхідні для збирання з використанням стандартної Си-бібліотеки Musl.
  • До різних компонентів systemd, що виводять індикатори прогресу виконання операцій (наприклад, systemd-repart, systemd-sysupdate/updatectl і importctl), додано можливість використання ANSI-послідовностей для анімації відображення прогресу. Подібні послідовності поки що підтримуються тільки в Windows Terminal (передбачається, що згодом подібна можливість буде перенесена і в емулятори терміналів для Linux).
  • Розширено можливості компонента systemd-sysupdate, що застосовується для автоматичного визначення, завантаження та встановлення оновлень з використанням атомарного механізму заміни розділів, файлів або каталогів (використовуються два незалежні розділи/файли/каталоги, на одному з яких знаходиться поточний працюючий ресурс, а на іншому встановлюється чергове оновлення, після чого розділи/файли/каталоги змінюються місцями). На практиці, systemd-sysupdate вже застосовується у GNOME OS.

    На додаток до процесу systemd-sysupdate доданий однойменний сервіс, що дозволяє використовувати D-Bus для керування оновленням системи непривілейованим користувачем. Для управління сервісом до складу також включена нова утиліта updatectl. У systemd-sysupdate доданий прапор «—offline» для заборони завантаження метаданих через мережу та використання тільки вже завантажених на локальну систему версій. Для всіх команд додано підтримку виводу у форматі JSON.

  • Для сервісів реалізовано нове властивість «PrivatePIDs», з якого можна організувати запуск процесів з PID 1 (init-процес) в окремому просторі ідентифікаторів процесів (PID namespace). У оточенні, що створюється для процесу, що запускається, будуть видно тільки процеси зі створеного для нього простору імен.
  • У правила udev додано підтримку зіставлень без урахування регістру символів (наприклад, 'ATTR{foo}==i»abcd»'). Через udev реалізовано надання непривілейованим локальним користувачам доступу («uaccess») до пристрою /dev/udmabuf, який потрібний для роботи з IPMI-камерами через libcamera. У udev забезпечено розпізнавання різних апаратних криптогаманців з інтерфейсом USB та виставлення для них властивості ID_HARDWARE_WALLET, що дозволяє застосувати до них режим uaccess для доступу непривілейованих користувачів.
  • У файл /etc/os-release додані нові поля RELEASE_TYPE, EXPERIMENT та EXPERIMENT_URL. «RELEASE_TYPE» може приймати значення «experimental», «development», «stable» і «lts» для відокремлення стабільних версій від розробок та експериментальних збірок. Параметри EXPERIMENT та EXPERIMENT_URL призначені для пояснення суті експериментального складання.
  • В утиліту run0, що розвивається як заміна програми sudo, додана опція «-shell-prompt-prefix», що визначає рядок-префікс запрошення командної оболонки. За замовчуванням як префікс виводиться emoji «🦸» для візуального виділення сеансу з підвищеними привілеями.
  • У systemd-tmpfiles, щоб уникнути помилкового видалення не тих файлів, опція «—purge» тепер застосовується тільки до налаштувань у tmpfiles.d/, для яких явно виставлений прапор «$». Для виконання операції "-purge" також тепер потрібно вказівки як мінімум одного файлу з каталогу tmpfiles.d/. Для рядків з типом 'L' додано прапор '?', при вказівці якого символічне посилання буде створено лише за наявності цільового файлу.
  • У сервісному менеджері та супутніх утилітах продовжено переклад коду відстеження процесів на використання PIDFD замість PID.
  • Для сервісів реалізована можливість вказівки в параметрі «RestartMode» значення «debug», при якому перезапуск збійного сервісу буде виконано з включенням режиму налагодження (виставляється змінна оточення DEBUG_INVOCATION=1), а значення LogLevelMax буде тимчасово підвищено до рівня налагодження.
  • В обробнику PID 1 реалізована можливість завантаження правил для LSM-модуля IPE (Integrity Policy Enforcement), що визначають політику забезпечення цілісності для всієї системи (які операції допустимі і яким чином слід верифіціроваті справжність компонентів).
  • У unit-файли ".timer" додана опція "DeferReactivation", що дозволяє пропустити чергову активацію за таймером, якщо сервіс ще не завершив своє виконання з часу минулої активації.
  • У параметрі unit-файлів PrivateUsers реалізована можливість вказівки значення «identity» для включення карти ідентифікаторів користувачів при створенні простору імен (user namespace).
  • У параметр unit-файлів PrivateTmp додано підтримку значення «disconnected», при якому для каталогів /tmp/ та /var/tmp/ будуть задіяні окремі екземпляри tmpfs.
  • У параметр unit-файлів ProtectControlGroups додано підтримку нових режимів «private» та «strict», при виставленні яких для сервісу створюється новий простір імен cgroup (cgroup namespace) і монтується cgroupfs. При виставленні опції "strict" монтування cgroupfs здійснюється в режимі лише для читання.
  • У параметрах StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory та ConfigurationDirectory надано можливість використання прапора ':ro' для обмеження доступу до відповідних каталогів режимом лише для читання.
  • У параметр командного рядка ядра "systemd.machine_id" додано підтримку значення "firmware", при якому ідентифікатор системи (machine ID) буде обчислений на основі UUID з SMBIOS/DeviceTree.
  • Додано підтримку системних викликів mseal(), listmount() і statmount(), що з'явилися в недавніх випусках ядра Linux.
  • У утиліти resolvectl, timedatectl і systemd-inhibit додана підтримка інтерактивної авторизації за допомогою Polkit.
  • В утиліту systemctl додано можливість використання прапора "-now" в команді "reenable".
  • В утиліту systemd-mount додано опцію «—json» для виведення у форматі JSON (наприклад, при вказівці разом із «—list-devices» у форматі JSON буде виведено список пристроїв).
  • В утиліту "localectl" додані опції "-l" і "-full" для відключення обрізки довгих рядків при виведенні.
  • У sleep.conf додано опцію HibernateOnACPower, що дозволяє відкласти перемикання в сплячий режим до відключення пристрою від стаціонарного джерела живлення.
  • У systemd-sysusers у рядки «u» додано підтримку модифікатора «!», за допомогою якого можна створювати повністю заблоковані облікові записи користувачів (раніше для блокування користувача використовувалася установка некоректного пароля, що, наприклад, не призводило до блокування при аутентифікації за ключами в SSH ).
  • У systemd-coredump додано опцію «EnterNamespace», що надає доступ до простору точок монтування будь-яких аварійно завершених процесів для отримання їх налагоджувальних символів. На практиці опція може бути корисною для організації зворотного трасування (backtrace) core-файлів від програм, що запускаються в ізольованих контейнерах.
  • У systemd-logind включена обробка комбінації Ctrl-Alt-Shift-Esc для надсилання компонентам користувача оточення сигналу org.freedesktop.login1.SecureAttentionKey з запитом виведення діалогу безпечного входу в систему. Реалізовано налаштування "DesignatedMaintenanceTime" для автоматичного планування завершення роботи в заданий час. За аналогією з підтримкою пристроїв DRM та evdev додано підтримку налаштування доступу непривілейованих користувачів до пристроїв hidraw (ігрові контролери та джойстики).
  • У systemd-machined додано підтримку реєстрації непривілейованими клієнтами віртуальних машин та контейнерів. Надано доступ до функціональності systemd-machined через API Varlink, крім D-Bus.
  • У файл конфігурації networkd.conf додано нову секцію «[IPv6AddressLabel]» для налаштування міток та префіксів для адрес IPv6
  • До команди 'networkctl edit' додано опцію «—stdin» для отримання вмісту файлу зі стандартного потоку. У команди 'networkctl edit' та 'networkctl cat' додано підтримку редагування та відображення файлів .netdev через вказівку мережного інтерфейсу. Додано опцію «—no-ask-password» для вимкнення інтерактивної авторизації.
  • В утиліти ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart, і systemd-sbsign додана опція «certificate-source» для завантаження сертифіката X.509 через провайдер OpenSSL замість прямого завантаження з файлу.
  • У systemd-boot додана можливість використання кнопок керування гучністю для переміщення вгору і вниз за меню завантаження, що може бути корисним на таких пристроях, як смартфони. В утиліту bootctl додано підтримку встановлення БД UEFI Secure Boot у форматі ESL(db/dbx/…) для systemd-boot.
  • У journalctl додано опцію «—list-invocation» для показу списку викликів unit-ів та опцію «—invocation» («-I») для показу логів, пов'язаних лише з певним викликом.
  • У systemd-nspawn додано підтримку непривілейованого використання FUSE (Filesystem in Userspace) у контейнерах. При використанні опції «-bind-user» забезпечено прокидання в контейнер SSH-ключів користувача, необхідних для доступу до SSH.
  • У libsystemd доданий новий програмний інтерфейс sd-json, що використовує формат JSON, а також інтерфейс sd-varlink, що використовує IPC Varlink.
  • Рекомендовану базову версію ядра підвищено до випуску 5.4, сформованого в 2019 році. Наступного року планують припинити підтримку більш старих ядер і відзначити випуск 5.4 як мінімально підтримувану базову версію.
  • Підтримка cgroups v1 визнана застарілою та за замовчуванням відключена (для включення в командному рядку ядра необхідно вказати SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 на додаток до активації у налаштуваннях systemd). У наступному випуску systemd 258 планується повністю видалити код, пов'язаний із cgroups v1. У версії systemd 258 також заплановано видалення підтримки скриптів сервісів System V.

Джерело: opennet.ru

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster