Релиз systemd 231
26 июля 2016 года
Представлен выпуск системного менеджера systemd 231. Из новшеств можно отметить возможность указания ограничений в процентах, монтирование /tmp в режимах "nosuid" и "nodev", возможность блокировки групп системных вызовов в unit-файлах, запрет по умолчанию для сервисов systemd создания областей mmap, одновременно доступных на запись и исполнение, обработка в systemd-resolved локальных DNS-запросов через 53 порт, добавление в systemd-networkd средств для настройки VLAN, VTI/VTI6 и VRF.
Основные изменения:
- В директиве "SystemCallFilter=" добавлена возможность использования предопределённого набора фильтров системных вызовов, что значительно упрощает настройку и позволяет управлять фильтрацией на уровне групп, а не отдельных системных вызовов. Например, для запрета доступа к системеным вызовам, связанным с манипуляцией временем, можно указать "SystemCallFilter=@clock". Фильтрация по системным вызовам включена для всех длительно работающих сервисов systemd;
- Директивы "InaccessableDirectories=", "ReadOnlyDirectories=" и "ReadWriteDirectories=" переименованы в "InaccessablePaths=", "ReadOnlyPaths=" и "ReadWritePaths=", и теперь могут применяться не только для директорий, но и для любых других типов файлов, в том числе для unix-сокетов, FIFO, файлов символьных и блочных устройств, за исключением символических ссылок. Поддержка старых названий сохранена для обеспечения совместимости;
- Для приёма DNS-запросов systemd-resolved теперь прикрепляется к локальному IP 127.0.0.53:53, что улучшает совместимость с приложениями, не использующими для резолвинга libc NSS и systemd-resolved API. В /usr/lib/systemd/resolv.conf по умолчанию в качестве DNS-сервера теперь указывается только этот адрес. Предоставленная реализация DNS-сервера не предоставляет полной поддержки протокола DNS, но реализует часть, достаточную для работы локальных клиентов;
- В systemd-networkd добавлена директива "VLANFiltering=" для настройки фильтрации VLAN. В файлы .network добавлена секция "[BridgeVLAN]" для настройки VLAN через директивы "VLAN=", "EgressUntagged=" и "PVID=";
- В systemd-networkd добавлена поддержка туннелей VTI/VTI6 (настройка через директивы "Key=", "InputKey=" и "OutputKey=");
- В systemd-networkd добавлена возможность настройки интерфейсов VRF ("Virtual Routing Function");
- Для сервисов представлена новая директива "MemoryDenyWriteExecute=", при включении которой сервисам запрещается производить маппинг в память, одновременно доступный на запись и исполнение. Режим затрудняет проведение атак и включен по умолчанию для всех длительно работающих сервисов systemd;
- В директивах, подобных "MemoryLimit=", теперь можно указывать значение памяти в процентах, относительно имеющейся физической памяти или памяти, выделенной контейнеру, что позволяет гибко масштабировать настройки в зависимости от размера ОЗУ. Аналогично значения в процентах теперь допускаются в директиве "RuntimeDirectorySize=", применяемой в systemd-logind, и в директиве "TasksMax=" (процент высчитывается от заданного в настройках максимального числа процессов в системе (pid_max), для сервисов значение по умолчанию TasksMax теперь выставлено в 15%).
- В юнитах ".timer" добавлена возможность определения диапазонов времени с использованием синтаксиса "..". Например, "5..7:10" можно использовать для создания таймера, вызываемого каждый день в 5:10, 6:10 и 7:10;
- Обеспечено отражение в логе всех принудительно завершённых (через SIGKILL) служебных процессов, что может применяться для диагностики некорректного завершения работы сервисов. При включении настройки "KillUserProcesses=" в systemd-logind, аналогичные логи создаются и для пользовательских процессов, принудительно завершённых в конце сеанса;
- Для всех сервисов, стандартный вывод в которых ассоциирован с выводом в журнал systemd, теперь выставляется переменная окружения $JOURNAL_STREAM, в которой указано устройство и номер inode файлового дескриптора, используемого для потоков stdout/stderr. При помощи данной переменной приложения могут определить факт перенаправления в журнал systemd и использовать в этом случае прямую отправку в журнал структурированных метаданных. Поддержка JOURNAL_STREAM уже добавлена в функции отправки логов glibc;
- В применяемом по умолчанию для монтирования /tmp юните tmp.mount задействованы опции "nosuid" и "nodev", препятствующие проведению атак при помощи suid-файлов и файлов устройств. Для отключения данных опций, например, при размещении образов контейнеров или overlayfs в /tmp, следует переопределить настройки в секции "Options=" или настроить монтирование /tmp через /etc/fstab;
- В сервисных юнитах добавлена возможность переопределения привилегий через указание спецсимволов в первом аргументе директивы "ExecXYZ=". Например, при указании символа "+" команда будет запущена с полными привилегиями, независимо от значений, выставленных в таких опциях, как "User=", "Group=" и "CapabilityBoundingSet=";
- Сервисы теперь могут на лету изменять таймаут отслеживания работоспособности (watchdog) путём отправки сообщения "WATCHDOG_USEC=" через sd_notify();
- Добавлена поддержка контроллера cgroup "memory", определённого в cgroup-v2;
- В утилите systemd-cgtop добавлена возможность указания пути к cgroup в командной строке;
- В сервисы добавлена новая настройка "RestrictRealtime=", позволяющая запретить выполнение заданий с использованием realtime-планировщика. Включение опции позволяет защититься от атак, направленных на инициирование отказа в обслуживании через утилизацию всех доступных ресурсов процессора;
- В systemd-nspawn добавлена опция "--notify-ready=" при установке которой обеспечивающий запуск контейнера системный менеджер сообщит о завершении запуска вышестоящему системному менеджеру, что позволяет применить штатные средства упорядочивания запуска systemd при запуске нескольких контейнеров, в ситуациях когда определённый контейнер может быть запущен только после окончания запуска другого контейнера;
- В machinectl добавлена команда "stop", по своим функциям аналогичная команде "terminate";
- В systemd-resolved добавлена обработка сигнала SIGUSR2, при поступлении которого осуществляется сброс всех кэшей. Операцию сброса кэшей также можно инициировать командой "systemd-resolve --flush-caches";
- В systemd-resolved добавлена опция "--status", приводящая к выводу сводки о настройках DNS в привязке к сетевым интерфейсам;
- В файл конфигурации resolved.conf добавлена настройка "Cache=", которая включена по умолчанию. Через указание "Cache=Off" можно запретить использование локального кэша DNS;
- В команде "systemctl edit" реализована возможность создания новых unit-файлов, указав опцию "--force";
- В пакет rpm добавлен макрос %systemd_ordering, который может быть использован вместо %systemd_requires в пакетах не использующих функциональность systemd и рассчитанных на использование в урезанных контейнерах без systemd. При наличии %systemd_ordering, пакет не привязывается к systemd, но в случае установки текущего пакета и systemd в рамках одной транзакции rpm, пакет с systemd будет установлен раньше скриптов текущего пакета, что позволяет корректно обработать преднастройки из unit-файлов;
- В файл os-release добавлено поле VERSION_CODENAME, определяющее кодовое имя версии дистрибутива (например, VERSION_CODENAME=woody);
- В udev добавлено свойство UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG, при установке которого будет отключен разбор метаданных и создание постоянных символьных ссылок для устройства;
- Расширено число компонентов systemd, которые собираются с использованием внутренней разделяемой библиотеки libsystemd-shared.so. Использование библиотеки позволяет сократить потребление памяти и уменьшить размер компонентов на диске;
- Настройки для утилиты "mkosi" теперь размещаются в репозитории systemd, что позволяет сформировать актуальный образ для загрузки через "systemd-nspawn -b -i" или qemu-kvm, содержащий самые свежие изменения в systemd.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.