команда sudo и как автоматически получить пароль

У меня проблема в том, что:

У меня есть файл .sh

    #!/bin/bash 

var=$(zenity --forms --title="Tắt giờ vợ yêu nhé" \
    --text="Vợ muốn tắt máy sau bao nhiêu phút nữa" \
    --separator="," \
    --add-entry="Vợ điền số vào đây")
case $? in
    0)  sudo shutdown -h $var           
    ;;
    1)
        exit 0;;
    -1)
        echo "An unexpected error has occurred."
    ;;
esac

Как команда sudo может автоматически ввести пароль из команды echo или из файла. Я читал о параметрах sudo -S, но я не знаю, как это работает. Любой может привести пример по этому поводу! Спасибо, ребята

4
задан 13 December 2012 в 19:42

2 ответа

Лучше изменить правила sudo вместо того, чтобы хранить чистый пароль в текстовом файле:

Создайте новый файл, например /etc/sudoers.d/script_rights, и нажмите

%user ALL = NOPASSWD:/sbin/shutdown

, где пользователь - это пользователь, которому разрешено запустить скрипт.sh. Тогда скрипт не будет запрашивать пароль для запуска команды выключения.

0
ответ дан 13 December 2012 в 19:42

Не очень безопасно, просто чтобы сказать это, прежде чем я дам ответ, поскольку кто-то может просто открыть файл и увидеть пароль, но вот как:

Предположим, мы хотим выполнить команду sudo shutdown -h 1 но мы не хотим вводить пароль. Мы сделаем это так:

echo PASSWORD | sudo -S shutdown -h1

Например, если бы мой пароль был x , то он бы выглядел примерно так:

echo x | sudo -S shutdown -h1

Другой пример: если я хотел сделать обновление apt-get, то обновлялся без ввода пароля. Я бы сделал это:

echo x | sudo -S apt-get update && sudo apt-get upgrade

Первый sudo (тот, у кого параметр -S) получит пароль со стандартного ввода, в данном случае с клавиатуры в терминале. , Затем он будет хранить пароль для оставшегося сеанса терминала. Поскольку в этом сеансе я выполняю 2 команды apt-get, одну с обновлением, а другую с обновлением, нет необходимости вводить пароль еще раз для второго apt-get, поскольку пароль активен для используемого сеанса. Таким образом, остальным командам sudo не нужно будет вводить другой пароль до тех пор, пока сессия не закроется (пока вы не закроете терминал или скрипт, используя пароль, закончится).

0
ответ дан 13 December 2012 в 19:42

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

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