как получить предупреждение, если терминал имеет права sudo, а также показывает, сколько времени осталось?

Как узнать в терминале, что у вас есть права sudo? (зная, что у меня есть эти привилегии, я могу просто набрать sudo -k) Было бы лучше не добавлять в терминал слишком много информации, просто какое-то простое и маленькое предупреждение!

ОСТАЛОСЬ ВРЕМЯ НЕВОЗМОЖНО, верно?

Кроме того, как узнать, сколько времени у меня осталось с этими привилегиями на этом конкретном терминале? (так что я могу просто дать этому закончиться вместо того, чтобы печатать sudo -k). Я думаю, что оставшееся время может отображаться каждый раз, когда я нажимаю клавишу Enter.

РЕДАКТИРОВАТЬ: я исследовал больше и обнаружил, что /var/lib/sudo/$USER/$nPts (где $ nPts - это текущие значения терминалов по состоянию на ps -p $), его временная метка обновляется каждый раз, когда выдается команда sudo, и она доступна только если вы используете команду sudo, то оставшееся время всегда будет настроенным ...

PS .: В качестве альтернативы я попытался alias sudo='sudo -k', но мне не нравится вводить пароль для каждой команды ... А также, это alias sudos='sudo -k' (или alias ssudo='sudo -k', хорошо, если вы набрали длинную строку, просто нажмите Home и введите 's') работает, если вы хотите выполнить только одну команду, набрав sudos. Но я все еще скучаю по тому, чтобы знать, когда у меня есть обычные права sudo, чтобы знать, что мне нужно действовать ...

10
задан 16 March 2014 в 00:14

2 ответа

[Я все еще хотел бы знать, существует ли лучший answear.]

Я нашел путь, который работает, и подсказка будет сохранена на одной строке:

в конце Вашего ~/.bashrc добавьте это:

function FUNCsudoOn() { 
    if sudo -n uptime 2>/dev/null 1>/dev/null; then 
        echo -ne "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"; 
        #echo #without newline, the terminal seems to bugout with lines that are too big... discomment this if you find any problems...
    fi; 
}
function FUNCpromptCommand () { 
    FUNCsudoOn
}
export PROMPT_COMMAND=FUNCpromptCommand
#export PS1="\`FUNCsudoOn\`$PS1" #this also works, use instead of PROMPT_COMMAND

Править: Я нашел это sudo -n uptime обновит sudo тайм-аут, поэтому каждый раз Вы поражаете клавишу Enter, что sudo время будет обновлено... Это делает знание остающегося времени бесполезным, поскольку это всегда будет настроенное, принимая значение по умолчанию к 15 минутам...

и найти лучшее форматирование цветов для Вас являются на вкус, можно использовать ScriptEchoColor с --escapedchars опция как:

echoc --escapedchars "@{nRlyo} SUDO " #that outputs below...
echo -e "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"

чтобы просто остановить мигание удаляют \E[5m как в \E[0m\E[93m\E[41m\E[1m SUDO \E[0m

5
ответ дан 16 March 2014 в 00:14

У вашего терминала нет «привилегий sudo», если вы не делаете что-то глупое, как sudo bash НЕ ДЕЛАЙТЕ ЭТОГО!

Все, что вам нужно сделать, чтобы «иметь нормальное состояние» привилегии sudo »- воздерживаться от ввода sudo перед командой.

/usr/bin/id - хороший способ увидеть, что делает sudo. Например:

id -a        # returns my UID info
sudo id -a   # returns root's info
id -a        # me again
sudo id -a   # root again

Страница man sudo гласит: «Политика sudoers кэширует учетные данные в течение 15 минут, если они не отменены в sudoers (5)». Это означает, что по умолчанию, если вы введете команду sudo (и введете свой пароль), а затем подождите 14,9 минуты, прежде чем вводить вторую команду sudo, вам больше не придется вводить пароль. Если вы подождете 15,1 минуты, вам придется повторно ввести пароль. sudo -k просто сразу истекает 15-минутный таймер. Единственное использование, которое я вижу для sudo -k, - это когда вы собираетесь отдать свой разблокированный терминал кому-то, кому вы не доверяете UID 0.

0
ответ дан 16 March 2014 в 00:14

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

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