Релиз systemd 232

Состоялся выпуск системного менеджера systemd 232. Из новшеств можно отметить новую утилиту для монтирования дисковых разделов, дополнительные опции для усиления безопасности сервисов, поддержку динамического создания пользователей для сервисов, возможность запуска сервисов в отдельных пространствах имён идентификаторов пользователей, добавление идентификаторов запуска сервисов.

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

  • В состав включена новая утилита systemd-mount, которая позиционируется не как замена традиционной системной команды mount, а как специфичная для systemd надстройка для манипуляций точками монтирования и автомонтирования на уровне генерации unit-файлов, что позволяет интегрировать операции монтирования в цепочку зависимостей systemd. При этом сами операции монтирования по-прежнему выполняются через вызов утилиты mount из пакета util-linux. Вместо мгновенного выполнения монтирования после запуска команды, systemd-mount добавляет задание в очередь сервисного менеджера и позволяет связывать монтирование зависимостями, например, обеспечить корректный порядок добавления разделов с учётом вложенных точек монтирования или под контролем systemd запустить инструмент для проверки целостности ФС.

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

  • В сервисном менеджере реализована концепция идентификаторов запуска — при каждом запуске сервиса, ему присваивается уникальный идентификатор (128-разрядный случайный UUID), который затем отображается в логах и позволяет отследить всю активность для данного экземпляра сервиса и отделить записи от активных сервисов от данных, не привязанных к рабочим сервисам;
  • Добавлена возможность динамического создания пользователей на время работы сервиса. При указании «DynamicUser=yes» на время работы сервиса виртуально создаётся новый пользователь с идентификатором из диапазона 61184…65519, который становится видим в системе благодаря NSS-модулю nss-systemd.so, который следует добавить в /etc/nsswitch.conf. Для очистки выделенных сервису ресурсов после завершения работы необходимо использовать опции «PrivateTmp=», «RemoveIPC=», «ProtectHome=read-only» и «ProtectSystem=strict»;
  • Кроме динамического создания пользователей в nss-systemd также обеспечено определение пользователей root и nobody, что позволяет обойтись без файлов /etc/passwd и /etc/group в chroot-окружениях или урезанных контейнерах;
  • Добавлена опция «ProtectKernelModules=» отключающая инициирование сервисом загрузки или выгрузки модулей ядра и закрывающая доступ сервиса к /usr/lib/modules;
  • Реализована возможность перемонтирования файловой системы для сервиса в режиме только для чтения (за исключением директорий /dev, /proc и /sys). Режим включается через указание значения «strict» в опции «ProtectSystem=»;
  • Добавлена опция «ProtectKernelTunables=», запрещающая изменение сервисом файлов в директориях /sys и /proc, которые перемонтируются в режиме только для чтения;
  • Добавлена опция «ProtectControlGroups=» для отключения возможности записи в /sys/fs/cgroup;
  • Проведена работа по усилению безопасности различных сервисов при помощи опций «ProtectKernelTunables=yes», «ProtectControlGroups=yes» и «RestrictAddressFamilies=»;
  • Добавлена опция «PrivateUsers=» реализующая возможность запуска сервисов в собственных пространствах имён идентификаторов пользователей, в которых только root, nobody и uid/gid самого сервиса сопоставлены с реальными идентификаторами, а остальные отражены на идентификатор nobody;
  • В процесс systemd-nspawn добавлена поддержка пространства имён cgroup, который при запуске контейнеров теперь создаёт отдельную иерархию cgroup. Вернуться к старому поведению можно при помощи переменной окружения $SYSTEMD_NSPAWN_USE_CGNS;
  • Добавлена опция «MemorySwapMax=» для ограничения максимального размера подкачки при использовании унифицированной иерархии cgroup;
  • В унифицированной иерархии cgroup представлена поддержка контроллера CPU (требует применения ядра с патчами), для управления которой добавлены опции «CPUWeight=», «CPUStartupWeight=» и «CPUAccounting=»;
  • Обеспечено определение системы виртуализации bhyve, используемой во FreeBSD;
  • В /etc/systemd/system.conf добавлена опция «CtrlAltDelBurstAction=» для настройки поведения при нажатии комбинации Ctrl-Alt-Del более 7 раз за 2 секунды;
  • Поддержка динамического создания юнитов для монтирования и автомонтирования разделов (для создания теперь можно использовать bus API без размещения unit-файлов в ФС);
  • Обеспечена возможность использования директории /efi в качестве точки монтирования для загрузочного раздела EFI, если данная директория создана и в fstab явно не определена другая точка монтирования;
  • Добавлены два новых целевых юнита для пользовательских сеансов: graphical-session.target, активируемый при работе любого графического сеанса (X, Wayland и т.п.), и graphical-session-pre.target, для запуска сервисов сопровождения графического сеанса, например, агентов SSH/GPG;
  • Значительно переработан код инициализации виртуальных консолей, обеспечено копирование настроек шрифтов и раскладок клавиатуры для всех виртуальных консолей;
  • В systemd-journal-gatewayd добавлена опция »--directory=» для обработки файлов из отдельной директории;
  • В БД с параметрами оборудования в дополнение к ID_INPUT_MOUSE добавлена поддержка ID_INPUT_TRACKBALL для отдельной идентификации трекпадов;
  • В systemd-run и systemctl добавлена опция »--wait», которая запускает команду только после завершения работы указанного сервиса или юнита;
  • В «machinectl list» в списке работающих контейнеров обеспечен показ IP-адресов и информации о выпуске ОС;
  • В systemd-nspawn при использовании образов с таблицей разделов GPT обеспечено монтирование ESP в директории /boot или /efi в окружении контейнера, используя тот же набор правил, что применяются для PID 1 на стороне хост-системы, что позволяет корректно использовать для обеспечения загрузки контейнере такие утилиты, как «bootctl»;
  • В systemd-nspawn обеспечено bind-монтирование файла /etc/resolv.conf в окружение контейнеров, т.е. все системные изменения /etc/resolv.conf теперь сразу подхватываются в изолированных окружениях;
  • Добавлена возможность ограничения максимального числа экземпляров сервисов в привязке к IP, запускаемых при активации по обращению к сокету. В дополнение к «MaxConnections=» добавлена опция «MaxConnectionsPerSource=»;
  • В systemd-networkd добавлена поддержка настройки сетевого интерфейса vcan («Virtual CAN»);
  • В .link-файлы в секции »[Link]» добавлены опции UDPSegmentationOffload=, TCPSegmentationOffload=, GenericSegmentationOffload=, GenericReceiveOffload= и LargeReceiveOffload= для включения/выключения для сетевых интерфейсов UDP Segmentation Offload, TCP Segmentation Offload, Generic Segmentation Offload, Generic Receive Offload и Large Receive Offload;
  • В .netdev-файлы в секции »[Bridge]» добавлены опции STP=, Priority=, AgeingTimeSec= и DefaultPVID= для включения/выключения протокола STP (Spanning Tree Protocol), приоритета, времени устаревания и идентификатора порта VLAN;
  • В .netdev-файлы в секцию »[Link]» добавлена опция ARP=no для отключения протокола ARP;
  • Для кода, вызываемого из команд «ExecStop=» и «ExecStopPost=», добавлены переменные окружения $SERVICE_RESULT, $EXIT_CODE и $EXIT_STATUS, отражающие информацию о завершении сервисов;
  • Объявлена устаревшей настройка SplitMode=login в Journald;
  • В файлах .netdev добавлены опции «RemoteChecksumTx=» и «RemoteChecksumRx=» для управления логикой удалённого расчёта контрольных сумм для сетей VXLAN;
  • В systemd-resolved для resolved.conf реализована опция «DNSStubListener», позволяющая управлять созданием обработчиков DNS (127.0.0.53:53).
  • Добавлены дополнительные опции настройки IP-адреса: «HomeAddress=», «DuplicateAddressDetection=», «ManageTemporaryAddress=», «PrefixRoute=» и «AutoJoin=»;
  • Добавлены новые опции настройки журнала из командной строки ядра: «systemd.journald.max_level_console=», «systemd.journald.max_level_store=», «systemd.journald.max_level_syslog=», «systemd.journald.max_level_kmsg=» и «systemd.journald.max_level_wall=»;
  • В «cryptsetup» и /etc/crypttab добавлена поддержка шифрованных разделов, созданных в VeraCrypt.

© OpenNet