我希望我的用户“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 arguments
sudoers 文件中。无论 davemycommand
从哪里运行,这都将适用。
答案2
您上述输入允许 dave无需输入密码即可/home/dave/thescript.sh
运行。sudo
但是您并没有thescript.sh
通过运行sudo
。
您必须将脚本尝试通过 sudo 运行的命令的类似条目添加到您的 sudoers 文件中,例如
dave ALL=NOPASSWD: /path/to/special/command