EC2自动实例Sudo无法正常工作

我正在使用Atlassian Bamboo来build立一个构build服务器。 它允许使用“弹性图像”,我可以指定他们使用哪个AMI(我正在使用Amazon Linux / CentOS映像)。 它也允许你添加脚本来实质上“configuration”服务器。 当我在脚本中使用sudo运行构build时,出现如下错误:

 We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. sudo: no tty present and no askpass program specified sudo: no tty present and no askpass program specified sudo: no tty present and no askpass program specified sudo: no tty present and no askpass program specified 

当不使用sudo ,我得到权限被拒绝的错误。

我试图运行的脚本和以下一样简单:

 sudo yum install -y php-mysql sudo yum install -y php-pdo sudo yum install -y php-pecl-xdebug sudo yum update 

竹是用一个键设置的,所以不应该要求一个实际的密码( 据我所知没有一个 ),这意味着缺乏ttyinput应该不重要,对吗?

如果服务器不断地启动,我可以通过SSH进入,并找出如何启用sudo权限,但不是…它被创build,构build运行,然后终止。

TL; DR; 什么会导致EBS支持的AMIdynamic分解为不允许sudo

竹是用一个键设置的,所以不应该要求一个实际的密码(据我所知没有一个),这意味着缺乏ttyinput应该不重要,对吗?

不,这是你困惑的地方。 你如何validationSSH与sudo没有任何关系。 如果将sudoconfiguration为需要密码,则必须input用户的密码。 如果你不这样做,它将无法正常工作。 如果用户没有密码,那么它不可能工作。

看来你应该重新configurationsudo

  • 它不需要tty
  • 它不需要密码

例如,如果我想要一个名为bamboo的用户能够在没有任何用户的情况下执行任何命令,在我的/ etc / sudoers文件中,我可以

 bamboo ALL=(ALL) NOPASSWD: ALL 

正如文档告诉你的 ,如果Atlassian提供的图像没有这样做,那么你应该创build一个自定义图像 。

检查/ etc / sudoers文件是否configuration正确。 当我们的某个构build脚本覆盖了我在/ etc / sudoers文件中导致权限问题所做的更改时,我昨天收到了这条错误消息。