问题描述
从Jenkins运行任何sudo命令时,出现以下错误:sudo: no tty present and no askpass program specified
。
我知道我可以通过在我的/etc/sudoers
文件中添加NOPASSWD条目来解决此问题,该条目将允许用户jenkins无需密码即可运行命令。我可以添加一个这样的条目:
%jenkins ALL=(ALL)NOPASSWD:/home/me/dir/script.sh
…但这会导致以下问题:https://stackoverflow.com/questions/17414330/how-to-avoid-specifying-full-path-in-sudoers-file
我可以添加一个这样的条目:
%jenkins ALL=NOPASSWD: ALL
…但是这使用户詹金斯可以避免输入所有命令的密码,这似乎有点不安全。我很好奇我在这里有什么选择,如果有最佳实践我应该考虑。
最佳解决方案
没问题(在sudoers中为requiretty
)是真正的问题。
基本上,将/etc /sudoers文件中的以下行注释掉:
#Defaults requiretty
#Defaults !visiblepw
上面是从this answer到Unix& Linux Stack Exchange网站:
次佳解决方案
您可以做的一件事是让Jenkins运行脚本,例如’run.sh’,然后从该脚本内部启动makefile,并确保makefile中没有sudo命令。
这有点麻烦,但是至少您没有冒险更改安全设置