Установите HISTIGNORE на " sudo -S "
$ export HISTIGNORE='*sudo -S*'
Затем безопасно передайте свой пароль sudo:
$ echo "your_password" | sudo -S -k <command>
«HISTIGNORE» означает не сохранять эту команду в историю. Это история в памяти или файл "~ / .bash_history".
Например, ниже приведен безопасный путь вашего пароля к команде sudo без сохранения истории вашего пароля.
«-S» означает использовать стандартный пароль для пароля,
«-K» означает игнорировать кэшированные учетные данные, чтобы заставить sudo всегда спрашивать. Это для последовательного поведения.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
Недостатком вышеописанного метода является то, что если вы хотите увидеть команды, которые вы запускали в истории позже, их там не будет. Другой способ заключается в обновлении кэша учетных данных аутентификации sudo (по умолчанию включено с 5-минутным таймаутом), а затем запустите sudo отдельно. Но недостатком этого является то, что вам нужно знать о 5-минутном кеше.
Например:
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
Примечание. Я запускал sudo перед каждой командой, чтобы убедиться, что кэш sudo обновляется, поскольку по умолчанию используется 5 минут. Да, whoami не должно занимать 5 минут, но я полагаю, что он должен запускаться перед каждой командой для согласованности. Вы также можете поставить "export HISTIGNORE = ' sudo -S'"в файле ~ / .bashrc, затем загрузите его с помощью". ~ / .bashrc "или выйдите из системы, затем войдите в систему. Однако я думаю использовать это для целей написания сценариев, поэтому я буду держать его на вершине всех моих сценариев для обеспечения наилучшей практики безопасности. Настройка" echo "" | Вместо этого sudo -S -v "для переменной также может быть хорошей идеей, тогда просто запускайте переменную перед каждой командой, которой нужны привилегии root, см. комментарий Janar. Комментарий" John T "также должен включать параметр" -k " , как будто вы запускаете «sudo -S» без «-k» и кеш аутентификации sudo уже имеет ваши учетные данные (и он по-прежнему действителен, кеш аутентификации sudo по умолчанию равен 5 минутам), тогда bash вместо этого запустит ваш пароль как команду, которая Плохо.
halt
запускать с правами root.