linux - 避免 Jenkins 错误 : sudo: no tty present and no askpass program specified 的最佳实践

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

最佳答案

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

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

#Defaults    requiretty
#Defaults   !visiblepw

让它工作的其他方法:

Defaults    !requiretty

或每个用户:

Defaults:jenkins !requiretty

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

关于linux - 避免 Jenkins 错误 : sudo: no tty present and no askpass program specified 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414533/

相关文章:

php - 使用 LAMP 服务器安装 PHP

shell - 在 shell 中访问生成的并行管道内的 Groovy 变量

maven - 2019年发布私有(private)jvm库在私有(private)gradle/maven项目之间共享的实用方法

java - 每次打印的 IvParameterSpec 值不同

MySQL 连接只能通过命令行工作

java - 通过java代码登录Linuxbox

Python Import No Module Named 错误

c - FIN-PSH-ACK 服务器端关闭引发来自客户端的 RST

git - 如何为目录和目录外的文件创建 git 存储库?

ios - 如何在主应用程序目标中使用单元测试用例(作为 test_spec 添加到开发 pod)?