通过 Jenkins 以 root 身份运行 shell 脚本

通过 Jenkins 以 root 身份运行 shell 脚本

我正在运行一个 EC2 实例。如何sudo通过 Jenkins 运行命令?当我尝试时sudo touch /home/ec2-user/foo.bar,出现以下错误:sudo: no tty present and no askpass program specified

我究竟做错了什么?

答案1

默认情况下,没有 TTY 就无法使用 sudo。要使用此功能,请执行以下操作:

  • 在 sudoers 中禁用“requiretty”(使用 visudo)
    • 这相当于注释掉“Defaults requiretty”(使用 visudo)

  • 确保您的用户无需输入密码即可登录:
    • 在 sudoers 中设置“NOPASSWD”
    • 如果用户不存在则创建用户

  • 设置 visiblepw - 这将允许 sudo 工作,即使显示输入的密码
    • (当无法禁用回声时,某些情况下是必需的)。

相关内容