Я запускаю некоторые сценарии как часть до / после развертывания с использованием DeployHQ, мне нужно иметь возможность вызывать сценарий в одной строке, и чтобы не было обратной связи с терминала, поэтому я хочу передать пароль в команду sudo (вместо этого sudo запрашивает пароль во время использования)
Я пытаюсь получить sudo
работать с stdin
сделав что-то вроде;
echo my_password | sudo -S chown -R my_user:www-data /srv/www/my_site/public_html/
Но то, что возвращается;
[sudo] password for my_user:
Sorry, try again.
[sudo] password for my_user:
sudo: 1 incorrect password attempt
Рассматриваемый пароль правильный, и когда команда запускается без -S
и пользователю предлагается ввести пароль - работает.
Может ли кто-нибудь указать, что я делаю не так?
Просто чтобы уточнить - я хочу, чтобы все еще оставался пароль, только тот, который я могу передать.
Я не уверен что не так
Однако, если вы хотите запустить sudo без запроса пароля, вы можете сделать это, отредактировав файл конфигурации sudo. Для этого используйте команду visudo
В файле по умолчанию есть много примеров, поэтому просто найдите NOPASSWD
и вы должны найти пример, чтобы начать
из руководства sudo:
Параметр -S (stdin) заставляет sudo читать пароль со стандартного ввода, а не с терминального устройства. После пароля должен стоять символ новой строки. Это означает, что вы должны закончить пароль с \ n
РЕДАКТИРОВАТЬ: Я провел пару тестов, и, честно говоря, в моей тестовой системе ваш синтаксис работает правильно. (эхо mypass | sudo -S ....)
2-е РЕДАКТИРОВАНИЕ: попробуйте использовать следующий синтаксис: echo -e "mypass\n" | sudo -S command