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

5 сентября 2019 года

После пяти месяцев разработки представлен релиз системного менеджера systemd 243. Из новшеств можно отметить интеграцию в PID 1 обработчика нехватки памяти в системе, поддержку прикрепления собственных BPF-программ для фильтрации трафика unit-ов, многочисленные новые опции для systemd-networkd, режим мониторинга пропускной способности сетевых интерфейсов, задействование по умолчанию на 64-разрядных системах 22-битных номеров PID вместо 16-битных, переход на унифицированную иерархию cgroups, включение в состав systemd-network-generator.

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

  • В обработчик PID 1 добавлено распознавание генерируемых ядром сигналов о нехватке памяти (Out-Of-Memory, OOM) для перевода юнитов, достигших лимита в потреблении памяти, в специальное состояние с опциональной возможностью их принудительного завершения или остановки;
  • Для unit-файлов реализованы новые параметры IPIngressFilterPath и

IPEgressFilterPath, позволяющие подключить BPF-программы с произвольными обработчиками для фильтрации входящих и исходящих IP-пакетов, генерируемых процессами, связанными с данным unit-ом. Предложенные возможности позволяют создавать своего рода межсетевые экраны для сервисов systemd. Пример написания простого сетевого фильтра на базе BPF;

  • В утилиту systemctl добавлена команда "clean" для удаления кэша, runtime-файлов, информации о состоянии и каталогов с логами;
  • В systemd-networkd добавлена поддержка сетевых интерфейсов MACsec, nlmon, IPVTAP и Xfrm;
  • В systemd-networkd реализована раздельная настройка стеков DHCPv4 и DHCPv6 через секции "[DHCPv4]" и "[DHCPv6]" в файле конфигурации. Добавлена опция RoutesToDNS для добавления отдельного маршрута к DNS-серверу, указанному в параметрах, полученных от DHCP-сервера (чтобы трафик к DNS отправлялся через тот же линк, что и основной маршрут, полученный от DHCP). Для DHCPv4 добавлены новые опции: MaxAttempts - макcимальное число запросов на получение адреса, BlackList - чёрный список DHCP-серверов, SendRelease - включение отправки сообщений DHCP RELEASE при завершении сеанса;
  • В утилиту systemd-analyze добавлены новые команды:
  • "systemd-analyze timestamp" - разбор и преобразование времени;
  • "systemd-analyze timespan" - разбор и преобразование промежутков времени;
  • "systemd-analyze condition" - разбор и тестирование выражений ConditionXYZ;
  • "systemd-analyze exit-status" - разбор и преобразование кодов завершения из номеров в названия и наоборот;
  • "systemd-analyze unit-files" - вывод списка всех файловых путей для юнитов и псевдонимов юнитов.
  • Опции SuccessExitStatus, RestartPreventExitStatus и

RestartForceExitStatus теперь поддерживают не только числовые коды возврата, но и их текстовые идентификаторы (например "DATAERR"). Посмотреть список привязки кодов к идентификаторам можно через команду "sytemd-analyze exit-status";

  • В утилиту networkctl добавлена команда "delete" для удаления виртуальных сетевых устройств, а также опция "--stats" для вывода статистики по устройствам;
  • В networkd.conf добавлены настройки SpeedMeter и SpeedMeterIntervalSec для периодического измерения пропускной способности сетевых интерфейсов. Статистику, полученную по результатам измерений, можно посмотреть в выводе команды 'networkctl status';
  • Добавлена новая утилита systemd-network-generator для генерации файлов.

network, .netdev и .link на основе настроек IP, переданных при запуске через командную строку ядра Linux в формате настроек Dracut;

  • Значение sysctl "kernel.pid_max" на 64-разрядных системах теперь выставляется по молчанию в 4194304 (22-битные PID вместо 16-битных), что уменьшает вероятность коллизий при назначении PID, повышает лимит на число одновременно запущенных процессов и положительно отражается на безопасности. Потенциально изменение может привести к проблемам с совместимостью, но на практике о подобных проблемах пока не сообщалось;
  • По умолчанию на этапе сборки осуществлён переход на унифицированную иерархию cgroups-v2 ("-Ddefault-hierarchy=unified"). Ранее по умолчанию выставлялся гибридный режим ("-Ddefault-hierarchy=hybrid");
  • Изменено поведение фильтра системных вызовов (SystemCallFilter), который в случае обращения к запрещённому системному вызову теперь завершает весь процесс, а не отдельные потоки (thread), так как завершение отдельных потоков могло приводить к непредсказуемым проблемам. Изменение действует только при наличии ядра Linux 4.14+ и libseccomp 2.4.0+;
  • Непривилегированным программам предоставлена возможность отправки пакетов ICMP Echo (ping) благодаря установке sysctl "net.ipv4.ping_group_range" для всего диапазона групп (для всех процессов);
  • Для ускорения процесса сборки по умолчанию прекращена генерации man-руководств (для сборки полной документации нужно использовать опцию "-Dman=true" или "-Dhtml=true" для руководств в формате html). Для упрощения просмотра документации в состав включены два скрипта build/man/man и build/man/html для генерации и предпросмотра интересующих руководств;
  • Для обработки доменных имён с символами национальных алфавитов по умолчанию задействована библиотека libidn2 (для возвращения libidn следует использовать опцию "-Dlibidn=true");
  • Прекращена поддержка исполняемого файла /usr/sbin/halt.local, предоставлявшего функциональность, не получившую должного распространения в дистрибутивах. Для организации запуска команд при завершении работы рекомендовано использовать скрипты в /usr/lib/systemd/system-shutdown/ или определить новый unit, зависимый от final.target;
  • На последней стадии завершения работы systemd теперь автоматически увеличивает уровень логов в sysctl "kernel.printk", что решает проблему с отображением в логе событий, наступивших на поздних стадиях завершения работы, когда штатные демоны ведения логов уже завершены;
  • В journalctl и других отображающих логи утилитах обеспечена подсветка предупреждений жёлтым цветом, а записей аудита синим для их визуального выделения из общей массы;
  • В переменной окружения $PATH путь к bin/ теперь следует раньше пути к sbin/, т.е. при наличии одинаковых имён исполняемых файлов в обоих каталогах, будет выполнен файл из bin/;
  • В systemd-logind обеспечен вызов SetBrightness() для безопасного изменения яркости экрана для каждого сеанса;
  • В команду "udevadm info" добавлен флаг "--wait-for-initialization" для ожидания завершения инициализации устройства;
  • В процессе загрузки системы обработчик PID 1 теперь выводит на экран названия юнитов, вместо строки с их описанием. Для возвращения прошлого поведения можно использовать опцию StatusUnitFormat в /etc/systemd/system.conf или параметр ядра systemd.status_unit_format;
  • В /etc/systemd/system.conf для watchdog в PID 1 добавлена опция KExecWatchdogSec, определяющая таймаут для перезапуска с использованием kexec. Старая настройка

ShutdownWatchdogSec переименована в RebootWatchdogSec и определяет таймаут для работ в процессе завершения работы или обычного перезапуска;

  • Для сервисов добавлена новая опция ExecCondition, позволяющая задать команды, которые будут выполнены до ExecStartPre. На основе возвращённого командой кода ошибки принимается решение о дальнейшем выполнении юнита - если возвращён код 0 запуск юнита продолжается, если с 1 до 254 молча завершается без пометки возникновения сбоя, если 255 - завершается с пометкой возникновения сбоя;
  • Добавлен новый сервис systemd-pstore.service для извлечения данных из sys/fs/pstore/ и из сохранения в /var/lib/pstore для дальнейшего анализа;
  • В утилиту timedatectl добавлены новые команды для настойки параметров NTP для systemd-timesyncd в привязке к сетевым интерфейсам;
  • В команде "localectl list-locales" прекращён показ локалей, отличных от UTF-8;
  • Обеспечено игнорирование ошибок присвоения переменных в файлах sysctl.d/, если имя переменной начинается с символа "-";
  • Сервис systemd-random-seed.service теперь полностью отвечает за инициализацию пула энтропии генератора псевдослучайных чисел ядра Linux. Сервисы которым требуется корректно инициализированный /dev/urandom должны запускаться после systemd-random-seed.service;
  • В загрузчике systemd-boot обеспечена опциональная возможность поддержания seed-файла со случайной последовательностью в разделе EFI System Partition (ESP);
  • В утилиту bootctl добавлены новые команды "bootctl random-seed" для генерации seed-файла в ESP и "bootctl is-installed" для проверки установки загрузчика systemd-boot. В bootctl также налажен вывод предупреждений о некорректной настройке загрузочных записей (например, когда образ ядра удалён, а запись для его загрузки оставлена);
  • Обеспечен автоматический выбор раздела подкачки при переходе системы в спящий режим. Раздел выбирается в зависимости от настроенного для него приоритета, а в случае одинаковых приоритетов - размера свободного пространства;
  • В /etc/crypttab добавлена опция keyfile-timeout для задания времени ожидания устройства с ключом шифрования перед выводом запроса пароля для доступа к шифрованному разделу;
  • Добавлена опция IOWeight для установки веса ввода/вывода для планировщика BFQ;
  • В systemd-resolved добавлен строгий ('strict') режим работы для DNS-over-TLS и реализована возможность кэширования только позитивных DNS-ответов ("Cache no-negative" в resolved.conf);
  • Для VXLAN в systemd-networkd добавлена опция GenericProtocolExtension для включения расширений протокола VXLAN. Для VXLAN и GENEVE добавлена опция IPDoNotFragment для установки флага запрета фрагментации для исходящих пакетов;
  • В systemd-networkd в секции "[Route]" появилась опция FastOpenNoCookie для включения механизма быстрого открытия TCP-соединений (TFO - TCP Fast Open, RFC 7413) в привязке к отдельным маршрутам, а также опция TTLPropagate для настройки TTL LSP (Label Switched Path). В опции "Type" обеспечена поддержка режимов маршрутизации local, broadcast, anycast, multicast, any и xresolve;
  • В systemd-networkd в секции "[Network]" предложена опция DefaultRouteOnDevice для автоматической настройки маршрута по умолчанию для заданного сетевого устройства;
  • В systemd-networkd для сетевых мостов добавлены опции ProxyARP и

ProxyARPWifi для настройки поведения proxy ARP, MulticastRouter для задания параметров маршрутизации в режиме multicast, MulticastIGMPVersion для изменения версии IGMP (Internet Group Management Protocol) для multicast;

  • В systemd-networkd для туннелей FooOverUDP добавлены опции Local, Peer и PeerPort для настройки IP-адресов локальной и удалённой сторон, а также номера сетевого порта. Для туннелей TUN добавлена опция VnetHeader для настройки поддержки GSO (Generic Segment Offload);
  • В systemd-networkd в файлах .network и .link в секции [Match] появилась опция Property, позволяющая определить устройства по специфичным для них свойствам в udev;
  • В systemd-networkd для туннелей добавлена опция AssignToLoopback, управляющая привязкой конца туннеля к loopback устройству "lo";
  • В systemd-networkd автоматизирована активация IPv6-стека в случае его блокировки через sysctl disable_ipv6 - IPv6 активируется, если для сетевого интерфейса определены настойки IPv6 (статические или DHCPv6), в противном случае уже выставленное значение sysctl не меняется;
  • В файлах .network настройка CriticalConnection заменена на опцию KeepConfiguration, предоставляющую больше средств для определения ситуаций ("yes", "static", "dhcp-on-stop", "dhcp") в которых systemd-networkd не должен трогать уже имеющиеся соединения при запуске;
  • Устранена уязвимость CVE-2019-15718, вызванная отсутствием контроля доступа к D-Bus интерфейсу systemd-resolved. Проблема позволяет непривилегированному пользователю выполнить операции, доступные только администраторам, например, можно изменить настройки DNS и направить DNS-запросы на подставной сервер;
  • Устранена уязвимость CVE-2019-9619, связанная с невключением pam_systemd для неинтерактивных сеансов, которая позволяет организовать спуфинг активного сеанса.

Источники

править


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

Комментарии

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