Новая версия systemd 214
12 июня 2014 года
Леннарт Поттеринг (Lennart Poettering) представил выпуск системного менеджера systemd 214, примечательный интеграцией некоторых новых механизмов для организации изоляции сервисов и минимизации привилегий фоновых процессов, обеспечением поддержки сетевых интерфейсов "veth", GRE и VTI в systemd-networkd, средствами для формирования типовой начинки создаваемых tmpfs-разделов (например, воссоздать базовую структуру /var).
Systemd сочетает в себе функции системы инициализации, механизм для контроля за выполнением фоновых процессов, службу для журналирования событий и средства для управления сервисами, сеансами пользователей и подключаемыми устройствами. Для определения параметров сервисов в Systemd используется набор конфигурационных unit-файлов, вместо оформления сценариев запуска в виде shell-скриптов. Система нацелена на интенсивную параллелизацию выполнения сервисов на этапе загрузки системы, вобрав в себя лучшие черты таких систем, как launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, старые версии Fedora). В настоящее время на использование systemd уже перешли такие дистрибутивы, как Fedora, openSUSE, Mandriva и Arch Linux, одобрен переход дистрибутивов Debian и Ubuntu по умолчанию на systemd.
Наиболее существенные изменения:
- В systemd-nspawn реализована опция "--tmpfs" для монтирования tmpfs-раздела к заданной директории, структура которой может быть воссоздана по специально определённому шаблону. Например, при запуске контейнера можно разместить /var в tmpfs и реконструировать базовое содержимое данного раздела. Для выполнения данной операции достаточно выполнить команду "systemd-nspawn -D /srv/mycontainer --read-only --tmpfs=/var -b", что создаст /var поверх доступной только на чтение основы контейнера и сформирует начинку для пустой директории /var. После остановки контейнера, содержимое /var будет очищено.
Указанный подход позволяет упростить запуск множества типовых экземпляров контейнера на основе одного базового образа директорий и не заботиться об их изоляции друг от друга. В настоящее время в systemd-tmpfiles добавлен шаблон для воссоздания структуры иерархии /var, а для сервисов реализованы средства создания недостающих в /var директорий. В следующем выпуске ожидается появление возможности загрузки контейнеров с примонтированным через tmpfs пустым разделом /etc или корневым разделом, что позволит ограничиться подготовкой типового содержимого раздела /usr.
Нововведению также сопутствует несколько улучшений в systemd-tmpfiles: добавлена поддержка строк с типом операции "C", предназначенных для копирования в новый раздел файлов или целых директорий; строки с типами "m" и "z" теперь полностью эквиваленты (рекомендуется использовать "z"); при задании прав доступа теперь допустимо использовать префикс "~", который воспринимается как маска для существующих файлов и директорий.
- Для сервисов обеспечена поддержка настроек "ReadOnlySystem" и "ProtectedHome", которые применены ко всем длительно работающим процессам systemd. При указании "ReadOnlySystem" разделы /usr и /boot для указанного сервиса будут примонтированы в режиме "только для чтения", что заблокирует возможность несанкционированного изменения системной части операционной системы. При указании "ProtectedHome" в режиме только для чтения будут примонтированы разделы /home и /run/user или данные разделы будут заменены на пустые директории, что позволит добиться ограничения доступа к конфиденциальным пользовательским данным.
- В сервисе "systemd-networkd", предназначенном для унификации компонентов дистрибутивов, используемых для настройки параметров сети, добавлена поддержка настройки виртуального ethernet (интерфейс "veth") для соединения контейнеров, а также поддержка туннелей GRE и VTI.
- В udev реализована экспериментальная возможность установки блокировок (flock(LOCK_SH|LOCK_NB)) на файл дискового устройства во время выполнения действия с дисковыми разделами. Приложения, такие как редакторы разделов, могут использовать данную особенность для установки flock(LOCK_EX) как признака временной занятости устройства, при котором udev приостановит выполнения всех действий по работе с диском и после освобождения блокировки перечитает таблицу разделов.
- Из демона systemd удалена поддержка скриптов инициализации SysV и LSB. Для обеспечения совместимости теперь применяется генерация unit-файлов на основе скриптов инициализации. Указанное изменение привело к заметной чистке обработчика PID 1 от устаревшего кода;
- Сокращены привилегии различных компонентов systemd: Определение доступных механизмов виртуализации теперь выполняется без получения повышенных привилегий, т.е. systemd-detect-virt не требует установки прав CAP_SYS_PTRACE. Systemd-networkd теперь запускается под непривилегированным пользователем "systemd-network" и получает доступ к необходимым возможностям через capabilities-режимы CAP_NET_ADMIN, CAP_NET_BIND_SERVICE, CAP_NET_BROADCAST и CAP_NET_RAW, что подразумевает потерю возможности записи в файлы с правами root. Аналогичный сброс прав за счёт установки необходимых capabilities и запуска под непривилегированными пользователями обеспечен для systemd-resolved и systemd-bus-proxyd;
- В Socket-юнитах обеспечена поддержка новых опций: "SocketUser=" и "SocketGroup=" для установки владельца для файлов-сокетов AF_UNIX и FIFO. "RemoveOnStop=" для удаления FIFO и других привязанных к сокетам спецфайлов; "Symlinks=" для создания символических ссылок на файлы с сокетами и FIFO при заведении определённых unix-сокетов;
- В опцию "Restart=" добавлена поддержка свойства "on-abnormal", указывающего на необходимость автоматического перезапуска при любых ненормальных завершениях, включая нештатные сигналы, core-дампы, истечения таймаутов и срабатывание watchdog-таймеров. Перезапуск не производится только при выходе с кодами завершения или по явным сигналам. От "on-failure" свойство "on-abnormal" отличается допустимостью завершения по всем кодам возврата, в том числе сигнализирующим об ошибках;
- Если настройка "InaccessibleDirectories=" в сервисе ссылается на точку монтирования, то осуществляется попытка отмонтирования для данного сервиса;
- Настройка "ReadOnlyDirectories=" в сервисах и параметр "--read-only" в systemd-nspawn теперь рекурсивно применяются ко всем точкам монтирования;
- Юниты для монтирования теперь могут создаваться в прозрачном режиме через API;
- Прекращена зависимость от libattr, так как функции для работы с расширенными атрибутами файлов уже присутствуют в glibc.
- Добавлен новый пассивный целевой юнит "network-pre.target", который вызывается до конфигурации сети, что может быть полезно, например для скриптов межсетевых экранов.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.