Run0 — это новая инновационная программа повышения привилегий для дистрибутивов Linux на базе Systemd. Он представляет собой легкую и «не требующую настройки» альтернативу традиционным приложениям для эскалации, таким как sudo и doas. Здесь мы покажем вам основы использования Run0 для эскалации команд для вашей системы Linux.
Перед этим вам, возможно, захочется узнать что такое Run0 и чем он отличается от sudo .
Как запускать программы от имени другого пользователя
Одним из наиболее распространенных способов использования приложений повышения привилегий является запуск команд от имени пользователя root. В этом отношении для выбора пользователя root в Run0 необходимо добавить run0 перед командой, которую вы хотите запустить. Нап
Contents
Как запускать программы от имени другого пользователя
пном только пользователю root:run0 mkdir /etc/maketecheasier
Появится либо запрос пароля CLI, либо небольшое окно графического интерфейса с запросом пароля текущего пользователя.
Подобно sudo и делай как , Run0 также может переключаться на пользователя без полномочий root при выполнении команд. Для этого добавьте флаг --user
, а затем имя пользователя, которому вы хотите запустить команду:
run0 --user=alice /home/alice/alice-program.sh
Укажите пароль пользователя, на которого вы переключаетесь, затем нажмите Ввод.
Как переключиться на оболочку другого пользователя
Еще одной ключевой частью приложения для повышения привилегий является его способность перенаправить пользователя в корневую оболочку. Это дает вам возможность взаимодействовать с вашей системой как пользователь root и запускать более сложные команды из CLI.
В Run0 это можно сделать, запустив программу без каких-либо дополнительных аргументов.
Как и при запуске программ от имени пользователя root, также можно использовать Run0 с флагом --user
для запуска сеанса оболочки от имени конкретного пользователя:
run0 --user=alice
Кроме того, 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
По умолчанию Run0 меняет цвет фона корневой оболочки на красный. Хотя это полезный визуальный индикатор, он может отвлекать, если вы используете в своей системе светлую тему.
Чтобы изменить это, используйте флаг --background
, за которым следует значение от 40 до 49:
run0 --unit=maketecheasier --background=42
Наконец, вы также можете настроить «уровень красивости» вашей корневой оболочки. Это значение от -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
Вы также можете использовать флаг --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 для запуска и управления корневыми командами в Linux, — это лишь верхушка айсберга, когда речь идет о приложениях для повышения привилегий. Погрузитесь глубже в сложный мир, взглянув на Как сгруппировать сеансы Run0/a> .
Изображение предоставлено: Ксавье Си через Unsplash . Все изменения и скриншоты Рамсеса Реда.