systemd/run0
< Systemd
run0(1) 是一个提权工具。其作为一种 systemd-run(1) 的另一种调用模式实现。run0 为 sudo 机制提供了一种更安全、更稳健的替代方案,由 systemd PID 1 执行命令(“权限向下剥离”而非“向上窃取权限”),使用 polkit 验证而无需依赖 SUID 二进制文件进行验证。
安装
自 systemd v256 起,run0 包含于 systemd包 软件包中。
安装 polkit包 软件包以处理授权。
配置
run0 没有独立的配置文件,所有配置均在 Polkit#配置 和 Polkit#认证规则 中完成。
默认情况下 Polkit#管理员身份认证 会将 wheel 组用户视为管理员。因此考虑将你的用户加入 wheel 组,以便于使用自己的身份进行认证。
使用
要使用 run0,需要在命令和参数前加上 run0 和空格
$ run0 cmd
例如使用 pacman 升级软件包:
$ run0 pacman -Syu
若需启用交互式 shell (类似于 sudo -i 或 su -l),只需要执行 run0。
使用 --empower 参数以当前用户身份运行特权命令,以避免完整的 root 上下文。这在需要以特权身份运行命令,同时确保所有创建的文件和目录权限仍归属当前用户时很有用(此方法加入自 systemd v259)。
systemd-run 的选项同样适用于 run0,参见:systemd-run(1) 和 run0(1)。
提示:参见安全#无 SUID 获取更高级的示例。