如何在 Bash 脚本中运行 sudo 命令

如何在 Bash 脚本中运行 sudo 命令

我只需要在启动时重新启动 tor 服务,脚本很简单:

#!/bin/bash

sudo service tor restart

但我想在每次启动时执行它而不需要密码。

我关注了这些帖子:https://askubuntu.com/questions/425754/how-do-i-run-a-sudo-command-inside-a-script/425990

我用这个更改了我的 sudoers 文件:

username ALL=(ALL) NOPASSWD: /path/to/script

但当我尝试在终端中执行它时,脚本总是要求我输入密码。我还尝试了这篇文章中的其他答案,但由于该文章没有验证,我没有找到解决方案。如果有人有解决方案?

答案1

线路

username ALL=(ALL) NOPASSWD: /path/to/script

给出username运行脚本的权利sudo,如

$ sudo /path/to/script

如果您希望用户能够在脚本中tor专门重新启动,请使用sudo

username ALL=(ALL) NOPASSWD: /usr/sbin/service tor restart

现在脚本可以做

sudo /usr/sbin/service tor restart

请注意,此命令必须与sudo配置完全对应。

答案2

最佳实践是不要在脚本中使用 sudo。

  1. 不使用 sudo 编写脚本
  2. chmod 脚本文件到 root 并剥夺用户和其他人的所有权限。
  3. 使用 sudo 运行脚本

相关内容