Как автоматизировать ввод пароля в пользовательском пакетном файле?

Как автоматизировать ввод пароля в пользовательском пакетном файле?

Я знаю, что для большинства из вас это покажется наивным, но я все еще новичок в Linux, поэтому, пожалуйста, отнеситесь ко мне с пониманием.

Я пытаюсь создать пакетный файл для автоматизации нескольких команд.
Одна из этих команд — это sudo -iтак как мне нужно получить доступ к некоторым файлам в root.

Итак, мой сценарий пока выглядит так:

#!/bin/bash
sudo -i
cd my-server/bin
./run-server.sh

Я знаю, что после этого sudo -iпоследует запрос пароля, могу ли я сымитировать это в своем скрипте?

решение1

Вы можете взять sudoчасть своего скрипта и гарантировать, что пользователи будут вызывать скрипт с помощью sudo scriptname.

Удалите sudo -iстроку из вашего скрипта и замените ее на эту:

# Must prefix with sudo when calling script
if ! [[ $(id -u) == 0 ]]; then
    echo You must call this script using sudo. Aborting.
    exit 99
fi

решение2

Справедливый вопрос. Но настоятельно рекомендуется, чтобы вы не делали этого так, как вы сейчас пытаетесь/представляете. Причина, по которой следует избегать вашего подхода, заключается в том, что он требует ввода вашего пароля в текстовый файл, который могут прочитать другие пользователи/злоумышленники. Теперь вы можете установить для файла разрешение 600, чтобы его мог прочитать только ваш пользователь (и root), но я не уверен, могут ли подкоманды скрипта где-то регистрироваться, делая ваш пароль снова доступным для потенциальных злоумышленников. Я полагаю, что реальный вопрос заключается в том, зачем вам скрипт для автоматического входа в систему как root?

Это автоматизированный процесс или есть какая-то другая причина, по которой вы не можете просто ответить на запрос пароля, который отображается при запуске скрипта как есть? Если это автоматизированный процесс, вам следует просто удалить строку sudo и добавить вызов скрипта в cron пользователя root. Существует множество документации о том, как настроить задания cron, доступных с помощью простого поиска в Google, но вы можете начать сэтот)

Более того, это скрипт, который просто вызывает другой скрипт. Вероятно, вам следует просто сделать run-server.sh исполняемым только пользователем root, затем просто использовать sudo suдля входа в систему root, а затем запустить его с помощью /my-server/bin/run-server.sh. Опять же, вы можете добавить это в cron пользователя root, если вам нужно автоматизировать его по расписанию.

ПРЕДУПРЕЖДЕНИЕ:Не записывайте это, иособенноне вводите его в командной строке (он будет записан в журнал)

echo 'PASSWORD' | sudo -S /my-server/bin/run-server.sh

Связанный контент