避免Jenkins错误的最佳做法:sudo:没有tty存在且没有指定askpass程序

时间:2013-07-01 22:14:01

标签: linux ubuntu jenkins sudo

从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

...但是这允许用户jenkins避免使用 ALL 命令的密码提示,这看起来有点不安全。我只是好奇我的选择是什么,如果有任何最佳实践我应该考虑。

2 个答案:

答案 0 :(得分:12)

没有tty( sudoers中的requiretty )是真正的问题。

基本上,在 / etc / sudoers 文件中注释掉以下几行:

#Defaults    requiretty
#Defaults   !visiblepw

以上内容摘自this answer关于Unix& Linux Stack Exchange站点:

答案 1 :(得分:4)

你可以做的一件事就是让Jenkins运行一个脚本,例如' run.sh', 然后从这个脚本里面你可以启动makefile,并确保makefile中没有sudo命令。

这有点麻烦,但至少你没有冒险改变安全设置的风险