Как узнать в терминале, что у вас есть права 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, чтобы знать, что мне нужно действовать ...
[Я все еще хотел бы знать, существует ли лучший 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
У вашего терминала нет «привилегий 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
.