ГлавнаяОперационные системыLinuxКак использовать Run0 в Linux

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

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

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

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

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

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

пном только пользователю root:

run0 mkdir /etc/maketecheasier

Появится либо запрос пароля CLI, либо небольшое окно графического интерфейса с запросом пароля текущего пользователя.

Снимок экрана, показывающий запрос пароля для Run0.

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

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

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

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

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

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

Терминал, показывающий корневую оболочку из приглашения Run0.

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

run0 --user=alice
Терминал, показывающий приглашение Run0 для пользователя без полномочий root.

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

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

ванным за определенным пользователем и группой, без перехода в root.

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

run0 --user=alice --group=www-data

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

run0 --user=alice --chdir=/home/alice/Documents
Терминал, показывающий автоматическое переключение каталога при переходе в оболочку другого пользователя.

Полезно знать. Узнайте больше о своем компьютере с Linux, изучив как рекурсивно изменить права доступа к файлам в своей файловой системе.

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

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

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

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

run0 --unit=maketecheasier

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

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

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

systemctl list-units maketecheasier.service
Терминал, показывающий подробную информацию о пользовательском модуле Systemd.

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

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

run0 --unit=maketecheasier --background=42
Терминал, показывающий другой цвет фона в Run0.

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

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

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

pan>=-20
Терминал, выделяющий корневую оболочку с измененным уровнем приятности.

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

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

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

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

run0 --slice=maketecheasier

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

Подтвердите, что ваш новый сеанс выполняется под новым срезом, перечислив процессы внутри него:

systemctl status maketecheasier.slice
Терминал, показывающий детали пользовательского среза Systemd.

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

run0 --slice=maketecheasier --slice-inherit

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

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

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

machinectl list
Терминал, показывающий список доступных контейнеров Systemd-nspawn.

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

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

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

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

run0 run0 --machine=maketecheasier --user=root
Терминал, показывающий команду для переключения приглашения оболочки контейнера.

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

echo $HOSTNAME
Терминал, показывающий процесс переключения с локальной системы на контейнер Systemd-nspawn.

Изучение того, как использовать Run0 для запуска и управления корневыми командами в Linux, — это лишь верхушка айсберга, когда речь идет о приложениях для повышения привилегий. Погрузитесь глубже в сложный мир, взглянув на Как сгруппировать сеансы Run0/a> .

Изображение предоставлено: Ксавье Си через Unsplash . Все изменения и скриншоты Рамсеса Реда.

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

ПОХОЖИЕ СТАТЬИ

Популярные записи