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

Vro*_*oth 26 bash root

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

  • 由于安全问题,脚本上的 setuid 在 Ubuntu 中不起作用。它在内核中被禁用。 (16认同)
  • 如果您想成为唯一可以运行它的人,请执行以下操作:“chown root.&lt;您的用户名&gt; &lt;myscript&gt;”。并更改权限:'chmod 4750 &lt;myscript&gt;'。 (2认同)
  • 好吧,对您自己的用户进行“sudoing”不需要密码;sudo 足够聪明来处理这种情况。 (2认同)