可能重复:
如何在脚本中使用 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 放在脚本前面,它就可以运行而不需要输入密码。