【问题标题】:Best practices to avoid Jenkins error: sudo: no tty present and no askpass program specified避免 Jenkins 错误的最佳实践:sudo: no tty present and no askpass program specified
【发布时间】:2013-06-29 04:02:06
【问题描述】:

从 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 命令的密码提示,这似乎有点不安全。我只是好奇我的选择是什么,以及是否有任何我应该考虑的最佳做法。

【问题讨论】:

  • 我无法使用此命令获取您要更改的文件? %jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh 我正在尝试在 jenkins 中使用 sudo 命令,所以我需要知道应该运行哪个文件?
  • 这是我机器上的一个特定文件,我已经编辑了帖子以显示一个通用文件

标签: linux ubuntu jenkins sudo


【解决方案1】:

不重要的事情(sudoers 中的requiretty)才是真正的问题。

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

#Defaults    requiretty
#Defaults   !visiblepw

其他让它工作的方法:

Defaults    !requiretty

或每个用户:

Defaults:jenkins !requiretty

在 Unix & Linux Stack Exchange 网站上,this answer 对此问题的更详细答案是:

【讨论】:

  • 我的 /etc/sudoers 文件不包含这些行中的任何一行,但即使在向 sudoers 添加行以允许我的用户使用命令后,我仍然得到“sudo: no tty present and no askpass 程序指定”错误。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-09-22
    • 1970-01-01
    • 2018-07-10
    • 2015-07-10
    • 2012-02-19
    • 2021-08-28
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多