Я знаю, что это будет звучать наивным большинству из Вас, но я являюсь все еще новым в Linux, поэтому терпите меня.
Я пытаюсь создать пакетный файл для автоматизации нескольких команд.
Одна из тех команд sudo -i
так как я должен получить доступ к некоторым файлам в корне.
Таким образом, мой сценарий до сих пор похож на это:
#!/bin/bash
sudo -i
cd my-server/bin
./run-server.sh
Я знаю это после sudo -i
следует за подсказкой для пароля, таким образом, я могу эмулировать это в своем сценарии?
Можно взять 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
Справедливый вопрос. Но решительно желательно, что Вы не идете об этом путем, которым Вы в настоящее время делаете попытку/предполагаете его. Причина избежать Вашего подхода состоит в том, что он требует ввода Вашего пароля в текстовый файл, который мог быть считан другими пользователями/взломщиками. Теперь, Вы могли установить файл на 600 полномочий так, чтобы он мог только быть считан Вашим пользователем (и корень), но я не уверен, могут ли подкоманды сценариев быть зарегистрированы где-нибудь, делая Ваш пароль снова доступным потенциальным взломщикам. Я предполагаю, что реальный вопрос, почему Вам нужен сценарий для входа в систему как корень автоматически?
это автоматизированный процесс или там некоторая другая причина, Вы не можете просто ответить на подсказку пароля, которая представлена при запущении скрипта, как? Если это - автоматизированный процесс, необходимо просто удалить sudo строку и добавить, что сценарий звонит в крон пользователей root. Существуют тонны документации относительно того, как настроить задания крона, доступные простым поиском Google, но можно начать с это )
, Кроме того, это - сценарий, который просто называет другой сценарий. Необходимо, вероятно, просто сделать выполненным-server.sh только исполняемый файл корнем, затем затем использовать sudo su
, чтобы войти в корень, затем выполнить его с /my-server/bin/run-server.sh
. Снова, Вы могли добавить это к крону корня, если необходимо автоматизировать его в расписании.
ПРЕДУПРЕЖДЕНИЕ : не пишут сценарий, это, и особенно не вводит его на командной строке (это будет зарегистрировано)
echo 'PASSWORD' | sudo -S /my-server/bin/run-server.sh