默认使用 sudo 运行命令

LDe*_*her 5 root sudo alias privileges

我需要一个允许运行需要 root 权限的命令列表的 linux 用户(让我们称他为“bob”)。因此,让他以 root 身份运行/sbin/firstcommand/sbin/secondcommand(这是臭名昭著的 bob-daemon¹ 的一部分),如sudo firstcommand. 无需输入密码。

这是我/etc/sudoers到目前为止所做的:

Cmnd_Alias BOBCOMMANDS = /sbin/firstcommand, /sbin/secondcommand
bob        ALL=(root) NOPASSWD:BOBCOMMANDS
Run Code Online (Sandbox Code Playgroud)

这导致bob$ sudo firstcommandbob$ sudo secondcommand成功地以 root 身份运行,但没有办法运行 ie bob$ sudo mount ... ...,即使提供了密码,这对我来说感觉很完美。

现在,我希望前面提到的 bob-daemon¹ 以用户身份bob而不是身份运行root,因为它只需要BOBCOMMANDS. 事实上,无论何时bob$ firstcommand发出,我都想bob$ sudo firstcommand被执行。

在我看来,别名可以解决这个问题: bob$ alias firstcommand="sudo firstcommand"; alias secondcommand="sudo secondcommand"确实有效,但我无法在没有 bob 主目录的情况下使别名持久化。

我要提到的最后一件事是,这应该很容易部署到多台机器上,所以除了必须创建 bob 和更改sudoers.

任何解决方案?


¹由我简化

Jos*_* R. 0

如果这是一个守护进程,标准的做法是将这样的内容放入 init 脚本文件中:

USER=bob
...
su -c '/command/to/start/actual/daemon' "$USER"
Run Code Online (Sandbox Code Playgroud)

在应该运行的脚本文件中bob,只需将其放在sudo相关命令的前面即可。

另外,请确保您阅读了有关在非交互式 Bash shell(例如由脚本或守护进程启动的 shell)中启用别名扩展的内容。