
Я использую 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
, я получаю ошибки об отказе в доступе.
TheсценарийЯ пытаюсь запустить так же просто, как:
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 Backup AMI не будет разрешен sudo
?
решение1
Bamboo настроен с помощью ключа, поэтому не должен требовать реального пароля (насколько мне известно, его нет), а значит, отсутствие ввода tty не должно иметь значения, верно?
Нет. Вот тут вы запутались. То, как вы аутентифицировались в ssh, не имеет никакого отношения к sudo. Если sudo настроено на запрос пароля, то вам нужно ввести пароль пользователя. Если вы этого не сделаете, это не сработает. Если у пользователя нет пароля, то это не может работать.
Кажется, вам следует перенастроить sudo так, чтобы
- не требует tty
- не требует пароля
Например, если бы мне нужен был пользователь с именембамбукчтобы иметь возможность выполнить без пароля любую команду как любой пользователь, в моем/etc/sudoersфайл, который я мог бы иметь
bamboo ALL=(ALL) NOPASSWD: ALL
решение2
Как вам сказала документацияЕсли изображения, предоставленные Atlassian, не отвечают вашим требованиям, то вам следуетсоздать собственное изображение.
решение3
проверьте, правильно ли настроен файл /etc/sudoers. Вчера я получил эти сообщения об ошибке, когда один из наших скриптов сборки перезаписал изменения, которые я сделал в файле /etc/sudoers, что привело к проблеме с разрешениями.