Релиз systemd 235
После трёх месяцев разработки доступен релиз системного менеджера systemd 235. Из новшеств можно отметить прекращение поддержи сборочных сценариев на основе Automake, агрессивное кэширование метаданных в systemd-journald, возможность учёта трафика и разграничения сетевого доступа для юнитов, расширенные средства фильтрации системных вызовов, доведение до пригодного к использованию вида системы динамического выделения идентификаторов пользователя для сервисов.
Основные изменения:
- Прекращена поддержка сборочных сценариев на основе Automake. В качестве системы сборки теперь предлагается только система Meson, использующая инструментарий Ninja;
- Для unit-файлов представлены опции RuntimeDirectory и RuntimeDirectoryPreserve, позволяющие переопределить путь к одноразовому runtime-каталогу (в иерархии /run или $XDG_RUNTIME_DIR) и поведения в отношении сохранения его содержимого после остановки unit-а. Например, указание RuntimeDirectory=foobar приведёт к размещению данных в каталоге /run/foobar и его удалению после завершения работы сервиса, если для него не установлена опция RuntimeDirectoryPreserve;
- По аналогии с RuntimeDirectory для unit-ов представлены опции StateDirectory, CacheDirectory, LogsDirectory и ConfigurationDirectory, позволяющие вынести данные состояния, кэша, логов и настроек в отдельные подкаталоги в иерархиях /var/lib/, /var/cache/, /var/log/ и /etc, содержимое которых сохранится между запусками сервиса. Дополнительно добавлены вспомогательные пары опций, определяющие режим доступа к каталога — StateDirectoryMode, CacheDirectoryMode, LogsDirectoryMode, ConfigurationDirectoryMode.
Новые опции удобно использовать вместе с режимом DynamicUser=yes для отделения компонентов сервисов c небольшим жизненным циклом. В режиме DynamicUser при каждом запуске подобного сервиса создаётся новый пользователь с идентификатором из диапазона 61184…65519, действующий только на время работы сервиса и удаляемый после остановки сервиса. Опции [State|Cache|Logs|Configuration]Directory позволяют вынести данные сервиса в отдельные каталоги и обеспечить сохранность данных между разными запусками сервиса. Опции [State|Cache|Logs|Configuration]DirectoryMode позволяют при запуске сервиса настроить корректные права доступа для динамически созданного пользователя.
- В поставку добавлен файл для modprobe.d, обеспечивающий переопределение параметров модуля bonding для корректного управления интерфейсом bond0 из systemd-networkd;
- В journald.conf добавлена включенная по умолчанию настройка ReadKMsg, управляющая чтением лога ядра в systemd-journald, а также опция LineMax для задания максимального размера строки при выводе логов через STDOUT/STDERR;
- В systemd-journald реализовано агрессивное кэширование метаданных из /proc/ (UID/GID/PID/SELinux), что позволило увеличить производительность записи логов при большой нагрузке. Так как метаданные читаются в асинхронном режиме, их состояние может немного запаздывать относительно выводимых в лог записей;
- В unit-ы добавлена опция IPAccounting, при включении которой для сервиса добавляются счётчики с данными о трафике и числе пакетов. Данные о трафике можно посмотреть через «systemctl status» или «systemd-run --wait»;
- Обеспечено сохранение в логе сведений о потреблении ресурсов CPU и трафике. Запись создаётся при каждой остановке юнита, если включены опции CPUAccounting или IPAccounting;
- В unit-ы добавлены опции IPAddressAllow и IPAddressDeny для встраивания списка разрешённых и запрещённых IP-адресов и подсетей, формируя простую систему контроля доступа (ограничения применяются как для входящего трафика, так и для исходящего). Возможность также доступна для файлов .slice и .socket, что позволяет вносить ограничения для групп сервисов и обработчиков сокетов;
- В nss-myhostname/systemd-resolved по умолчанию обеспечена генерация DNS-записей A/AAAA для хоста »_gateway» вместо ранее применяемого имени «gateway», так как оно используется для внутренних нужд некоторых дистрибутивов (старое поведение можно вернуть во время сборки);
- В systemd-networkd представлена серия новых настроек, задаваемых через файлы .network: Scope (область достижимости) в секции [Address], ConfigureWithoutCarrier (игнорировать статус линка при настройке) в секции [Network], Anonymize (включение опций анонимного профиля RFC 7844) в секции [DHCP], Type (определение спецмаршрутов для направления трафика в blackhole/unreachable/prohibit) в секции [Route]. Добавлена новая секция [RoutingPolicyRule] для задания правил маршрутизации;
- В файлы .netdev добавлены опции: Table в секции [VRF] для выбора используемой таблицы маршрутизации, Independent в секции [Tunnel] для настройки туннеля независимо от связанного с ним сетевого интерфейса, GroupForwardMask в секции [Bridge] для настройки распространение локальных сетевых кадров между портами сетевого моста;
- В файлах .link добавлены новые режимы работы опции WakeOnLan, добавлена настройка TCP6SegmentationOffload для включения аппаратного ускорения обработки сегментов TCP/IPv6;
- В реализацию сервера для анонса маршрутов IPv6 (Router Advertisment) добавлена поддержка отправки записей RDNSS и RDNSSL для передачи настроек DNS;
- В systemd-nspawn добавлен флаг »--system-call-filter» для добавления и удаления элементов из применяемого по умолчанию фильтра системных вызовов. Реализована возможность определения белых списков системных вызовов с запретом всех остальных (ранее предлагались черные списки);
- Добавлены новые фильтры групп системных вызовов: @aio, @sync, @chown, @setuid, @memlock, @signal и @timer, которые можно указывать через опцию SystemCallFilter или флаг »--system-call-filter»;
- В опцию ExecStart для unit-файлов добавлены два новых модификатора: При указании префикса »!» команда запускается без смены идентификатора пользователя/группы (без вызова setuid/setgid/setgroups). Второй модификатор »!» идентичен »!» за исключением того, что его действие игнорируется на системах с поддержкой наследования расширенных прав (capabilities PR_CAP_AMBIENT, появились в ядре 4.3);
- В systemd-run добавлен флаг »--pipe», при котором в вызываемый сервис systemd передаются файловые дескрипторы на STDIN/STDOUT/STDERR, что позволяет использовать его в цепочке с другими утилитами в shell с передачей данных через неименованные каналы;
- Для каждого сервиса обеспечено поддержание счётчик перезапусков, который можно посмотреть командой «systemctl show -p NRestarts сервис».
- Для unit-файлов реализована новая опция LockPersonality, позволяющая на лету привязать сервис к выбранному домену выполнения;
- Добавлен новый целевой юнит для пользовательских сеансов: «getty-pre.target», который выполняется до консольного входа в систему;
- Для увеличения качества энтропии в генераторе псевдослучайных числе systemd теперь при запуске каждого виртуального окружения пытается загрузить модуль ядра virtio-rng.ko;
- В /etc/crypttab обеспечена возможность применения опции _netdev, по аналогии с /etc/fstab, для организации настройки шифрованных устройств после запуска сети; Для подключения внешних обработчиков в cryptsetup.target добавлено два целевых юнита remote-cryptsetup-pre.target и remote-cryptsetup.target, решающих те же задачи, что remote-fs.target и remote-fs-pre.target в local-fs.target;
- В сервисы добавлена опция UnsetEnvironment, позволяющая убрать любую переменную окружения, которая в обычных условиях будет передана сервису;
- Команды «systemctl poweroff», «systemctl reboot», «systemctl halt», «systemctl kexec» и «systemctl exit» теперь всегда выполняются в асинхронном режиме, т.е. сразу возвращают управление, не дожидаясь фактического завершения операции;
- В systemd-resolve добавлен флаг »--reset-server-features», при указании которого очищаются и перезапрашиваются ранее полученные сведения о возможностях вышестоящих DNS-серверов. Отправка данных в лог теперь включает сведения о всех используемых DNS-серверах.
© OpenNet