В systemd появилась альтернатива утилиты su

30/08/2015 15:47

Представлен выпуск системного менеджера systemd 225, который содержит исправления ошибок, корректирующие изменения и два улучшения. Первым улучшением является интеграция в утилиту machinectl новой команды "shell". Данная команда обеспечивает запуск нового экземпляра командной оболочки в выбранном контейнере, виртуальной машине или на хост-системе. Для выполнения новой команды в контексте текущей системы (localhost) в качестве хоста можно указать ".host" (используется по умолчанию). Таким образом, команду "machinectl shell" можно использовать в качестве аналога утилиты "su" для запуска командной оболочки в новом сеансе с иным идентификатором пользователя. Например, для запуска оболочки на текущем хосте - "machinectl shell логин@", для запуска в контексте контейнера - "machinectl shell логин@имя_контейнера", для запуска программы под иным пользователем - "machinectl shell логин@ программа". Также можно запустить "shell" по цифровому идентификатору пользователя (опция "--uid=") или установить переменные окружения (команда "--setenv="). Если не указать пользователя, то по умолчанию создаётся привилегированный сеанс (root). При запуске без аргументов, поведение команды похоже на создание нового сеанса при помощи утилиты "su". Ключевым отличием от "su", которое и стало причиной разработки замены, является то, что в "machinectl shell" новый сеанс полностью изолируется от текущего сеанса - не используются общие процессы и свойства старого сеанса, не наследуются лимиты, tty, cgroup и переменные окружения, создаются новые записи в utmp и логах аудита. Иными словами "machinectl shell" можно рассматривать как симуляцию нового входа, в то время как "su" обеспечивает лишь запуск "shell" в рамках уже существующего сеанса. Отмечается, что вместо "machinectl shell" также может применяться команда "systemd-run", предоставляющая средства для более детальной и низкоуровневой настройки нового сеанса. Второе новшество состоит в добавлении в systemd-networkd поддержки копирования опций DHCP для приватных зон (private-zone) и возможности других приложений запрашивать эти значения.
Источник