从詹金斯致电sudo


8

我有一台构建计算机,该计算机的abcsudo访问权限受到限制。当我签出源代码并运行构建脚本时,它可以正常工作。生成脚本包含的sudo调用不会说“ sudo:不存在tty且未指定askpass程序”。但是,当我在添加为从属的构建机上对Jenkins执行相同的操作时,它显示“ sudo:不存在tty且未指定askpass程序”。

我发现一种解决方案说Default requiretty在文件中注释掉/etc/sudoers。但我无权访问此文件。

我该如何克服这个问题?


您尝试通过运行此命令是否sudo允许运行而无需输入密码?如果必须输入密码,则sudo要求输入tty。
帕特里克(Patrick)

是的
..it

Answers:


3

有两个选项,您可以在Defaults requiretty/ etc / sudoers中注释掉设置,或者使用的伪tty分配(-t)参数ssh

在您的jenkins脚本中尝试以下操作:

ssh -t 127.0.0.1 "sudo command"

虽然您必须为ssh自己配置预共享密钥,然后手动运行一次才能将条目添加到已知主机,但是也可以添加-o StrictHostKeyChecking=no参数ssh以忽略它。


2

它失败,因为sudo正在尝试提示输入root密码,并且没有分配伪tty。

您必须以root用户身份登录或在/etc/sudoers (或:)中设置以下规则sudo visudo

# Members of the admin group may gain root privileges.
%admin  ALL=(ALL) NOPASSWD:ALL

然后,确保您的Jenkins用户属于admin组(或wheel)。

理想情况下(更安全)是将root特权仅限制于可以指定为 %admin ALL=(ALL) NOPASSWD:/path/to/program


2
它仍然需要TTY。
Lightness Races in Orbit

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.