Назад | Перейти на главную страницу

EC2 Автоматический экземпляр Sudo не работает

Я использую 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; Что может привести к тому, что динамически запускаемый AMI с поддержкой EBS не позволит sudo?

Bamboo настраивается с помощью ключа, поэтому фактический пароль не требуется (насколько я знаю, его нет), а это значит, что отсутствие ввода tty не имеет значения, верно?

Нет. Вот где вы запутались. То, как вы прошли аутентификацию по ssh, не имеет ничего общего с sudo. Если sudo настроен так, чтобы требовать пароль, вам необходимо ввести пароль пользователя. Если вы этого не сделаете, это не сработает. Если у пользователя нет пароля, он не может работать.

Кажется, вам следует перенастроить sudo так, чтобы

  • это не требует tty
  • не требует пароля

Например, если мне нужен пользователь с именем бамбук чтобы иметь возможность выполнять без пароля любую команду от имени любого пользователя, в моем / и т.д. / sudoers файл, который я мог бы иметь

bamboo  ALL=(ALL)   NOPASSWD: ALL

Как сказано в документации, если изображения, предоставленные Atlassian, не делают того, что вы хотите, вам следует создать собственное изображение.

проверьте, правильно ли настроен файл / etc / sudoers. Вчера у меня было это сообщение об ошибке, когда один из наших сценариев сборки перезаписал изменения, которые я сделал в файле / etc / sudoers, что привело к проблеме с разрешением.