Я использую sudo на моей рабочей станции Linux, и он настроен на запрос пароля каждый раз.

Но вводить пароль каждый раз громоздко, а также немного опасно, если у меня нет фокуса на нужном окне.

Я хотел бы настроить sudo, чтобы иметь следующее поведение:

  • Если без головы (без X11), запросите полный пароль
  • Если X11 доступен, запрос на подтверждение, подтверждение должно быть окном графического интерфейса с кнопкой разрешения и отказа и некоторым простым вводом (например, типа да для подтверждения, чтобы предотвратить случайное нажатие при вводе)

2 ответа2

1

Технически это возможно с помощью sudo -A . От man 8 sudo:

-A
Обычно, если sudo требует пароль, он будет читать его с терминала пользователя. Если указана опция -A (askpass), запускается (возможно, графическая) вспомогательная программа для считывания пароля пользователя и вывода его на стандартный вывод. Если установлена переменная среды SUDO_ASKPASS , она указывает путь к вспомогательной программе. [...]

Ваше решение может выглядеть так:

  1. Напишите вспомогательный скрипт. Скрипт должен проверить, доступен ли X11.

    • Если это так, скрипт должен отобразить желаемое окно. Если вы позволите, сценарий прочитает ваш пароль из файла и распечатает на стандартный вывод (cat file может быть достаточно).
    • Если X11 недоступен, сценарий должен использовать stdin (например, read -rs в Bash), чтобы получить пароль от вас; затем распечатайте его на стандартный вывод.

    Защита файла (чтобы никто не мог его прочитать) и сценария (чтобы никто не мог его изменить) - теперь ваша задача.

  2. Установите SUDO_ASKPASS="/path/to/your/helper/script" и экспортируйте его.

  3. Определите псевдоним alias sudo='sudo -A' .

Обратите внимание, что ответ только утверждает, что это технически возможно. Это не говорит, что это безопасно или рекомендуется.

0

Как правило, это более опасно, так как делает локальное повышение привилегий очень простым. Возможно, вы можете достичь близких к намеченным результатам, скомпилировав polkit с тайм-аутом, который соответствует вашим потребностям? https://unix.stackexchange.com/questions/409636/pkexec-how-do-i-set-a-custom-timeout-for-auth-admin-keep-when-writting-a-pkexe

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .