从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 命令的密码提示,这看起来有点不安全。我只是好奇我的选择是什么,如果有任何最佳实践我应该考虑。
答案 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命令。
这有点麻烦,但至少你没有冒险改变安全设置的风险