我正在使用 Atlassian Bamboo 设置构建服务器。它允许使用“弹性映像”,我可以指定使用哪个 AMI(我使用的是 Amazon Linux/CentOS 映像)。它还允许您添加脚本以“配置”服务器。当我使用脚本运行构建时sudo
,我收到如下错误:
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
Bamboo 设置了密钥,因此不需要实际密码(据我所知没有),这意味着缺少 tty 输入应该没关系,对吗?
如果服务器不断启动,我可以通过 SSH 进入它并弄清楚如何启用 sudo 权限,但事实并非如此...它被创建,构建运行,然后终止。
TL;DR;什么原因导致动态启动的 EBS Backed AMI 不允许sudo
?
答案1
Bamboo 设置了一个密钥,因此不需要实际密码(据我所知没有密码),这意味着缺少 tty 输入应该没关系,对吗?
不。这就是你感到困惑的地方。你如何对 ssh 进行身份验证与 sudo 无关。如果 sudo 配置为需要密码,那么你必须输入用户的密码。如果你不输入,它将无法工作。如果用户没有密码,那么它就不可能工作。
似乎你应该重新配置 sudo,以便
- 它不需要 tty
- 不需要密码
例如,如果我想要一个名为竹子能够以任何用户身份无需密码执行任何命令,在我的/etc/sudoers我可以有文件
bamboo ALL=(ALL) NOPASSWD: ALL
答案2
正如文档告诉你的那样如果 Atlassian 提供的图像不能满足您的要求,那么您应该创建自定义图像。
答案3
检查 /etc/sudoers 文件是否配置正确。昨天,当我们的构建脚本之一覆盖了我在 /etc/sudoers 文件中所做的更改时,我收到了此错误消息,从而导致权限问题。