sudo ввод пароля в скрипте
Авто пароль и авто ответ в sudo. Скрипт Bash
И снова доброго времени суток. Уже обращался сегодня и помогли. А теперь новая проблема
Не получается автоматически подставить пароль в sudo и ответ yes для установки
Выход :
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
./1test.sh: строка 38: 123: команда не найдена
123 Это введенный пароль
Не совсем понял, что вы написали Попробовал так
Ошибка пропала, но и действие не выполнилось. А если заменить команду apt-get install, например на копирование файла, то получим
cp: невозможно создать обычный файл ‘/home/vlad/skr/1test.sh.cop’:
Отказано в доступе
где passwd12 — твой настоящий пароль. У меня работает.
я получаю его из поля для ввода
и экспорт сразу после получения?
не проще, потому-что допустим такую ситуацию- я даю этот скрипт тебе, а у тебя не прописано NOPASSWD, что тогда делать?
Если всё равно нужна sudo, значит все пользователи имеют право его выполнять, являясь членами группы wheel, скорее всего. Так и разреши членам этой группы выполнять apt-get через sudo без ввода пароля. Конечно, это потенциальная брешь, но, имхо, меньшая, чем отображение пароля в скрипте или в консоли (а значит, и в истории команд). Да и проще, потому что лишние скрипты городить не надо.
Т. е. ты хочешь, чтоб они по ssh заходили без пароля? Тогда сгенери для каждого ключи, положи их в нужные каталоги, и будут они логиниться без пароля. А для выполнения sudo apt-get на сервере измени на нём sudoers для группы wheel и добавь всех юзеров в эту группу (или просто разреши вообще всем выполнять apt-get без пароля, если таких, кому нельзя этого делать, там не зарегистрировано и не планируется). Ну а скрипт может автоматизировать вход по ssh, установку программ и что хочешь ещё, но, имхо, писать в нём открытым текстом пароли пользователей очень плохая идея, равно как и набирать эти пароли в консоли с сохранением в истории команд.
Ты делаешь скрипт для людей из твоей организации для компьютеров которыми рулишь в своей сети (за которой ты типа следишь) или это скрипт для совсем левых людей?
по моему мы отошли от темы. Давайте не будем думать зачем и почему я так делаю и будем рассматривать текущую ошибку
Я заметил следующую вещь
Если убрать конструкцию типа
(команды) | zenity
и сделать как в коде ниже, то все работает без проблем
значит проблема в передаче значения переменной PASSWD в составной оператор (от export pass=$PASSWD До echo «100» ; sleep 2)
Ввод пароля в скрипте
У товарища на Арче вот такая штука вполне себе работает:
А вот с подключением к SSH и на Арче такое не проканывает, есть способ передать пароль туда, или же только ключи создавать?
использовать expect шелл, или писать скрипты с использованием каких-то expect библиотек типа pexpect
-S ок, работает, спасибо. Почему на Арче работает без этой опции?
Или же мудрить с библиотеками и тп, как пишут ниже..
тут уже дело принципа стало:). Как передать пароль в консоли\скрипте?
И, я так понимаю, с SSH так не прокатит, ибо опции подобной нет?
все программы поддерживают пароль в конфиге. Пароль — дополнительная мера защиты, его всегда можно отключить.
Для sudo проще всего поставить NOPASSWD, потому что хранить пароль в скрипте не имеет никакого смысла.
sudo, ввод пароля прямо из скрипта
Знаю, быдлокодерская практика, но возможно ли?
Если пароль автоматом вводить, то чем это отличается от NOPASSWD в sudoers?
Проблема в том, что варианта с su нет, а скрипту надо выполняться тихо.
Если пароль автоматом вводить, то чем это отличается от NOPASSWD в sudoers?
тем, что враг узнает пароль, и сможет всё что угодно запускать с правами рута. А с NOPASSWD сможет запускать лишь то, что разрешили.
Читал, но, видимо, по диагонали. Спасибо.
то. Какой в этом смысл, вбивать пароль через stdin в скрипте?
ТС задал вопрос и получил ответ. Как он его будет использовать — вопрос к нему.
Или ты не знаешь, как работает stdin в скриптах =)?
expect или у судо вроде бы есть ключ на запуск с вводом пароля в stdin
ТС задал вопрос и получил ответ. Как он его будет использовать — вопрос к нему.
Или ты не знаешь, как работает stdin в скриптах =)?
хреново работает. Запускается две команды сразу, а потом нужно разбираться, почему эти команды зафэлились, и какая именно.
И кстати, пароль будет известен человеку, который запускает этот скрипт, т.к. право чтения у него имеется (скрипт обязан иметь право +r, а +x не обязательно). Этот пароль очевидно не хуже рутового, т.к. ТС в sudoers ничего не ограничил.
sudo с паролем в одной командной строке?
В напряженные дни я хотел бы бежать
на ночь и ложитесь спать, надеясь, что приложение будет установлено автоматически. Но то, что я вижу на следующий день, это экран, на котором sudo спрашивает у меня пароль. Итак, как я могу запустить sudo с паролем в одной командной строке, или есть другой способ сделать это?
Так что для вашего случая это будет выглядеть так:
Вы можете заменить вашу командную строку следующим образом:
$./configure && make && make install && halt
Вам будет предложено ввести пароль немедленно, затем остальные команды будут запущены с правами суперпользователя.
Это немного запутанно, но оно должно работать:
Вы также можете настроить sudo, visudo чтобы позволить пользователю использовать make как sudo без пароля.
Затем безопасно передайте свой пароль sudo:
«HISTIGNORE» означает не сохранять эту команду в историю. Это история в памяти или файл «
Например, ниже приведен безопасный путь вашего пароля к команде sudo без сохранения истории вашего пароля.
«-S» означает использовать стандартный пароль для пароля,
«-K» означает игнорировать кэшированные учетные данные, чтобы заставить sudo всегда спрашивать. Это для последовательного поведения.
Недостатком вышеописанного метода является то, что если вы хотите увидеть команды, которые вы запускали в истории позже, их там не будет. Другой способ заключается в обновлении кэша учетных данных аутентификации sudo (по умолчанию включено с 5-минутным таймаутом), а затем запустите sudo отдельно. Но недостатком этого является то, что вам нужно знать о 5-минутном кеше.
Используйте sudo без пароля ВНУТРИ скрипта
По какой-то причине мне, как пользователю, нужно запустить без sudo скрипт script.sh, которому для работы нужны привилегии root.
Я видел как единственное решение поставить sudo INSIDE script.sh. Давайте рассмотрим пример:
Конечно, если я выполню этот скрипт, я получу приглашение с просьбой ввести пароль. Затем я добавил в свой файл sudoers (в конце переписать все остальное):
Кстати, я тоже попробовал строку:
(кажется, я не до конца понял разницу)
Но это не решит мою проблему, если я не использую sudo для выполнения этого скрипта:
Итак, я говорю себе: «Хорошо, это означает, что если у меня есть файл, на который ссылаются в sudoers, как я это делал, он будет работать без запроса, только если я вызову его с помощью sudo, а это не то, что я хочу». ш> Итак, я создаю другой скрипт script2.sh следующим образом:
На самом деле это работает. Но я не совсем удовлетворен этим решением, в частности тем, что мне приходится использовать 2 сценария для каждой команды.
Этот пост предназначен для того, чтобы помочь людям, имеющим эту проблему, и найти то же решение (я не нашел в нем хорошего сообщения), и, возможно, у вас, ребята, найдутся лучшие решения.
Не стесняйтесь делиться своими идеями!
Я хочу настаивать на том, что это «обновление apt-get» было просто примером FAR, из которого на самом деле является мой сценарий. В моем сценарии много команд (с некоторыми конфигурационными файлами cd для корневого доступа), и решение не может быть «Ну, просто сделайте это напрямую с помощью apt-get».