¿Cómo ser advertido si la terminal tiene privilegios de sudo y también muestra cuánto tiempo queda?

10

¿Cómo ver en la terminal que tienes privilegios de sudo? (así que sabiendo que tengo estos privilegios, puedo escribir sudo -k) ¡Sería mejor no agregar demasiada información al terminal también, solo una especie de alerta simple y pequeña!

EL TIEMPO RESTANTE ES IMPOSIBLE, ¿verdad?

Además, ¿cómo ver cuánto tiempo todavía tengo con esos privilegios en ese terminal específico? (así que puedo dejar que termine en lugar de escribir sudo -k). Creo que el tiempo restante podría aparecer cada vez que presiono la tecla Enter.

EDITAR: Investigué más y descubrí que /var/lib/sudo/$USER/$nPts(donde $ nPts es el terminal actual pts a partir de ps -p $$) tiene su marca de tiempo actualizada cada vez que se emite un comando sudo, y solo es accesible si usa un comando sudo, por lo que el tiempo restante siempre será el configurado uno ...

PD: Alternativamente a eso, lo intenté alias sudo='sudo -k'pero no me gusta tener que escribir la contraseña para cada comando ... Y también, esto alias sudos='sudo -k'(o alias ssudo='sudo -k', bueno, si escribiste una línea larga, solo presiona Inicio y escribe 's') funciona si solo quiero emitir un comando escribiendo sudos. Pero aún extraño saber cuándo tengo los privilegios normales de sudo para saber que necesito actuar ...

Poder de acuario
fuente
2
¿Por qué fue rechazado? Aunque esta no es la publicación más clara, la pregunta del título todavía me parece una pregunta válida (y una pregunta bastante útil, por
cierto
¿podrías decir lo que podría aclararse? mi publicación inicial sin editar fue 3 veces más grande y la borré mucho para hacerlo más conciso :)
Aquarius Power
Creo que fue tarde, lo volví a leer y tiene más sentido.
DaimyoKirby

Respuestas:

5

[Todavía me gustaría saber si hay una mejor respuesta.]

Encontré una manera que funciona, y el mensaje se mantendrá en una sola línea:

Al final de su ~/.bashrcagregar esto:

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

EDITAR: descubrí que sudo -n uptimeactualizará el tiempo de espera de sudo, por lo que cada vez que presione la tecla Intro, ese tiempo de sudo se actualizará ... Eso hace que conocer el tiempo restante sea inútil, ya que siempre será el configurado, por defecto a 15 minutos ... .

y para encontrar el mejor formato de colores para su gusto, puede usar ScriptEchoColor con --escapedcharsopciones como:

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

para detener el parpadeo eliminar \E[5mcomo en\E[0m\E[93m\E[41m\E[1m SUDO \E[0m

Poder de acuario
fuente
4

Su terminal no tiene "privilegios de sudo", a menos que haga algo tonto como sudo bash ¡NO HAGA ESTO!

Todo lo que tiene que hacer para "tener privilegios normales de sudo" es abstenerse de escribir sudodelante del comando.

/usr/bin/idEs una buena manera de ver qué sudohace. Por ejemplo:

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

La sudopágina de manual dice "La política de sudoers almacena en caché las credenciales durante 15 minutos, a menos que se anule en sudoers (5)". Lo que esto significa es que, de manera predeterminada, si emite un sudocomando (e ingresa su contraseña), luego espera 14.9 minutos antes de emitir un segundo sudocomando, no tendrá que ingresar su contraseña nuevamente. Si espera 15.1 minutos, deberá volver a ingresar la contraseña. sudo -ksimplemente expira el temporizador de 15 minutos inmediatamente. El único uso que puedo ver sudo -kes si estás a punto de ceder tu terminal desbloqueado a alguien en quien no confías UID 0.

Waltinator
fuente
Dijiste "abstenerse de escribir sudodelante del comando". Pero si quiero verificar las reglas de mi firewall iptables -L, no funcionará a menos que escriba sudo iptables -L. Mi punto es, ¿cómo podemos evitar usar sudo?
Acuario Power
Además, sobre el tiempo restante, quiero saber cuánto tiempo queda cada vez que presiono la tecla Enter en el terminal. Sobre sudo -k, estoy preocupado por los atacantes para poder acceder remotamente a mi máquina (Realmente no sé si pueden hacerlo de todos modos ...), o en caso dejo mi máquina abierta sin bloquearlo durante unos momentos ... bueno, El punto real es que: ¡Quiero hacerlo de esta manera! No me importa tener que sudo -kvolver a escribir mi contraseña más tarde tantas veces como sea necesario, ¡me siento bien cuando lo hago de esta manera! :)
Acuario Power
"Evita usar sudo"? Sudo fue la solución para distribuir la contraseña de root, hacer que los binarios sean setuid o usar /bin/su. ¿Seguro que quieres descartarlo? "Acceso remoto a mi máquina ..." y, supongo, hacerse cargo /proc/YourPID/fd/{0,1,2}. No. Si se accede a su máquina de forma remota, Bad Guy tiene formas más fáciles de UID 0. Debe aumentar su Linux-foo antes de este nivel de preocupación.
Waltinator
Lo siento por la diatriba, suena como usted debe alias k=/usr/bin/sudo -k, sustituir el sudocomando con una función de alias o bash que envuelve la llamada a /usr/bin/sudocon /usr/bin/touch $HOME/tmp/$$/sudotime, y por último, añadir algo a imprimir $ {{time (ahora) - tiempo ($ HOME / tmp / $ $ / sudotime))) en su indicador de Bash. No es trivial, pero si te hará sentir bien, hazlo.
Waltinator
eso es interesante, también registraría cuando ocurriera el intento, o incluso mejor, apagaba cualquier comunicación de red, ¡genial! pero incluso si me escondo sudocon un alias a cualquier palabra aleatoria, aún podrían escribir en /usr/bin/sudolugar de sudoy todavía funcionaría como sudo :(. De todos modos, me gusta la idea ... Me pregunto si cambio el real /usr/bin/sudoromperá algo más que todos mis guiones que lo usan ... incluso si lo hago, podrían, al leer los guiones, adivinar en qué se convirtió sudo ...
Aquarius Power