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

Материал из Викиновостей, свободного источника новостей

8 июля 2021 года

После трёх месяцев разработки представлен релиз системного менеджера systemd 249. В новом выпуске обеспечена возможность определения пользователей/групп в формате JSON, стабилизирован протокол Journal, упрощена организация загрузки сменяющих друг-друга дисковых разделов, добавлена возможность привязки BPF-программ к сервисам, реализован маппинг идентификаторов пользователей в примонтированных разделах, предложена большая порция новых сетевых настроек и возможностей для запуска контейнеров.

Основные изменения:

  • Документирован протокол Journal, который можно использовать в клиентах вместо протокола syslog для локальной доставки лог-записей. Протокол Journal реализован достаточно давно и уже используется в некоторых клиентских библиотеках, тем не менее его официальная поддержка заявлена только сейчас.
  • В userdb и nss-systemd обеспечено чтение дополнительных определений пользователей, размещённых в каталогах /etc/userdb/, /run/userdb/, /run/host/userdb/ и /usr/lib/userdb/, заданных в формате JSON. Отмечается, что указанная возможность предоставит дополнительный механизм создания пользователей в системе, обеспечив для него полную интеграцию с NSS и /etc/shadow. Поддержка

формата JSON для записей пользователей/групп также позволит прикреплять к пользователям различные параметры управления ресурсами и другие настройки, которые распознают pam_systemd и systemd-logind.

  • В nss-systemd обеспечен синтез записей пользователя/группы в /etc/shadow с использованием хэшированных паролей из systemd-homed.
  • Реализован механизм, упрощающий организацию обновления с использованием заменяющих друг-друга дисковых разделов (один раздел активный, а второй запасной - обновление копируется на запасной раздел, после чего он становится активным). Если в дисковом образе присутствует два корневых или /usr раздела, а udev не определил наличие параметра 'root=' или выполняется обработка дисковых образов, указанных через опцию "--image" в утилитах systemd-nspawn и systemd-dissect, раздел для загрузки может быть вычислен через сравнение меток GPT (подразумевается, что в метке GPT упоминается номер версии содержимого раздела и systemd выберет раздел с более свежими изменениями).
  • В файлы сервисов добавлена настройка BPFProgram, при помощи которой можно организовать загрузку BPF-программ в ядро и управление ими c привязкой к определённым сервисам systemd.
  • В systemd-fstab-generator и systemd-repart добавлена возможность загрузки с дисков, на которых имеется только раздел /usr и нет корневого раздела (корневой раздел будет сгенерирован утилитой systemd-repart во время первой загрузки).
  • В systemd-nspawn опция "--private-user-chown" заменена на более универсальный вариант "--private-user-ownership", который может принимать значения "chown" как эквивалент "--private-user-chown", "off" для отключения старой настройки, "map" для маппинга идентификаторов пользователей в примонтированных файловых системах и "auto" для выбора "map" при наличии необходимой функциональности в ядре (5.12+) или отката на рекурсивный вызов "chown" в противном случае. При помощи маппинга можно сопоставить файлы одного пользователя на примонтированном чужом разделе с другим пользователем в текущей системе, что позволяет упростить совместное использование файлов разными пользователями. В механизме переносимых домашних каталогов systemd-homed маппинг позволит пользователям перемещать свои домашние каталоги на внешние носители и использовать их на разных компьютерах, раскладка идентификаторов пользователей на которых не совпадает.
  • В systemd-nspawn в опции "--private-user" теперь можно использовать значение "identity" для прямого отражения идентификаторов пользователей при настройке пространства имён (user namespace), т.е. UID 0 и UID 1 в контейнере будут отражены в UID 0 и UID 1 на стороне хоста, для сокращения векторов атак (контейнер получит возможности процесса только в своём пространстве имён).
  • В systemd-nspawn добавлена опция "--bind-user" для проброса в контейнер учётной записи пользователя, имеющегося в хост-окружении (в контейнер монтируется домашний каталог, добавляется запись пользователя/группы и выполняется маппинг UID между контейнером и хост-окружением).
  • В systemd-ask-password и systemd-sysusers добавлена поддержка запроса устанавливаемых паролей (passwd.hashed-password.<user> и passwd.plaintext-password.<user>) при помощи появившегося в выпуске systemd 247 механизма безопасной передачи конфиденциальных данных с использованием промежуточных файлов в отдельном каталоге. По умолчанию учётные данные принимаются от процесса с PID1, который получает их, например, от менеджера управления контейнерами, что позволяет организовать настройку пароля пользователя при первой загрузке.
  • В systemd-firstboot добавлена поддержка использования механизма безопасной передачи конфиденциальных данных для запроса различных параметров системы, что может применяться для инициализации системных настроек при первой загрузке образа контейнера, в котором нет необходимых настроек в каталоге /etc.
  • В процессе PID 1 в процессе загрузки обеспечен показ одновременно имени и описания юнита. Изменить вывод можно через параметр "StatusUnitFormat=combined" в system.conf или опцию командной строки ядра "systemd.status-unit-format=combined"
  • В утилиты systemd-machine-id-setup и systemd-repart добавлена опция "--image" для передачи файла с идентификатором машины в дисковых образ или для увеличения размера дискового образа.
  • В файл настройки разделов, используемый утилитой systemd-repart, добавлен параметр MakeDirectories, который можно использовать для создания произвольных каталогов в создаваемой файловой системе, на этапе до отражения в таблице разделов (например, для создания в корневом разделе каталогов для точек монтирования для того, чтобы иметь возможность сразу примонтировать раздел в режиме только для чтения). Для управления GPT-флагами на создаваемых разделах добавлены соответствующие параметры Flags, ReadOnly и NoAuto. В параметре CopyBlocks реализовано значение "auto" для автоматического выбора текущего загрузочного раздела в качестве источника при копировании блоков (например, когда необходимо перенести собственный корневой раздел на новый носитель).
  • В GPT реализован флаг "grow-file-system", аналогичный опции монтирования x-systemd.growfs и обеспечивающий автоматическое расширение размера ФС до границ блочного устройства, если размер ФС меньше раздела. Флаг применим к ФС Ext3, XFS и Btrfs, и может применяться к автоматически определяемым разделам. Флаг по умолчанию включается для доступных на запись разделов, автоматически создаваемых через systemd-repart. В для настройки флага в systemd-repart добавлена опция GrowFileSystem.
  • В файле /etc/os-release реализована поддержка новых переменных IMAGE_VERSION и IMAGE_ID для определения версии и идентификатора атомарно обновляемых образов. Для подстановки указанных значений в различные команды предложены спецификаторы %M и %A.
  • В утилиту portablectl добавлен параметр "--extension" для активации переносимых образов расширения системы (например, через них можно распространять образы с дополнительными сервисами, интегрируемыми в корневой раздел).
  • В утилите systemd-coredump обеспечено извлечение ELF-информации build-id при формировании core-дампа процесса, что может оказаться полезным для определения к какому пакету относится сбойный процесс, если информация об имени и версии deb- или rpm-пакетов была встроена в ELF-файлы.
  • В udev добавлена новая база оборудования для устройств FireWire (IEEE 1394).
  • В udev в схему выбора имён сетевых интерфейсов "net_id" добавлены три изменения, нарушающие обратную совместимость: некорректные символы в именах интерфейсов теперь заменяются на "_"; имена слотов PCI hotplug для систем s390 обрабатываются в форме шестнадцатеричных чисел; разрешено использование до 65535 встроенных PCI-устройств (ранее номера выше 16383 блокировались).
  • В systemd-resolved в список NTA (Negative Trust Anchors) добавлен домен "home.arpa", рекомендованный для локальных домашних сетей, но не применяемый в DNSSEC.
  • В параметре CPUAffinity обеспечен разбор спецификаторов "%".
  • В файлы ".network" добавлен параметр ManageForeignRoutingPolicyRules, который можно использовать для исключения обработки в systemd-networkd сторонних политик маршрутизации.
  • В файлы ".network" добавлен параметр RequiredFamilyForOnline для определения наличия IPv4 или IPv6 адреса как признака нахождения сетевого интерфейса в состоянии "online". В networkctl обеспечено отображение состояния

"online" для каждого линка.

  • В файлы ".network" добавлен параметр OutgoingInterface для определения исходящих интерфейсов при настройке сетевых мостов.
  • В файлы ".network" добавлен параметр Group, позволяющий настроить группу Multipath для записей в секции "[NextHop]".
  • В systemd-network-wait-online добавлены опции "-4" и "-6" для ограничения ожидания соединения только для IPv4 или IPv6.
  • В настройки DHCP-сервера добавлен параметр RelayTarget, переводящий сервер в режим DHCP Ralay. Для дополнительной настройки DHCP-релея предложены опции RelayAgentCircuitId и RelayAgentRemoteId.
  • В DHCP-сервера добавлен параметр ServerAddress, позволяющий явно выставить IP-адрес сервера (иначе адрес выбирается автоматически).
  • В DHCP-сервере реализована секция [DHCPServerStaticLease], позволяющая настроить статические привязки адресов (DHCP leases), указав привязки фиксированных IP к MAC-адресам и наоборот.
  • В настройке RestrictAddressFamilies реализована поддержка значения

"none", при указании которого сервису не будут доступны сокеты любого семейства адресов.

  • В файлах ".network" в секциях [Address], [DHCPv6PrefixDelegation] и [IPv6Prefix] реализована поддержка настройки RouteMetric, позволяющей указать метрику для префикса маршрута, созданного для указанного адреса.
  • В nss-myhostname и systemd-resolved обеспечен синтез DNS-записей c адресами для хостов со специальным именем "_outbound", для которых всегда выдаётся локальный IP, в соответствии с маршрутами по умолчанию, используемый для исходящих соединений.
  • В файлы .network в секцию "[DHCPv4]" добавлена активная по умолчанию настройка RoutesToNTP, предписывающая добавление отдельного маршрута через текущий сетевой интерфейс для доступа к адресу NTP-сервера, полученному для этого интерфейса при помощи DHCP (по аналогии с DNS настройка позволяет гарантировать, что трафик к NTP-серверу будет направлен через интерфейс, через который этот адрес был получен).
  • Добавлены настройки SocketBindAllow и SocketBindDeny для управления доступом к сокетам, привязанным к текущему сервису.
  • Для unit-файлов реализована условная настройка ConditionFirmware, позволяющая создавать проверки, оценивающие функции прошивки, такие как работа на системах UEFI и device.tree, а также проверять совместимость с определёнными возможностями device-tree.
  • Реализована опция ConditionOSRelease для проверки полей в файле /etc/os-release. При определении условий проверки значений полей допустимы операторы "=", "!=", "<", "<=", ">=", ">".
  • В утилите hostnamectl команды вида "get-xyz" и "set-xyz" избавлены от префиксов "get" и "set", например, вместо "hostnamectl get-hostname" и "hostnamectl "set-hostname" можно использовать команду "hostnamectl hostname", присвоение значения в которой определяется указанием дополнительного аргумента ("hostnamectl hostname value"). Поддержка старых команд сохранена для обеспечения совместимости.
  • В утилите systemd-detect-virt и настройке ConditionVirtualization обеспечена корректная идентификация окружений Amazon EC2.
  • Настройка LogLevelMax в unit-файла теперь применяется не только к лог-сообщениям, созданным сервисом, но и сообщениям процесса PID 1, в которых упоминается сервис.
  • Предоставлена возможность включения данных SBAT (UEFI Secure Boot Advanced Targeting) в файлы systemd-boot EFI PE.
  • В /etc/crypttab реализована новы опции "headless" и "password-echo - первая позволяет пропустить все операции, связанные с интерактивным запросом паролей и PIN у пользователя, а вторая даёт возможность настроить метод отображения ввода пароля (ничего не показывать, показывать посимвольно и отображать звёздочки). В systemd-ask-password для аналогичных целей добавлена опция "--echo".
  • В systemd-cryptenroll, systemd-cryptsetup и systemd-homed расширена поддержка разблокирования шифрованных разделов LUKS2 при помощи токенов FIDO2.

Добавлены новые опции "--fido2-with-user-presence", "--fido2-with-user-verification" и "--fido2-with-client-pin" для управления проверкой физического присутствия пользователя, верификацией и необходимости ввода PIN-кода.

  • В systemd-journal-gatewayd добавлены опции "--user", "--system",

"--merge" и "--file", аналогичные таким же опциям journalctl.

  • В дополнение к прямым зависимостям между юнитами, задаваемых через параметры OnFailure и Slice, добавлена поддержка неявных обратных зависимостей OnFailureOf и SliceOf, которые могут быть полезны, например, для определения всех unit-ов, входящих в slice.
  • Добавлены новые типы зависимостей между unit-ами: OnSuccess и OnSuccessOf (противоположность OnFailure, вызываемая при удачном завершении); PropagatesStopTo и StopPropagatedFrom (позволяют распространить событие остановки unit-а на другой unit); Upholds и UpheldBy (альтернатива Restart).
  • В утилите systemd-ask-password появилась опция "--emoji", позволяющая управлять появлением символа замка (🔐) в строке ввода пароля.
  • Добавлена документация по структуре дерева исходных текстов systemd.
  • Для unit-ов добавлено свойство MemoryAvailable, показывающее сколько памяти остаётся у unit-а в запасе до достижения лимита, выставленного через параметры MemoryMax,

MemoryHigh или MemoryAvailable.

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Выпуск системного менеджера systemd 249», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.