После трёх месяцев разработки доступен релиз системного менеджера systemd 259. Ключевые изменения: поддержка стандартной библиотеки Musl, команда «run0 —empower» для выполнения привилегированных действий без смены UID, динамическая загрузка сторонних библиотек, востребованных в libsystemd, игнорирование файлов конфигурации через добавление к имени «.ignore».
Среди изменений в новом выпуске:
- Добавлена частичная поддержка стандартной Си-библиотеки
Musl, включаемая через выставление значения «musl» в опции «libc» в сборочной системе Meson. Из-за того, что библиотека Musl не предоставляет функциональность NSS, при сборке systemd с Musl недоступны компоненты nss-systemd, nss-resolve, systemd-homed, systemd-nsresourced, systemd-userdbd, а также параметр DynamicUser и возможность непривилегированного запуска systemd-nspawn. Разработчики systemd пока не гарантируют, что поддержка Musl останется в будущих выпусках. Решение будет зависеть от успешности развития прослойки, реализующей дополнительную функциональность поверх Musl, а также востребованности проекта и сообщений о специфичных для Musl ошибках. - В утилиту run0, преподносимую как безопасная замена программы sudo, работающая поверх systemd-run, добавлена опция «—empower», позволяющая запустить новый сеанс с повышенными привилегиями, не переключаясь на пользователя root. Выполнение привилегированных действий без смены UID организовано через выставление capabilities-флагов, таких как CAP_SYS_ADMIN, достаточных для обращения к большинству привилегированных системных вызовов. Запускаемые процессы также помещаются в отдельную группу «empower», для которой предоставлен доступ к большинству действий Polkit.
- Решено удалить в следующем выпуске поддержку скриптов сервисов в формате System V. К удалению намечены компоненты systemd-sysv-install, systemd-rc-local-generator и systemd-sysv-generator. В следующем релизе также намечено повышение требований к минимальным версиям: ядро Linux 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0, libxcrypt 4.4.0, util-linux 2.37, elfutils 0.177, cryptsetup 2.4.0, libseccomp 2.4.0.
- В рамках инициативы по сокращению зависимостей у libsystemd реализована динамическая загрузка библиотек libacl, libblkid, libseccomp, libselinux, libmount при помощи вызова dlopen() в ситуациях, когда их функции действительно необходимы. Через dlopen() также реализована работа с подсистемой аудита Linux и с PAM. Функциональность, ранее вызываемая через библиотеку-прослойку libcap, встроена в libsystemd.
- В systemd-resolved добавлена возможность прикрепления локальных обработчиков, вызываемых при каждом запросе резолвинга локальных имён. Обработчики размещаются в каталоге /run/systemd/resolve.hook/.
- В БД с данными о пользователях добавлено поле UUID, а в утилиту userdbctl добавлена опция «—uuid» для поиска по UUID.
- Обеспечено игнорирование файлов конфигурации с именами, оканчивающимися на «.ignore».
- В systemd-importd реализована встроенная логика работы с TAR-архивами, использующая libarchive место вызова утилиты GNU tar. Реализована возможность запуска systemd-machined и systemd-importd в привязке к пользователям, а не на системном уровне, с загрузкой системных образов в ~/.local/state/machines/. Для выбора режима работы в утилиту importctl добавлены опции «—user» и «—system».
- Режим хранения журнала по умолчанию изменён с ‘auto’ на ‘persistent’ (ранее режим зависел от наличия каталога /var/log/journal).
- В systemd-networkd и systemd-nspawn прекращена поддержка создания правил трансляции адресов (NAT) через iptables/libiptc. Оставлена только поддержка nftables.
- В systemd-boot и systemd-stub прекращена поддержка TPM 1.2 (оставлена поддержка TPM 2.0).
- В systemd-machined по умолчанию обеспечено монтирование «скрытых» дисковых образов, имя которых начинается с точки, в режиме только для чтения.
- Расширен API на базе протокола Varlink, который теперь может применяться для доступа к настройкам сервисов. Реализованы IPC-вызовы Reload() и Reexecute(). Добавлены вызовы для доступа к функциональности и настройкам systemd-repart, systemd-resolved и systemd-networkd.
- Добавлена настройка ExecReloadPost, позволяющая организовать запуск команд после перезагрузки конфигурации сервиса.
- Для сервисов реализованы свойства OOMKills и ManagedOOMKills, содержащие число процессов, принудительно завершённых ядром или systemd-oomd из-за нехватки памяти.
- Для временных сервисов добавлено свойство RootDirectoryFileDescriptor, определяющее файловый дескриптор корневого каталога.
- Добавлена настройка UserNamespacePath, позволяющая привязать unit к пространству идентификаторов пользователей (user namespace) через указание пути в псевдо-ФС /proc, по аналогии с настройками IPCNamespacePath и NetworkNamespacePath. В systemd-nspawn для указания сетевого пространства имён в секцию [Network] файлов .nspawn добавлена настройка NamespacePath.
- В systemd-sysext и systemd-confext реализована поддержка отдельных файлов конфигурации /etc/systemd/systemd-sysext.conf и /etc/systemd/systemd-confext.conf. Добавлена возможность использования переменной окружения SYSTEMD_SYSEXT_OVERLAYFS_MOUNT_OPTIONS и $SYSTEMD_CONFEXT_OVERLAYFS_MOUNT_OPTIONS для настройки параметров монтирования Overlayfs.
- В systemd-udevd добавлена настройка OPTIONS=»dump-json» для вывода состояния текущего события в формате JSON. В функции net_id реализована генерация предсказуемых имён беспроводных сетевых интерфейсов на системах с DeviceTree. Обеспечена генерация символических ссылок /dev/gpio/by-id/… для устройств GPIO.
- В команду «homectl update» добавлена возможность использования опции «—recovery-key» для добавления запасных ключей к существующей учётной записи пользователя (ранее подобные ключи могли добавляться только во время создания пользователя).
- В systemd-homed добавлены опции «—prompt-shell» и «—prompt-groups» для интерактивного выбора командной оболочки и группы во время первой загрузки с использованием сервиса systemd-homed-firstboot.service.
В systemd-firstboot добавлена опция «—prompt-keymap-auto» для запроса раскладки клавиатуры при работе через локальную консоль во время первой загрузки. - В systemd-boot добавлена возможность выставления уровня детализации логов через параметр log-level в loader.conf или SMBIOS-поле io.systemd.boot.loglevel.
- В systemd-networkd для DHCP-сервера добавлены опции EmitDomain и
Domain, а также реализован обработчик для определения отдаваемых через DHCP имён хостов через DNS-резолвинг. - В systemd-run добавлена опция «—root-directory» для запуска сервиса в указанном корневом каталоге. В systemd-run и run0 добавлена опция «—same-root-dir» («-R») для запуска сервиса в том же корневом каталоге, что и у запускающего.
- В systemd-modules-load реализовано распараллеливание загрузки модулей ядра.
- В systemd-integrity-setup добавлена поддержка алгоритмов HMAC-SHA256, PHMAC-SHA256 и PHMAC-SHA512.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64450
