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

Судо, похоже, не подчиняется параметру -S

Я запускаю некоторые сценарии как часть до / после развертывания с использованием 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