Как использовать Run0 в Linux

Run0 – это новая инновационная программа повышения привилегий для Linux-дистрибутивов на базе Systemd. Она представляет собой легкую и «бесконфигурационную» альтернативу традиционным программам повышения привилегий, таким как sudo и doas. Здесь мы покажем вам основы использования Run0 для повышения команд в вашей системе Linux.

Перед этим вы, возможно, захотите узнать, что такое Run0 и чем он отличается от sudo.

Как запускать программы от имени другого пользователя

Одно из самых распространенных применений приложений для повышения привилегий – запуск команд от имени пользователя root. Для этого нужно добавить run0 перед командой, которую вы хотите запустить. Например, ниже создается новая папка в каталоге, доступ к которому имеет только root:

run0 mkdir /etc/maketecheasier

Это вызовет либо запрос пароля CLI, либо небольшое окно GUI с запросом пароля текущего пользователя.

Подобно sudo и doas, Run0 также может переключаться на пользователя, не являющегося root, при выполнении команд. Для этого добавьте флаг --user, а затем имя пользователя, от имени которого вы хотите запустить команду:

run0 --user=alice /home/alice/alice-program.sh

Введите пароль пользователя, от имени которого вы переключаетесь, и нажмите Enter.

Как переключиться на оболочку другого пользователя

Еще одна ключевая часть приложения для повышения привилегий – это возможность перевести пользователя в оболочку root. Это дает вам возможность взаимодействовать с системой как пользователь root и выполнять более сложные команды из CLI.

В Run0 это можно сделать, запустив программу без дополнительных аргументов.

Как и в случае запуска программ от имени root, можно использовать Run0 с флагом --user для запуска сеанса оболочки от имени определенного пользователя:

run0 --user=alice

Кроме того, run0 позволяет создавать сеансы оболочки с временными групповыми правами для пользователей, не являющихся root. Это полезно, если вы хотите получить доступ к папкам, которые заблокированы за определенным пользователем и группой, не переходя в права root.

Например, следующая команда предоставляет пользователю «alice» временный доступ к группе «www-data»:

run0 --user=alice <span style="color: #660033;">--group</span>=www-data

Вы также можете использовать флаг --chdir для принудительной смены каталога при переходе к новому сеансу оболочки:

run0 --user=alice --chdir=/home/alice/Documents

Как настроить текущий сеанс Run0

Главным преимуществом Run0 является то, что он не использует setuid (SUID) для обработки действий суперпользователя. Вместо этого он полагается на systemd-run, который создает изолированные psuedo-TTY для выполнения команд от имени root.

Одним из следствий такого подхода является то, что Systemd рассматривает каждую оболочку Run0 как отдельную единицу, работающую под управлением менеджера служб. Это позволяет вам настраивать процесс запуска оболочки root, в отличие от традиционных приложений повышения привилегий.

Чтобы добавить ярлык для вашей корневой оболочки, используйте флаг --unit, а затем имя, которое вы хотите использовать:

run0 --unit=maketecheasier

Вы также можете добавить пользовательское описание к корневой оболочке, добавив флаг --description:

run0 --unit=maketecheasier --description="hello, world!"

Проверьте, что вы правильно применили свои данные, перечислив пользовательское имя корневой оболочки с помощью systemctl:

systemctl list-units maketecheasier.service

По умолчанию Run0 меняет цвет фона вашей корневой оболочки на красный. Хотя это и полезный визуальный индикатор, он может отвлекать, если вы используете светлую тему в системе.

Чтобы изменить это, используйте флаг --background, а затем значение в диапазоне 40-49:

run0 --unit=maketecheasier --background=42

Наконец, вы можете настроить «уровень доброжелательности» вашей корневой оболочки. Это значение от -20 до 19, которое определяет, будет ли ядро отдавать предпочтение вашему процессу перед другими.

Чтобы дать своему root shell наивысший приоритет, используйте флаг --nice со значением «-20»:

run0 --nice=-20

Примечание: Флаг --nice также работает для отдельных команд Run0. Например, вы можете использовать run0 --nice=-20 vim для запуска Vim с более высоким приоритетом процессора.

Как объединить сессии Run0 в группы

Помимо возможности настраивать каждую корневую оболочку Linux, вы также можете использовать Run0 для их объединения в Systemd slice. Это специальная конструкция, которая позволяет вашей машине регулировать потребность в ресурсах для процессов, не затрагивая остальную часть системы.

Чтобы создать корневую оболочку на другом срезе, выполните команду с флагом --slice, за которой следует имя среза, на который вы хотите перейти:

run0 --slice=maketecheasier

Примечание: Вы можете указать новое имя во флаге --slice для создания нового среза Systemd.

Убедитесь, что ваша новая сессия запущена под новым срезом, перечислив процессы внутри него:

systemctl status maketecheasier.slice

Вы также можете использовать флаг --slice-inherit, чтобы сгруппировать ваш новый фрагмент вместе с фрагментом, из которого пришел Run0. Это полезно, если вы уже сгруппировали свои оболочки по соответствующим срезам и хотите добавить новую оболочку:

run0 --slice=maketecheasier --slice-inherit

Как выполнять команды на контейнерах Systemd с помощью Run0

Systemd-nspawn – это специальная программа, которая может создавать и управлять легкими Linux-контейнерами, подобными Docker. Будучи частью набора Systemd, вы также можете использовать Run0 для выполнения команд в контейнерах nspawn с хост-машины.

Начните со списка доступных контейнеров Systemd-nspawn в вашей системе:

machinectl list

Выполните следующую команду, чтобы создать папку в корневом каталоге вашего контейнера:

run0 run0 --machine=maketecheasier --user=root mkdir /hello-world

Примечание: В настоящее время в Run0 существует ошибка, из-за которой она не повышает привилегии при запуске с флагом --machine. Вы можете исправить это, добавив вторую команду run0 для принудительного повышения привилегий.

Также с помощью Run0 можно перейти в корневую оболочку вашего контейнера:

run0 run0 --machine=maketecheasier --user=root

Убедитесь, что вы теперь работаете внутри своего контейнера, напечатав имя хоста вашей терминальной сессии:

echo $HOSTNAME

Обучение использованию Run0 для запуска и управления командами root в Linux – это лишь вершина айсберга, когда речь идет о приложениях для повышения привилегий. Окунитесь в этот сложный мир, рассмотрев различия между su, sudo и sudo -s.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.maketecheasier.com

Похожие статьи

Комментарии (0)