当前位置: 首页>>技术教程>>正文


避免Jenkins错误的最佳实践:sudo:不存在tty且未指定askpass程序

, , ,

问题描述

从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命令。

这有点麻烦,但是至少您没有冒险更改安全设置

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7498.html,未经允许,请勿转载。