Технически это возможно с помощью sudo -A
. От man 8 sudo
:
-A
Обычно, если sudo
требует пароль, он будет читать его с терминала пользователя. Если указана опция -A
(askpass), запускается (возможно, графическая) вспомогательная программа для считывания пароля пользователя и вывода его на стандартный вывод. Если установлена переменная среды SUDO_ASKPASS
, она указывает путь к вспомогательной программе. [...]
Ваше решение может выглядеть так:
Напишите вспомогательный скрипт. Скрипт должен проверить, доступен ли X11.
- Если это так, скрипт должен отобразить желаемое окно. Если вы позволите, сценарий прочитает ваш пароль из файла и распечатает на стандартный вывод (
cat file
может быть достаточно).
- Если X11 недоступен, сценарий должен использовать stdin (например,
read -rs
в Bash), чтобы получить пароль от вас; затем распечатайте его на стандартный вывод.
Защита файла (чтобы никто не мог его прочитать) и сценария (чтобы никто не мог его изменить) - теперь ваша задача.
Установите SUDO_ASKPASS="/path/to/your/helper/script"
и экспортируйте его.
- Определите псевдоним
alias sudo='sudo -A'
.
Обратите внимание, что ответ только утверждает, что это технически возможно. Это не говорит, что это безопасно или рекомендуется.