我有一个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时,会说上面的错误,需要输入密码。
谁能告诉我为什么? 感谢。
答案 0 :(得分:0)
我真的很犹豫是否提供这个“修复”,因为@AJcodez正确地问,“你为什么需要sudo?”但是,你可以通过添加以下内容来解决这个问题:
Defaults requiretty
Defaults: %test !requiretty
到/etc/sudoers
文件,但请使用visudo
命令。此外,test
这里是用户还是群组?我也怀疑你的sudoers线是畸形的。语法是:
jane ALL=(LIST_OF_COMMANDS) NOPASSWD: ALL
如果您将其设置为为所有零命令运行NOPASSWD设置,%test
组可以运行。或者我可能会误解你的粘贴。