След шест месеца разработка беше представена версията на системния мениджър systemd 257. Ключови промени: нови помощни програми systemd-sbsign и systemd-keyutil, поддръжка за MPTCP при активиране през сокет, първоначална поддръжка за изграждане с библиотеката Musl C, updatectl помощна програма за управление на инсталирането на актуализации чрез systemd-sysupdate, възможност за стартиране на услуги в отделни PID пространства от имена, защита срещу случайно изтриване на файлове при използване на “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.
- В модулите ".socket", използвани за осигуряване на работата на механизма за активиране на сокет (стартиране на процеси при опит за установяване на мрежова връзка), е реализирана поддръжка за MPTCP (Multipath TCP), разширение на TCP протокола за организиране на работата на TCP връзка с едновременна доставка на пакети по няколко маршрута през различни мрежови интерфейси, свързани с различни... IP адреси.
- Включва промени, необходими за изграждане с помощта на стандартната Musl C библиотека.
- В различные компоненты systemd, выводящие индикаторы прогресса выполнения операций (например, systemd-repart, systemd-sysupdate/updatectl и importctl), добавлена возможность использования ANSI-последовательностей для анимирования отображения прогресса. Подобные последовательности пока поддерживаются только в Windows Terminal (предполагается, что со временем подобная возможность будет перенесена и в эмуляторы терминалов для Linux).
- Възможностите на компонента systemd-sysupdate са разширени, използвани за автоматично откриване, изтегляне и инсталиране на актуализации с помощта на атомен механизъм за подмяна на дялове, файлове или директории (използват се два независими дяла/файла/директории, едната от които съдържа текущия работен ресурс, а другият инсталира следващата) актуализация, след което разделите/файловете/директорията се разменят). На практика systemd-sysupdate вече се използва в GNOME OS.
В допълнение към процеса systemd-sysupdate е добавена услуга със същото име, която позволява D-Bus да се използва за управление на системни актуализации от непривилегирован потребител. За управление на услугата е включена и нова помощна програма updatectl. Добавен е флаг „--offline“ към systemd-sysupdate, за да забраните изтеглянето на метаданни през мрежата и да използвате само версии, които вече са изтеглени в локалната система. Добавена е поддръжка за изход във формат JSON за всички команди.
- За услугите е внедрено ново свойство „PrivatePIDs“, с което можете да организирате стартирането на процеси с PID 1 (процес на инициализация) в отделно пространство за идентификатор на процеса (пространство от имена на PID). В средата, създадена за стартирания процес, ще бъдат видими само процеси от създаденото за него пространство от имена.
- Добавена е поддръжка за съвпадения без разлика на главни и малки букви към правилата на udev (напр. 'ATTR{foo}==i»abcd»'). С помощта на udev е възможно да се предостави на непривилегировани локални потребители достъп („uaccess“) до устройството /dev/udmabuf, което е необходимо за работа с IPMI камери чрез libcamera. udev осигурява разпознаване на различни хардуерни крипто портфейли с USB интерфейс и настройка на свойството ID_HARDWARE_WALLET за тях, което ви позволява да приложите режима „uaccess“ към тях за достъп от непривилегировани потребители.
- Нови полета RELEASE_TYPE, EXPERIMENT и EXPERIMENT_URL са добавени към файла /etc/os-release. „RELEASE_TYPE“ може да приема стойностите „experimental“, „development“, „stable“ и „lts“, за да отдели стабилните версии от развойните и експерименталните версии. Параметрите EXPERIMENT и EXPERIMENT_URL имат за цел да обяснят същността на експерименталната компилация.
- Помощната програма run0, разработена като заместител на програмата sudo, добави опцията „--shell-prompt-prefix“, която указва низа на префикса за подканата на командната обвивка. По подразбиране емоджито „🦸“ се показва като префикс за визуално подчертаване на повишена сесия.
- В systemd-tmpfiles, за да се избегне случайно изтриване на грешни файлове, опцията "--purge" сега се прилага само за настройки в tmpfiles.d/, които имат изрично зададен флаг "$". Операцията "--purge" също вече изисква указване на поне един файл от директорията tmpfiles.d/. За низове с тип 'L' е добавен флагът '?', когато е посочен, символна връзка ще бъде създадена само ако целевият файл съществува.
- В диспечера на услугите и свързаните помощни програми кодът за проследяване на процеса продължава да се преобразува, за да използва PIDFD вместо PID. PIDFD е свързан с конкретен процес и не се променя, докато PID може да бъде свързан с друг процес, след като текущият процес, свързан с този PID, приключи.
- За услуги вече е възможно да се укаже стойността „debug“ в параметъра „RestartMode“, в който неуспешната услуга ще бъде рестартирана с активиран режим на отстраняване на грешки (настроена е променливата на средата DEBUG_INVOCATION=1), а стойността на LogLevelMax ще бъде временно повишен до нивото на отстраняване на грешки.
- Манипулаторът на PID 1 има способността да зарежда правила за модула IPE (Integrity Policy Enforcement) LSM, които определят политиката за интегритет за цялата система (кои операции са разрешени и как трябва да се проверява автентичността на компонентите).
- Опцията „DeferReactivation“ е добавена към „.timer“ модулните файлове, което ви позволява да пропуснете следващото активиране на таймера, ако услугата все още не е завършила изпълнението си от последното активиране.
- В параметъра на файла на модула PrivateUsers вече е възможно да се посочи стойността „идентичност“, за да се даде възможност за картографиране на потребителски идентификатори при създаване на потребителско пространство от имена.
- Добавена е поддръжка за стойността „disconnected“ към параметъра на файла на модула PrivateTmp, който ще използва отделни екземпляри на tmpfs за директориите /tmp/ и /var/tmp/.
- Поддръжката за нови „частни“ и „строги“ режими е добавена към параметъра на файла на модула ProtectControlGroups, когато е зададено, се създава ново пространство от имена на cgroup за услугата и се монтира cgroupfs. Когато е зададена опцията "strict", cgroupfs се монтира в режим само за четене.
- Параметрите StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory и ConfigurationDirectory предоставят възможност за използване на флага „:ro“ за ограничаване на достъпа до съответните директории до режим само за четене.
- Добавена е поддръжка за стойността „firmware“ към параметъра на командния ред на ядрото „systemd.machine_id“, в който системният идентификатор (ID на машината) ще бъде изчислен въз основа на UUID от SMBIOS/DeviceTree.
- Добавлена поддержка системных вызовов mseal(), listmount() и statmount(), появившихся в недавних выпусках ядра Linux.
- Помощните програми resolvectl, timedatectl и systemd-inhibit вече поддържат интерактивно оторизиране с помощта на Polkit.
- Добавена е възможност за използване на флага „--now“ в командата „reenable“ към помощната програма systemctl.
- Добавена е опция „--json“ към помощната програма systemd-mount за извеждане във формат JSON (например, когато е указано заедно с „--list-devices“, списък с устройства ще бъде изведен във формат JSON).
- Добавени са опции "-l" и "--full" към помощната програма "localectl", за да се деактивира изрязването на дълги редове по време на извеждане.
- Към sleep.conf е добавена опцията HibernateOnACPower, която ви позволява да отложите преминаването към режим на заспиване, докато устройството не бъде изключено от стационарния източник на захранване.
- В systemd-sysusers е добавена поддръжка за модификатора “!” към редовете “u”, с които можете да създавате напълно заключени потребителски акаунти (преди това се използваше задаване на неправилна парола за блокиране на потребител, което напр. не доведе до блокиране по време на удостоверяване на ключ в SSH).
- Systemd-coredump добавя опция "EnterNamespace", която позволява достъп до пространството на точката на монтиране на всички сривани процеси, за да получите техните символи за отстраняване на грешки. На практика опцията може да бъде полезна за организиране на обратно проследяване на основни файлове от приложения, работещи в изолирани контейнери.
- systemd-logind включва обработка на комбинацията Ctrl-Alt-Shift-Esc за изпращане на сигнала org.freedesktop.login1.SecureAttentionKey до компонентите на потребителската среда с искане за показване на защитен диалогов прозорец за влизане. Внедрена е настройката „DesignatedMaintenanceTime“ за автоматично планиране на работа, която да завърши в определено време. По аналогия с поддръжката за DRM и evdev устройства, е добавена поддръжка за конфигуриране на достъп за непривилегировани потребители до hidraw устройства (контролери за игри и джойстици).
- systemd-machined вече поддържа вход за непривилегировани клиенти. виртуални машини и контейнери. Достъпът до функционалността, обработена от systemd, се осигурява чрез Varlink API, в допълнение към D-Bus.
- Нов раздел „[IPv6AddressLabel]“ е добавен към конфигурационния файл networkd.conf за конфигуриране на етикети и префикси за IPv6 адреси
- Добавена е опция „--stdin“ към командата „networkctl edit“ за получаване на съдържанието на файла от стандартен поток. Добавена е поддръжка за редактиране и показване на .netdev файлове чрез указване на мрежов интерфейс към командите „networkctl edit“ и „networkctl cat“. Добавена е опция „--no-ask-password“ за деактивиране на интерактивното оторизиране.
- Добавена е опция „--certificate-source“ към помощните програми ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart и systemd-sbsign за зареждане на X.509 сертификат през доставчика на OpenSSL вместо директно зареждане от файл.
- systemd-boot добавя възможност за използване на бутоните за сила на звука за придвижване нагоре и надолу през менюто за зареждане, което може да бъде полезно на устройства като смартфони. Поддръжка за инсталиране на базата данни на UEFI Secure Boot във формат ESL(db/dbx/…) за systemd-boot е добавена към помощната програма bootctl.
- Добавена е опция „--list-invocation“ към journalctl за показване на списък с извиквания на единици и опция „--invocation“ („-I“) за показване на регистрационни файлове, свързани само с конкретно повикване.
- systemd-nspawn добавя поддръжка за непривилегировано използване на FUSE (файлова система в потребителското пространство) в контейнери. Когато използвате опцията „--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
