29

从 Jenkins 运行任何 sudo 命令时,我收到以下错误:sudo: no tty present and no askpass program specified.

我知道我可以通过在我的文件中添加一个NOPASSWD条目来解决这个问题,/etc/sudoers这将允许用户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 避免所有命令的密码提示,这似乎有点不安全。我只是好奇我的选择是什么,以及是否有任何我应该考虑的最佳实践。

4

2 回答 2

14

不重要的事情(requirettysudoers中)是真正的问题。

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

#Defaults    requiretty
#Defaults   !visiblepw

使其工作的其他方法:

Defaults    !requiretty

或每个用户:

Defaults:jenkins !requiretty

更详细的答案是Unix & Linux Stack Exchange 网站上这个问题的答案:

于 2013-09-27T17:08:09.670 回答
4

您可以做的一件事是让 Jenkins 运行一个脚本,例如“run.sh”,然后您可以从该脚本内部启动 makefile,并确保 makefile 中没有 sudo 命令。

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

于 2015-03-12T10:50:17.437 回答