当从 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/