Доступен 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]».
  • В файлах .link и .network в секции «[Match]» появилась настройка «PermanentMACAddress» для проверки постоянного MAC-адреса устройств в случае использования сгенерированного случайного MAC.
  • Секция «[TrafficControlQueueingDiscipline]» в файлах .network переименована в «[NetworkEmulator]», а из названий связанных настроек убран префикс «NetworkEmulator».
  • В systemd-resolved для DNS-over-TLS добавлена поддержка проверки SNI.

Источник: opennet.ru

Добавить комментарий