无法在rails resque worker中运行sudo

时间:2013-12-18 07:18:33

标签: ruby-on-rails linux shell resque sudo

我有一个resque worker,它将运行一些shell命令。

例如

ruby `sudo echo "XXX" >> xx.log`

但是当工人跑步时,会提出以下错误

sudo: no tty present and no askpass program specified

我添加'whoami'调试代码来查找运行此sudo命令的用户, 并且当execute命令不需要密码时,也将该用户的组设置为“test”。 我也在shell控制台中运行相同的命令,它工作正常,不需要输入密码。

sudo visudo

%test ALL=NOPASSWD:ALL

但是当工作人员运行sudo时,会说上面的错误,需要输入密码。

谁能告诉我为什么? 感谢。

1 个答案:

答案 0 :(得分:0)

我真的很犹豫是否提供这个“修复”,因为@AJcodez正确地问,“你为什么需要sudo?”但是,你可以通过添加以下内容来解决这个问题:

Defaults requiretty
Defaults: %test !requiretty

/etc/sudoers文件,但请使用visudo命令。此外,test这里是用户还是群组?我也怀疑你的sudoers线是畸形的。语法是:

jane ALL=(LIST_OF_COMMANDS) NOPASSWD: ALL

如果您将其设置为为所有零命令运行NOPASSWD设置,%test组可以运行。或者我可能会误解你的粘贴。