como ser avisado se o terminal tiver privilégios de sudo e também mostrar quanto tempo resta?

10

Como ver no terminal que você tem privilégios de sudo? (então, sabendo que tenho esses privilégios, basta digitar sudo -k) Seria melhor não adicionar muita informação ao terminal também, apenas algum tipo de alerta simples e pequeno!

TEMPO RESTANTE É IMPOSSÍVEL, certo?

Além disso, como ver quanto tempo ainda tenho com esses privilégios nesse terminal específico? (para que eu possa deixar terminar em vez de digitar sudo -k). Eu acho que o tempo restante pode aparecer sempre que eu pressionar a tecla Enter.

EDIT: Eu pesquisei mais e descobri que /var/lib/sudo/$USER/$nPts(onde $ nPts é o atual terminal pts a partir de ps -p $$) tem seu timestamp atualizado toda vez que um comando sudo é emitido, e só é acessível se você usar um comando sudo, portanto o tempo restante será sempre o configurou um ...

PS .: Como alternativa, tentei, alias sudo='sudo -k'mas não gosto de digitar a senha de todos os comandos ... E também alias sudos='sudo -k'( isso é alias ssudo='sudo -k'bom se você digitou uma linha longa, basta pressionar Home e digitar 's') funciona se você deseja emitir apenas um comando digitando sudos. Mas ainda sinto falta de saber quando tenho privilégios normais de sudo para saber que preciso agir ...

Poder de Aquário
fonte
2
Por que esse voto foi negado? Embora este não é o cargo mais clara, a pergunta do título ainda parece uma pergunta válida para mim (e uma pergunta muito útil, em que)
DaimyoKirby
você poderia dizer o que poderia ser esclarecido? meu post inicial não editado era 3 vezes maior e eu o limpei bastante para torná-lo mais conciso :) #
Aquarius Power
Acho que já era tarde - reli e faz mais sentido.
DaimyoKirby

Respostas:

5

[Eu ainda gostaria de saber se há uma resposta melhor.]

Eu encontrei uma maneira que funciona, e o prompt será mantido em uma única linha:

no final do seu ~/.bashrcadicione isto:

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

EDIT: Descobri que sudo -n uptimeatualizará o tempo limite do sudo, portanto, toda vez que você pressionar a tecla Enter, esse tempo será atualizado ... Isso torna inútil o conhecimento do tempo restante, pois ele sempre será o configurado, com padrão de 15min. .

e para encontrar a melhor formatação de cores para o seu gosto, você pode usar o ScriptEchoColor com a --escapedcharsopção:

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

para parar de piscar remova \E[5mcomo em\E[0m\E[93m\E[41m\E[1m SUDO \E[0m

Poder de Aquário
fonte
4

Seu terminal não "tem privilégios sudo", a menos que você faça algo bobo como sudo bash NÃO FAÇA ISSO!

Tudo o que você precisa fazer para "ter privilégios normais de sudo" é não digitar sudona frente do comando.

/usr/bin/idé uma boa maneira de ver o que sudofaz. Por exemplo:

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

A sudopágina do manual diz "A política de sudoers armazena em cache credenciais por 15 minutos, a menos que seja substituída por sudoers (5)". O que isso significa é que, por padrão, se você emitir um sudocomando (e digitar sua senha), aguarde 14,9 minutos antes de emitir um segundo sudocomando, não precisará digitar sua senha novamente. Se você esperar 15,1 minutos, precisará digitar novamente a senha. sudo -ksimplesmente expira o temporizador de 15 minutos imediatamente. O único uso que posso ver sudo -ké se você está prestes a render seu terminal desbloqueado para alguém em quem não confia UID 0.

waltinator
fonte
Você disse "evite digitar sudona frente do comando". Mas se eu quiser verificar minhas regras de firewall iptables -L, não funcionará, a menos que eu digite sudo iptables -L. Meu argumento é: como podemos realmente evitar o uso do sudo?
Aquarius Power
Além disso, sobre o tempo restante, quero saber quanto tempo resta cada vez que pressiono a tecla Enter no terminal. Sobre sudo -k, eu estou preocupado com crackers tentando acessar remotamente minha máquina (eu realmente não sei se eles podem fazê-lo de qualquer maneira ...), ou no caso de eu deixar a minha máquina aberta sem bloqueá-lo por alguns momentos ... bem, o ponto real é o seguinte: eu quero fazer desta maneira! Eu não ligo para ter que digitar sudo -ke minha senha novamente mais tarde quantas vezes eu precisar, me sinto bem quando faço dessa maneira! :)
Aquarius Power
"Evite usar o sudo"? Sudo foi a solução para distribuir a senha root, configurar binários ou usá-los /bin/su. Tem certeza de que deseja descartá-lo? "Acesse remotamente minha máquina ..." e, suponho, assuma o controle /proc/YourPID/fd/{0,1,2}. Não. Se sua máquina for acessada remotamente, o bandido terá maneiras mais fáceis de obter o UID 0. Você deve aumentar seu Linux-foo antes desse nível de preocupação.
Waltinator
Desculpe pelo discurso retórico, parece que você deveria alias k=/usr/bin/sudo -k, substitua o sudocomando por um apelido ou função bash que encerre a chamada /usr/bin/sudocom /usr/bin/touch $HOME/tmp/$$/sudotimee, finalmente, adicione algo para imprimir $ {{time (now) - time ($ HOME / tmp / $ $ / sudotime))) no seu prompt do Bash. Não é trivial, mas se isso fará você se sentir bem, faça isso.
Waltinator 12/13
isso é interessante, eu também registraria quando a tentativa acontecesse, ou melhor ainda, encerre qualquer comunicação de rede, legal! mas mesmo se eu me escondi sudocom um alias para qualquer palavra aleatória, eles ainda poderia digitar /usr/bin/sudoem vez de sudoe seria ainda trabalho como sudo faz :(. De qualquer forma eu gosto da idéia .. Eu me pergunto se eu mudar o real /usr/bin/sudoele vai quebrar algo diferente todos os meus scripts que o utilizam .. mesmo se eu fizer isso, eles poderiam, através da leitura dos scripts, adivinhem sudo tornou-se ..
Aquarius Poder