LINUX.ORG.RU

Автоматический ввод пароля sudo из скрипта.

 , ,


0

4

Хочу сделать скрипт для запуска программы от рута, нужно сделать что-то типо:

echo "password" | sudo -S echo -n 2>/dev/random 1>/dev/random

На дебиане в прошлом году это работало, сейчас сижу на арче и как понимаю с последними обновами sudo это просто запретили. Как заставить это работать?

Не надо так делать. Добавь возможность выполнения определенной команды через sudo без пароля.

Tanger ★★★★★
()
Ответ на: комментарий от enot_obrmot

Используют системную библиотеку.

Если в скрипте хочешь ввести пароль, можешь взять expect. Но его обычно по умолчанию в системе нет - надо ставить.

shell-script ★★★★★
()
Ответ на: комментарий от enot_obrmot

Используют системную библиотеку.

А тут вот поподробней

Смотри в исходники sudo. Вместо того, чтобы выдавать запрос в консоль, графические обёртки запрашивают пароль с помощью тулкита. В скрипте это если что не повторить. Это надо язык, который умеет инклудить сишные библиотеки.

man expect покажет, как им пользоваться.

Но как уже выше говорили - это неправильный подход. Правильно - дать права на команду в sudoerc.

N.B.: Говорят же, что арч даёт глубокое понимание системы...

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Скажем так, первое, у меня есть скрипт для запуска сервисов vbox от рута без ввода пароля. И я хотел на основе его работы сделать что то типо pkexec

enot_obrmot
() автор топика
Ответ на: комментарий от shell-script

А в python вроде как нельзя сишные библиотеки инклудить, хотя он на C написан, и даже вроде как библиотеки под него можно на c писать

enot_obrmot
() автор топика
Ответ на: комментарий от enot_obrmot

А теперь не vbox запустить спокойно и не сделать программу

enot_obrmot
() автор топика
Ответ на: комментарий от shell-script

N.B.: Говорят же, что арч даёт глубокое понимание системы…

а есть примеры дистрибутива которые учат использовать sudoers и не одобряют sudo?

usi_svobodi
()
Ответ на: комментарий от shell-script
import sh

password = 'password'

with sh.contrib.sudo(password, _with=True):
    print(ls("/root"))

Я такую дичь нашёл, скрипт на пайтоне, буду тестить, смотреть что внутри)

enot_obrmot
() автор топика
Последнее исправление: enot_obrmot (всего исправлений: 1)
Ответ на: комментарий от Tanger

Не надо так делать

Почему?
Для чего тогда вообще сделали параметр ‘-S’?
Просто спрашиваю. Интересно.

mexx
()
Ответ на: комментарий от mexx

Почему?

$ echo 'pa$$w0rd' | sudo -S -p"" cat -
$ echo 'pa$$w0rd' | sudo -S -p"" cat -
pa$$w0rd

В случае если sudo закешировало авторизацию и не будет спрашивать пароль - он попадет вызываемой команде в стандартный ввод.

Хранить пароль открытым текстом в скрипте - идея плохая. (хотя не факт что ТС это делает)

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Хранить пароль открытым текстом в скрипте - идея плохая.

Да это то понятно.
Но есть же временные вещи, типа kdialog –password и т.п.
И в чем прямо вот опасность?

mexx
()
Ответ на: комментарий от mexx

И в чем прямо вот опасность?

То что пароль может попасть в stdin недостаточно?

типа kdialog –password

Так можно и SUDO_ASKPASS использовать.


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

Но я не могу придумать сценарий при котором стоит использовать sudo -S в скрипте.

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

То что пароль может попасть в stdin недостаточно?

Ну вообще … не знаю.
Ну попал, ну скрипт в фоне отработал и всё.

Но я не могу придумать сценарий при котором стоит использовать sudo -S в скрипте.

Вот. Отсюда и мой вопрос выше про нужность ‘-S’

mexx
()
Ответ на: комментарий от Tanger

Есть сценарий, если тебя задолбало вводить пароль, даже короткий. Ну а в целом то я хочу сейчас повторить на пайтоне pkexec. Юзал на дебиане те скрипты, щас просто копался в них и нашёл пару скриптов с этой строкой.

ДОСТАЛИ СО СВОИМ /etc/sudoers, ну давайте покукарекайте, если я юзаю кучу дистров, мне удобней их скопировать и закинуть.

enot_obrmot
() автор топика
Ответ на: комментарий от mexx

Ну попал, ну скрипт в фоне отработал и всё.

Именно! И я не пойму, что опасного запускать vbox и systemctl start vbox-что-то_там от рута. Это мой скрипт же, не какого то плохого человека

enot_obrmot
() автор топика
Последнее исправление: enot_obrmot (всего исправлений: 1)
Ответ на: комментарий от enot_obrmot

Есть сценарий, если тебя задолбало вводить пароль, даже короткий

Так поставь kali linux Впрочем там уже тоже non-root пользователь появился по умолчанию…

ну давайте покукарекайте

echo "%sudo ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/sudo-nopasswd
Tanger ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.