如何在没有密码的情况下以 root 身份运行 Bash 脚本?

如何在没有密码的情况下以 root 身份运行 Bash 脚本?

可能重复:
如何在脚本中使用 sudo 而不需要密码?

我想以 root 身份运行 bash 脚本,且不提示密码。

我尝试了 visudo,但没有成功(your_username ALL=(ALL) NOPASSWD: /path/to/your/script)。

在我看来这是唯一的出路,还有其他吗?

答案1

每个 Linux 中都有一个非常巧妙的技巧可以让你做到这一点。它被称为 SetUI 位。

请记住,您需要严格锁定此文件中的权限以确保安全。

使文件归 root 和 root 组所有:

sudo chown root.root <my script>

现在设置 SetUID 位,使其对所有人都可执行,但只能由 root 写入:

sudo chmod 4755 <my script>

请记住,如果该脚本允许任何文件的输入或编辑,这也将以 root 身份完成。

SetUID 位使脚本或二进制文件始终以文件/二进制文件的所有者身份运行,这种二进制文件的一个例子是“passwd”。

这里有一个使用 sudoers 的解决方案,您可以使用这个示例。在 sudoers 文件的末尾添加这两行。您可以使用 visudo 来编辑 sudoers 文件。

Cmnd_Alias        CMDS = /path/to/your/script

<username>  ALL=NOPASSWD: CMDS

现在只需将 sudo 放在脚本前面,它就可以运行而不需要输入密码。

相关内容