可能的重复:
如何在不需要密码的情况下在脚本中使用 sudo?
我想在没有密码提示的情况下以 root 身份运行 bash 脚本。
我试过 visudo 没有运气(your_username ALL=(ALL) NOPASSWD: /path/to/your/script)。
在我看来,这是唯一的出路,还有其他出路吗?
KDr*_*nir 41
每个 Linux 都有一个非常巧妙的技巧可以让你这样做。它被称为 SetUI 位。
请记住,您需要在此文件中严格锁定权限以确保安全。
使文件归根和组根所有:
sudo chown root.root <my script>
Run Code Online (Sandbox Code Playgroud)
现在设置 SetUID 位,使其对所有人都可执行并且只能由 root 用户写入:
sudo chmod 4755 <my script>
Run Code Online (Sandbox Code Playgroud)
请记住,如果此脚本允许对文件进行任何输入或编辑,这也将以 root 身份完成。
SetUID 位使脚本或二进制文件始终作为文件/二进制文件的所有者运行,此类二进制文件的示例是“passwd”。
有一个使用 sudoers 的解决方案,这是您可以使用的示例。在 sudoers 文件的末尾添加这两行。您可以使用 visudo 来编辑 sudoers 文件。
Cmnd_Alias CMDS = /path/to/your/script
<username> ALL=NOPASSWD: CMDS
Run Code Online (Sandbox Code Playgroud)
现在只需将 sudo 放在您的脚本前面,它就可以在不要求密码的情况下运行。