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

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

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

Таким образом, мой сценарий до сих пор похож на это:

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

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

1
задан 15 November 2019 в 23:24

2 ответа

Можно взять 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
ответ дан 3 December 2019 в 06:49

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

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

, Кроме того, это - сценарий, который просто называет другой сценарий. Необходимо, вероятно, просто сделать выполненным-server.sh только исполняемый файл корнем, затем затем использовать sudo su, чтобы войти в корень, затем выполнить его с /my-server/bin/run-server.sh. Снова, Вы могли добавить это к крону корня, если необходимо автоматизировать его в расписании.

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

echo 'PASSWORD' | sudo -S /my-server/bin/run-server.sh
2
ответ дан 3 December 2019 в 06:49

Другие вопросы по тегам:

Похожие вопросы: