Как установить тайм-аут для sudo, запрашивающего пароль?

Например, если я запустил sudo apt-get install vlc, он попросит меня ввести пароль sudo.

Если я не укажу пароль для sudo, он [sudo] password for avinash: останется надолго. 1]

Как установить это время ожидания пароля sudo? Если это время ожидания истекает, оно автоматически показывает time expires. Возможно ли это?

Примечание: я не спрашиваю, как долго запоминает пароль (RootSudoTimeout - Документация сообщества Ubuntu).

1
задан 9 January 2014 в 17:39

2 ответа

Нет, это невозможно. Сам ввод пароля не имеет на нем таймера. Он будет ждать, пока вы не подтвердите ввод.

Если вы хотите отменить команду вместо ввода пароля, нажмите Ctrl-C.

3
ответ дан 24 May 2018 в 13:16
  • 1
    Это действительно возможно с помощью специальной программы SUDO_ASKPASS. – Raúl Salinas-Monteagudo 5 November 2015 в 16:19

Легко использовать функцию SUDO_ASKPASS от sudo.

Создайте этот скрипт sudo-askpass-timeout.sh где-нибудь:

#! /bin/bash -eu   ## dash doesn't support read -s

# "read" will not reset the terminal echo mode if it is canceled. Let's save/restore the tty status.
stty_orig=`stty -g`
trap 'stty "$stty_orig"' EXIT

## Default timeout is 60 seconds.
if read -s -t ${READ_TIMEOUT:-60} -p "$*"
then
    echo "$REPLY"
else
    echo "Timeout" >&2
    exit 1
fi

Затем создайте что-то вроде sudo-timeout.sh в том же каталоге:

[ f2]

Пример:

sudo-timeout.sh apt-get update  ##Default: 60 second timeout
sudo-timeout.sh -t 30 apt-get update
2
ответ дан 24 May 2018 в 13:16

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

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