如何在 Linux 中使用 Run0

Run0 是一个针对基于 Systemd 的 Linux 发行版的全新创新权限提升程序。它为 sudo 和 doas 等传统升级应用程序提供了轻量级且“无配置”的替代方案。在这里,我们向您展示使用 Run0 升级 Linux 系统命令的基础知识。

在此之前,您可能想了解一下Run0 是什么以及它与 sudo 有何不同.

如何以不同用户身份运行程序

权限提升应用程序最常见的用途之一是以 root 用户身份运行命令。对此,在Run0中点击root用户需要在要运行的命令前面添加run0。例如,以下命令在只能由 root 访问的目录中创建一个新文件夹:

run0 mkdir /etc/maketecheasier

这将弹出 CLI 密码提示或小 GUI 窗口,要求输入当前用户的密码。

类似于 sudo 和你捐赠、run0在运行命令时也可以切换到非root用户。为此,请添加--userflag 后跟要运行该命令的用户名:

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

提供您要切换到的用户的密码,然后按进入.

如何切换到不同用户的 shell

权限提升应用程序的另一个关键部分是它能够将用户降到 root shell。这使您能够以 root 用户身份与系统进行交互,并从 CLI 运行更复杂的命令。

在 Run0 中,您可以通过运行程序来完成此操作,无需任何其他参数。

就像以 root 身份运行程序一样,也可以将 Run0 与--user标志以特定用户身份启动 shell 会话:

run0 --user=alice

最重要的是,run0 允许您为非 root 用户创建具有临时组权限的 shell 会话。如果您想要访问锁定在某个用户和组后面的文件夹而不需要降至 root 权限,这非常有用。

例如,以下命令授予“alice”用户对“www-data”组的临时访问权限:

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

您还可以使用--chdir当下降到新的 shell 会话时强制更改目录的标志:

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

很高兴知道:通过探索了解有关您的 Linux 机器的更多信息如何递归地更改文件权限在你的文件系统中。

Run0 的最大卖点是它不使用 setuid (SUID) 来处理超级用户操作。相反,它依赖于 systemd-run,它创建隔离的 psuedo-TTY 以作为 root 运行命令。

这种方法的一个结果是 Systemd 将每个 Run0 shell 视为在服务管理器下运行的离散单元。与传统的权限提升应用程序不同,这允许您自定义 root shell 进程。

要为根 shell 添加标签,请使用--unit标志后跟您要使用的名称:

run0 --unit=maketecheasier

您还可以通过添加以下命令将自定义描述添加到根 shell--description旗帜:

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

通过使用列出 root shell 的自定义名称来检查您是否已正确应用您的详细信息systemctl:

systemctl list-units maketecheasier.service

默认情况下,Run0 将根 shell 背景的颜色更改为红色。虽然这是一个有用的视觉指示器,但如果您在系统上使用浅色主题,这可能会分散您的注意力。

要更改此设置,请使用--background标志后跟一个 40-49 之间的值:

run0 --unit=maketecheasier --background=42

最后,您还可以调整根 shell 的“友好级别”。这是一个介于 -20 和 19 之间的值,决定您的内核是否将您的进程优先于其他进程。

要为 root shell 提供最高优先级,请使用--nice带有“-20”值的标志:

run0 --nice=-20

笔记:这--nice标志也适用于单独的 Run0 命令。例如,您可以使用run0 --nice=-20 vim以更高的 CPU 优先级运行 Vim。

如何将 Run0 会话分组在一起

除了能够自定义每个 Linux 根 shell 之外,您还可以使用 Run0 将它们组合到一个 Systemd 切片中。这是一种特殊的构造,允许您的计算机调整进程的资源需求,而不影响系统的其余部分。

要在不同的切片上创建根 shell,请运行--sliceflag 后跟要移动到的切片的名称:

run0 --slice=maketecheasier

笔记:您可以在--slice标志来创建一个新的 Systemd 切片。

通过列出其中的进程来确认您的新会话正在新切片下运行:

systemctl status maketecheasier.slice

您还可以使用--slice-inherit标志将新切片与 Run0 来自的切片分组。如果您已经将 shell 分组到各自的切片并且只想添加新 shell,则这非常有用:

run0 --slice=maketecheasier --slice-inherit

如何使用 Run0 在 Systemd 容器上运行命令

Systemd-nspawn是一个特殊的程序,可以创建和管理类似于Docker的轻量级Linux容器。作为 Systemd 套件的一部分,您还可以使用 Run0 从主机执行 nspawn 容器中的命令。

首先列出系统中可用的 Systemd-nspawn 容器:

machinectl list

运行以下命令在容器的根目录中创建一个文件夹:

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

笔记:目前 Run0 中存在一个错误,在运行时无法提升权限--machine旗帜。您可以通过添加第二个 run0 命令来强制权限升级来解决此问题。

也可以使用 Run0 进入容器的根 shell:

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

通过打印终端会话的主机名来确认您现在正在容器内运行:

echo $HOSTNAME

当涉及权限提升应用程序时,学习如何使用 Run0 在 Linux 中运行和管理 root 命令只是冰山一角。通过观察,深入了解复杂的世界su、sudo 和 sudo -s 之间的区别.

图片来源:泽维尔·塞伊(Xavier Cee)来自 Unsplash。所有修改和屏幕截图均由 Ramces Red 进行。