как получить предупреждение, если терминал имеет права 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.05.2020, 10:42

2 ответа

У вашего терминала нет «привилегий 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.

4
ответ дан 16.05.2020, 10:43
  • 1
    Кроме того, в остающееся время я хочу знать, сколько времени оставляют каждый раз, когда я нажимаю клавишу Enter на терминале. [Приблизительно 110], я волнуюсь по поводу взломщиков, пытающихся удаленно получить доступ к моей машине (я действительно не знаю, могут ли они сделать это так или иначе...), или в случае, если я оставляю свою машину открытой, не запирая его в течение нескольких моментов... хорошо, основное назначение то, что: Я хочу сделать это этот путь! Я не забочусь о необходимости к типу sudo -k и моему паролю снова позже как много раз, я должен, я чувствую себя хорошо, когда я делаю это этот путь!:) – Guy 16.05.2020, 10:43
  • 2
    Извините за напыщенную речь это кажется, что Вы должны alias k=/usr/bin/sudo -k, заменить эти sudo команда с псевдонимом или колотить функцию, которая обертывает вызов к /usr/bin/sudo с /usr/bin/touch $HOME/tmp/$/sudotime, и наконец, добавьте что-то для печати $ {{ время (теперь) - время ($HOME/tmp/$$/sudotime))) в подсказке Bash. Не тривиальный, но если это заставит Вас чувствовать себя хорошо, пойдите для него. – Ben Trengrove 16.05.2020, 10:43
  • 3
    " Избегайте использования sudo"? Sudo был решением распределения пароля root, создания двоичных файлов setuid или использования /bin/su. Вы уверены, что хотите отбросить его? " Удаленно получите доступ к моей машине..." и, я предполагаю, вступаю во владение /proc/YourPID/fd/{0,1,2}. Нет. Если к Вашей машине удаленно получают доступ, у Плохого Парня есть более легкие пути к UID 0. Необходимо увеличить нечто Linux до этого уровня беспокойства. – Ryan R 16.05.2020, 10:44
  • 4
    это интересно, я также зарегистрировался бы, когда попытка произошла, или еще лучше, завершите работу любой сетевой связи, прохладной! но даже если бы я скрываюсь sudo с псевдонимом к какому-либо случайному слову, они могли все еще тип /usr/bin/sudo вместо sudo, и это все еще работало бы, как sudo делает: (. Так или иначе мне нравится идея.. Интересно, изменяю ли я реальное /usr/bin/sudo, это повредит что-то другое, чем все мои сценарии, которые используют его.. даже если я делаю так, они, путем чтения сценариев, могли бы предположить то, чем стал sudo.. – vladCovaliov 16.05.2020, 10:44
  • 5
    Вы сказали " рефрен от ввода sudo перед command". но если я хочу проверить свои правила брандмауэра с iptables -L это работа привычки если я тип sudo iptables -L. Моя точка, как мы можем на самом деле избегать использования sudo? – Alexander Volkov 16.05.2020, 10:44

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

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

в конце вашего ~/.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.05.2020, 10:43

Теги

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