После трёх месяцев разработки доступен релиз системного менеджера 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 позволяют при запуске сервиса настроить корректные права доступа для динамически созданного пользователя;

  • В systemd-journald реализовано агрессивное кэширование метаданных из /proc/ (UID/GID/PID/SELinux), что позволило увеличить производительность записи логов при большой нагрузке. Так как метаданные читаются в асинхронном режиме, их состояние может немного запаздывать относительно выводимых в лог записей;
  • В unit-ы добавлена опция IPAccounting, при включении которой для сервиса добавляются счётчики с данными о трафике и числе пакетов. Данные о трафике можно посмотреть через "systemctl status" или "systemd-run --wait";
  • Обеспечено сохранение в логе сведений о потреблении ресурсов CPU и трафике. Запись создаётся при каждой остановке юнита, если включены опции CPUAccounting или IPAccounting;
  • В unit-ы добавлены опции IPAddressAllow и IPAddressDeny для встраивания списка разрешённых и запрещённых IP-адресов и подсетей, формируя простую систему контроля доступа (ограничения применяются как для входящего трафика, так и для исходящего). Возможность также доступна для файлов .slice и .socket, что позволяет вносить ограничения для групп сервисов и обработчиков сокетов;
  • В 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, позволяющая на лету привязать сервис к выбранному домену выполнения;
  • В поставку добавлен файл для modprobe.d, обеспечивающий переопределение параметров модуля bonding для корректного управления интерфейсом bond0 из systemd-networkd;
  • В journald.conf добавлена включенная по умолчанию настройка ReadKMsg, управляющая чтением лога ядра в systemd-journald, а также опция LineMax для задания максимального размера строки при выводе логов через STDOUT/STDERR;
  • В nss-myhostname/systemd-resolved по умолчанию обеспечена генерация DNS-записей A/AAAA для хоста "_gateway" вместо ранее применяемого имени "gateway", так как оно используется для внутренних нужд некоторых дистрибутивов (старое поведение можно вернуть во время сборки);
  • Добавлен новый целевой юнит для пользовательских сеансов: "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-серверах.


Источник: http://www.opennet.ru/opennews/art.shtml?num=47342