Проект systemd продолжает революционизировать экосистему Linux своим последним дополнением: командой run0.
Недавно анонсированная ведущим разработчиком systemd Леннартом Пёттерингом, команда run0 обещает изменить подход к выполнению административных задач, предлагая новую утилиту, подобную sudo.
В отличие от своих предшественников, run0 вводит уникальные функции, которые отличают её, потенциально изменяя способ взаимодействия пользователей с привилегированными командами.
Ближе к run0
Команда run0 является новым дополнением к инструментам systemd, хотя она основана на уже существующем инструменте systemd-run.
Ключевое отличие заключается в том, как работает run0: когда её вызывают через символическую ссылку под именем “run0”, она ведет себя как клон sudo, предлагая упрощенный способ выполнения команд с повышенными привилегиями.
Однако run0 отличается от традиционного использования sudo несколькими важными аспектами.
Без необходимости SUID
Одна из самых заметных особенностей run0 - её подход к безопасности. В отличие от sudo, run0 не требует SUID.
Вместо этого она работает напрямую с менеджером служб для вызова команды или оболочки под нужным UID пользователя. Этот инновационный дизайн позволяет избежать потенциальных уязвимостей безопасности, связанных с SUID бинарниками.
Команда выделяет новый PTY (псевдотерминал) для каждой сессии, передавая данные между исходным TTY и новым PTY.
Изолированный контекст выполнения
Еще одно ключевое отличие между run0 и sudo заключается в том, как первая выполняет команды.
С run0 команды вызываются в новом форкнутом контексте выполнения напрямую из PID 1. Этот подход гарантирует, что команды не наследуют никакого контекста от клиента, за исключением явного списка разрешенных, например, передачи переменной $TERM.
Визуальные индикаторы
Чтобы сделать использование run0 более интуитивным, команда предоставляет визуальный сигнал при работе с повышенными привилегиями.
По умолчанию, run0 окрашивает фон терминала в красноватый оттенок, служащий напоминанием о том, что активированы повышенные привилегии. Этот оттенок также помогает различать вывод, сгенерированный командами, запущенными с привилегиями, добавляя дополнительный уровень ясности и безопасности к административным задачам.
Сравнение с ssh и sudo
Пёттеринг отметил, что в некоторых аспектах поведение run0 ближе к ssh, чем к sudo. Это сравнение подчеркивает акцент run0 на изоляцию и безопасность.
В то время как sudo позволяет напрямую выполнять команды с привилегиями root, выделение PTY и изолированный контекст run0 создают более безопасную среду выполнения, напоминая подход ssh к выполнению удаленных команд.
Будущие перспективы
По мере того как systemd продолжает развиваться, run0 готова сыграть ключевую роль в администрировании систем Linux. Её инновационный дизайн и акцент на безопасность делают её интересным дополнением к экосистеме systemd. С такими функциями, как изолированное выполнение, визуальные индикаторы и безопасный дизайн на основе PTY, run0 предлагает свежий взгляд на выполнение привилегированных задач.
Для тех, кто заинтересован в её опробовании, run0 будет доступна в версии systemd 256, а дополнительные комментарии от Пёттеринга можно найти на Mastodon.social.
Особенности и установка
Основные особенности run0:
1. Отсутствие SUID:
- В отличие от sudo, run0 не требует SUID (Set User ID), что значительно повышает безопасность, поскольку устраняются уязвимости, связанные с SUID бинарниками.
- Вместо этого run0 работает напрямую с менеджером служб systemd, чтобы запустить команду или оболочку под нужным UID пользователя.
2. Изолированный контекст выполнения:
- Команды запускаются в новом изолированном контексте выполнения, что предотвращает наследование контекста от вызывающего процесса. Это достигается путем форка нового процесса непосредственно от PID 1.
- Такая изоляция позволяет более точно контролировать передаваемые переменные среды и другие параметры, что способствует повышению безопасности.
3. Новый PTY для каждой сессии:
- Для каждой сессии run0 выделяет новый псевдотерминал (PTY), что обеспечивает изолированную среду выполнения команд.
- Данные передаются между исходным терминалом и новым PTY, что гарантирует целостность и безопасность данных.
4. Визуальные индикаторы:
- Чтобы пользователи могли легко распознавать выполнение команд с повышенными привилегиями, run0 по умолчанию окрашивает фон терминала в красноватый оттенок.
- Этот визуальный сигнал служит напоминанием о работе с привилегированными командами и добавляет дополнительный уровень ясности.
5. Сходство с ssh:
- По своей концепции run0 ближе к ssh, чем к sudo, поскольку акцент делает на изоляцию выполнения и безопасность.
- run0 выделяет новый PTY и контекст выполнения, что напоминает подход ssh к удаленному выполнению команд.
Как использовать run0 в администрировании систем Linux?
1. Установка run0:
- run0 будет доступна в версии systemd 256. Для установки следует обновить systemd до этой версии через пакетный менеджер вашей системы.
2. Использование run0 для выполнения команд с привилегиями:
- Для выполнения команды с привилегиями через run0, используйте синтаксис, аналогичный sudo:
```bash
run0 <команда>
```
- Например, чтобы выполнить команду `apt update` с привилегиями, используйте:
```bash
run0 apt update
```
3. Понимание изолированного контекста:
- Поскольку run0 запускает команды в новом контексте выполнения, необходимо учитывать, что не все переменные среды и параметры будут переданы автоматически. Например, переменная $TERM может быть явно разрешена для передачи.
- Это позволяет более строго контролировать среду выполнения команд, повышая безопасность.
4. Использование визуальных индикаторов:
- При выполнении команды с run0 обратите внимание на красноватый оттенок фона терминала, который сигнализирует о повышенных привилегиях.
- Этот индикатор помогает избежать случайного выполнения привилегированных команд и повышает осведомленность пользователя.
Заключение
Команда run0 представляет собой значительный шаг вперед в администрировании систем Linux, предлагая более безопасную и интуитивно понятную альтернативу традиционному sudo. С её помощью администраторы могут выполнять привилегированные задачи в изолированном и контролируемом контексте, что способствует повышению общей безопасности системы.
Команда run0 представляет собой значительный шаг вперед в администрировании систем Linux, предлагая более безопасную и интуитивно понятную альтернативу традиционному sudo. Это особенно актуально для пользователей VPS (виртуальных частных серверов), где безопасность и контроль над привилегированными командами имеют первостепенное значение. Использование run0 на VPS-хостинге позволяет администраторам выполнять важные системные задачи в изолированной среде, минимизируя риски, связанные с уязвимостями SUID и обеспечивая надежное управление привилегиями. Таким образом, внедрение run0 может значительно повысить уровень безопасности и управляемости VPS, что делает этот инструмент ценным дополнением для любого современного хостинг-провайдера.