Visudo 所有无密码访问脚本 (Visudo + Cron)

Visudo 所有无密码访问脚本 (Visudo + Cron)

我希望我的用户“dave”能够运行 bash 脚本而无需输入密码,这样该脚本就可以与 crontab 一起运行?对于所有其他活动,我希望要求此用户输入密码(默认)。我知道这可以通过 visudo 实现,但我无法让它工作。可能是语法错误?

我的 Visudo 条目:

dave    ALL=(ALL) ALL
dave    ALL=NOPASSWD: /home/dave/thescript.sh

这在命令行中有效,我可以在不输入密码的情况下执行它。但是 cron 正在返回[sudo] password for dave:

我为用户‘dave’制定的 crontab 是:

0 * * * * /home/dave/thescript.sh

非常感谢,
罗斯

答案1

sudoers条目dave ALL=NOPASSWD: /home/dave/thescript.sh允许 davesudo /home/dave/thescript.sh无需输入密码即可执行。它没有说明sudo从该脚本使用;sudo也不关心调用它的脚本(如果有的话)。

如果整个脚本应该以 root 身份运行,则sudo /home/dave/thescript.sh在 crontab 中调用它。但是,为什么不简单地将脚本放在root的 crontab 中呢?

否则,如果脚本包含一行sudo /path/to/mycommand arguments,则将其放入dave ALL=NOPASSWD: /path/to/mycommand argumentssudoers 文件中。无论 davemycommand从哪里运行,这都将适用。

答案2

您上述输入允许 dave无需输入密码即可/home/dave/thescript.sh运行。sudo

但是您并没有thescript.sh通过运行sudo

您必须将脚本尝试通过 sudo 运行的命令的类似条目添加到您的 sudoers 文件中,例如

dave ALL=NOPASSWD: /path/to/special/command

相关内容