- +

Автор: denkin Тема: Выпуск системного менеджера systemd 239  (Прочитано 60 раз)

Оффлайн denkin

  • Global Moderator
  • Старожил
  • *****
  • Сообщений: 1493
  • Репутация: +73/-2
    • Просмотр профиля
Цитировать
Леннарт Поттеринг представил релиз системного менеджера systemd 239. Из новшеств можно отметить концепцию переносимых сервисов, изменение наименования виртуальных сетевых интерфейсов, усиление защиты системных сервисов, поддержку DNS-over-TLS, режим suspend-then-hibernate, возможность сохранения дампа памяти при спящем режиме в файлы подкачки.
Новость на Opennet.
Spoiler: Подробности • показать

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

Представлена экспериментальная поддержка переносимых сервисов ("Portable Services"), позволяющих создавать системные сервисы в виде самодостаточных контейнеров. Переносимый сервис поставляется в виде системного образа, но обрабатывается как обычный сервис. Из достоинств переносимых сервисов отмечается возможность упаковки одного или нескольких приложений, сервисов и связанных с ними зависимостей в отдельный образ, с возможностью запуска компонентов с применением дополнительной sandbox-изоляции.
При этом, в отличие от контейнеров переносимые сервисы не запускаются в отдельном изолированном окружении со своим PID 1, а представляют из себя часть системы (выполняются в текущем системном окружении), отделённую в независимую самодостаточную иерархию каталогов. Для управления переносимыми сервисами предложена утилита "portablectl" (/usr/lib/systemd/portablectl). Для создания образов можно применять любые инструменты для формирования начинки контейнеров, такие как "dnf --installroot", "debootstrap" и "mkosi";

В systemd-resolved добавлена поддержка резолвинга доменных имён с использованием механизма DNS-over-TLS, при котором применяется штатный протокол DNS (обычно используется сетевой порт 853), завёрнутый в шифрованный канал связи, организованный при помощи протокола TLS с проверкой валидности хоста через TLS/SSL-сертификаты, заверенные удостоверяющим центром. Для активации DNS-over-TLS следует явно выставить в настройках resolved.conf параметр "DNSOverTLS=opportunistic" (по умолчанию поддержка отключена до внесения оптимизаций, направленных на сокращение задержек из-за дополнительных накладных расходов по установке TLS-сеанса поверх TCP);
Реализован режим suspend-then-hibernate, при котором система вначале переходит в ждущий режим, но в случае непробуждения в течение определённого таймаута активируется и уходит в глубокий спящий режим;
Обеспечена возможность использования файлов подкачки, а не только разделов подкачки, для сохранения дампа памяти во время перехода в спящий режим;
Изменено наименование виртуальных сетевых интерфейсов, созданных с использованием технологий SR-IOV ( Single Root Input/Output Virtualization) и NPAR (NIC Partitioning), а также для устройств, PCI-контроллер которых не выставляет номер слота. Имена устройств SR-IOV теперь устанавливаются с учётом имени родительского сетевого интерфейса с добавлением суффикса "vN", где N - номер интерфейса. Все виртуальные устройства NPAR теперь именуются по единой схеме (ранее начиная с 9 устройства назначались имена ethN). Для PCI-устройств без номера слота выбирается имя в соответствии со схемой "net_id", вместо определяемых ядром имён ethN;
Все длительно работающие системные сервисы переведены по умолчанию на использование белого списка системных вызовов, т.е. если раньше был определён список блокируемых опасных системных вызовов, а все остальные вызовы были разрешены, то теперь задан список разрешённых вызовов, а все остальные запрещены;
В system.conf предложена новая настройка NoNewPrivileges, которая позволяет отключить получение новых привилегий (выставить флаг PR_SET_NO_NEW_PRIVS для PID 1), что не позволяет исполняемым файлам с setuid и выставленными capabilities менять свои привилегии;
Вывод systemctl и других утилит теперь включает escape-последовательности, позволяющие отобразить доступные для клика ссылки в разных терминалах (например в выводе "systemctl status" теперь можно кликнуть на имени юнита для вызова программы для его просмотра или редактирования);
В файлы ".network" в секцию [Route] добавлены новые опции IPv6MTUBytes и MTUBytes для явного выставления MTU для определённых маршрутов, добавлена опция "UserClass" для определения класса пользователя в DHCP, опции Multicast и AllMulticast для выставления для сетевого интерфейса флагов MULTICAST и ALLMULTI, а также новая секция "[CAN]" с настройками CAN-сетей;
В файлах ".link" появились опции RxChannels, TxChannels, OtherChannels и CombinedChannels для определения числа принимающих и передающих каналов;
В файлах ".netdev" появилась возможность создания интерфейсов "netdevsim";
В systemd-analyze добавлена новая команда "cat-config" для вывода содержимого любых файлов конфигурации, соответствующих маске. Например, "systemd-analyze cat-config systemd/system.conf" выдаст содержимое всех файлов конфигурации, которые обрабатываются при запуске процесса PID 1. В утилиты, подобные systemd-tmpfiles и systemd-sysusers, добавлена опция "--cat-config", позволяющая просмотреть все настройки, учтённые данными утилитами. Например, "systemd-tmpfiles --cat-config" покажет в одном месте все строки файлов в "tmpfiles.d/";
В systemd-nspawn добавлены опции: "--rlimit" для определения начальных лимитов ресурсов для процессов в контейнере, "--hostname" для переопределения имени хоста контейнера, "--no-new-privileges" для выставления флага PR_SET_NO_NEW_PRIVS (отключение suid и capabilities), "--oom-score-adjust" для корректировки поведения в случае нехватки памяти, "--cpu-affinity" для настройки привязки к ядрам CPU, "--resolv-conf" для управления обработкой /etc/resolv.conf, "--timezone" для управления обработкой /etc/localtime. В systemd-detect-virt добавлена опция "--list" для вывода всех известных виртуальных машин и контейнеров;
Изменена схема поиска файлов, переопределяющих параметры unit-файлов. Например, если раньше для юнита "foo-bar-baz.service" переопределения проверялись по маске "foo-bar-baz.service.d/*.conf", то теперь проверяются все совпадения до первого дефиса, т.е. подпадают "foo-bar-.service.d/*.conf" и "foo-.service.d/", что позволяет создавать переопределения настроек для типовых групп юнитов;


В systemd-logind.service убраны ограничения для сокетов AF_INET и AF_INET6 (убраны из настройки RestrictAddressFamilies), но данное изменение не повлияет на безопасность так как начиная с выпуска 235 для юнитов также выставляется дублирующая блокировка "IPAddressDeny=any" и изменение поведения может наблюдаться только в случае изменения настроек по умолчанию;
При указании нескольких настроек RestrictNamespaces в юните, данные настройки теперь объединяются (ранее действовало только последнее значение RestrictNamespaces);
При использовании для сервисных юнитов комбинации настроек OnFailure и Restart, обработчик сбоя больше не вызывается в случае автоматического перезапуска (ранее такое поведение было определено в документации, но на деле обработчик сбоя вызывался);
В systemd-tmpfiles добавлен вывод предупреждения в случае упоминания в файлах "tmpfiles.d/" каталога "/var/run/", вместо которого предлагается использовать каталог "/run";
Команды systemctl disable/unmask/preset/preset-all теперь запрещено использовать с опцией "--runtime", так как результат зачастую не тот, что ожидает пользователь. При выполнении "systemctl disable/unmask" сейчас возвращается состояние как сеансовых (runtime), так и постоянных настроек, т.е. удаляются символические ссылки, как в каталоге /run, так и в /etc;
В sd-boot добавлены новые настройки загрузчика, позволяющие опционально отключить поиск загрузочных разделов Windows и macOS и отображение в загрузочному меню режима reboot-into-firmware. Также можно изменить разрешение экрана при загрузке (например для HiDPI);
В systemd-resolved.service и systemd-networkd.service по умолчанию выставлена настройка DynamicUser=yes для работы с использованием динамически генерируемого идентификатора пользователя вместо заранее определённых системных пользователей;
Утилита systemd-resolve переименована в resolvectl, а интерфейс приведён в соответствие с другими утилитами *ctl, такими как systemctl и loginctl (для обеспечения обратной совместности утилита systemd-resolve сохранена). Кроме того, в утилиты resolvectl/systemd-resolve добавлены опции для совместимости с утилитой 'resolvconf', предлагаемой в Debian и FreeBSD;
В networkd в настройке ClientIdentifier теперь допустимо использовать опцию "duid-only", при которой клиент будет отправлять только идентификатор DUID;
В nss-systemd (NSS-модуль для glibc) добавлена поддержка перечисления (enumeration) динамических пользователей и групп (ранее поддерживался только маппинг UID/GID в имена и обратно);
В journald в настройке Compress теперь можно задать порог, при превышении которого будет использовано сжатие, а объекты меньше которого сохранятся как есть (ранее порог был жестко выставлен а 512 байт);
Добавлен новый сервис systemd-time-sync-wait.service, который откладывает запуск юнита time-sync.target на этапе загрузки до момента получения данных синхронизации точного времени по сети, что может оказаться полезным для систем без локальных часов;
Для юнитов реализованы три новых спецификатора: %T и %V для подстановки каталогов с временными файлами (/tmp и /var/tmp) и %E для каталога с настройками ( /etc для системных юнитов или $XDG_CONFIG_HOME для пользовательских юнитов);
В ExecStart теперь допускается использование относительных путей к исполняемым файлам (список путей в $PATH можно узнать через "systemd-path search-binaries-default");
Добавлено новое состояние загрузки юнитов - "bad-setting", выставляемого если юнит был загружен, но содержит мешающие запуску ошибки (например, отсутствуют настройки ExecStart и ExecStop);
В coredumpctl команда "gdb" переименована в "debug" для абстрагирования от типа отладчика (например, может быть использован lldb). Для выбора альтернативного отладчика добавлена опция "--debugger" и переменная окружения $SYSTEMD_DEBUGGER;
В timedatectl добавлена новая команда "show" для отображения свойств шины systemd-timedated, а также "timesync-status" для текущего состояния синхронизации времени по NTP и "show-timesync" для показа свойств шины systemd-timesyncd. В systemd-timedated добавлена обработка переменной окружения $SYSTEMD_TIMEDATED_NTP_SERVICES, в которой можно указать список имён юнитов NTP-клиентов;
В journalctl и systemctl добавлена опция "-o", при указании которой в каждой строке лога отображаются имена юнитов вместо тегов syslog, а даты указываются с учётом часового пояса;
Добавлен новый юнит "system-update-pre.target", определяющий предварительные действия по синхронизации перед установкой системных обновлений в offline-режиме;
В исполняемый файл systemd добавлена опция "--dump-bus-properties" для вывода всех свойств D-Bus;
Для юнитов добавлена настройка "PrivateMounts", при выставлении которой юнит запускается в отдельном собственном пространстве имён в файловой системе;
В настройку ConditionSecurity добавлен параметр "uefi-secureboot", который выставляется в значение "true" в случае загрузки в режиме UEFI Secure boot;
По умолчанию отключен sysctl "net.ipv4.tcp_ecn";
Добавлены новые документы CGROUP_DELEGATION.md, PORTABLE_SERVICES.md, CODE_QUALITY.md и BOOT_LOADER_SPECIFICATION.md."
(ц)