¿Cómo cancelar el tiempo de espera de sudo restante aplicado actualmente?

38

Cuando acabo de correr sudoy no quiero que permanezca activo durante la duración normal de su tiempo de espera, ¿cómo puedo cancelar ese tiempo de espera activo restante ?

sudo -k lo mata para la sesión de terminal actual, pero si un proceso se está ejecutando actualmente en esa sesión y no puede ejecutarse sudo -k, ¿hay alguna forma de cancelarlo desde otra sesión de terminal?

¿Y hay una manera de cancelar todos los sudotiempos aplicados actualmente (para todas las sesiones de terminal y todas las aplicaciones de gksudo en ejecución, etc.)

Aunque, ahora que lo pienso, es posible que una GUI en ejecución simplemente deba cerrarse, pero acabo de comprobar que Alt+ F2mantiene activo a gksu para invocaciones posteriores.

Peter.O
fuente

Respuestas:

38

No estoy seguro si quiere matar un tiempo de espera de sudo para que no se agote el tiempo de espera o para que se agote el tiempo de inmediato, pero si desea eliminar la marca de tiempo restante, puede usar sudo -k

De lo contrario, si está intentando cancelar un tiempo de espera para que sudo no se agote, no creo que sea posible hacerlo en una sesión actual. La única forma que conozco sería cambiar timestamp_timeoutel sudoersarchivo y reiniciar la sesión.

wajiw
fuente
oops ... fui un poco lento con los detalles: agregué un poco más a mi pregunta ... sobre "-k" ... y sí, me refiero a una situación única , aunque ahora trae hasta el tema de una "única" en todo el sistema. ... Gracias (+1) por la respuesta que fue perfecta para mi pregunta original (sin detalles) ...
Peter.O
1
No entiendo cómo -Kes prácticamente diferente a -k(cuando se usa -k por itseld), pero -ktiene un uso doble: 1. por sí mismo (invalida la marca de tiempo) ... 2. cuando se usa con un comando, solicita una contraseña, independientemente de si un tiempo de espera de sudo anterior ha expirado o no ..... y por cierto: sudo -k funciona en Alt + F2 para eliminar la marca de tiempo de una llamada de sudo / gksu anterior.
Peter.O
Sí, no tengo idea de cuándo usaría uno sobre el otro.
wajiw
Aparte del problema de "eliminar todas las marcas de tiempo existentes" ... Sin cambiar la configuración subyacente de sudoers , la única forma en que puedo ver para ejecutar un sudo "garantizado" de una sola vez es sudo -k; sudo -k appname... porque aunque sudo -k appnameobliga al usuario a ingrese la contraseña, deja una marca de tiempo preexistente sin cambios ... (lo menciono como "griss to the mill") ... y tal vez la forma más simple de "matar" todas las marcas de tiempo existentes, es simplemente evitar el problema completamente y presione Ctrl + Alt + L para bloquear la pantalla. :)
Peter.O
jajaja si tienes la habilidad, iría con esa opción
wajiw
8

Solo en uno de tus puntos:

pero si un proceso se está ejecutando actualmente en esa sesión y no puede ejecutar sudo -k

Esto es específico de la línea de comando, si desea hacer algo mientras se está ejecutando algún otro proceso, puede presionar Ctrl+ Zpara pausar el proceso; luego obtienes acceso a la terminal actual nuevamente, haz lo que quieras. Cuando haya terminado, puede escribir jobspara obtener una lista de procesos, con un número al lado de ellos. Escriba fg 1(por ejemplo, y simplemente fgsi solo hay un trabajo) para reiniciar un proceso, elevándolo a primer plano. Del mismo modo, bghacer lo mismo pero dejando el proceso ejecutándose en segundo plano.

Sesión de ejemplo

$ sudo apt-get install hello
<CTRL+Z>
[1]+  Stopped    sudo apt-get install hello
$ sudo -k
$ jobs
[1]+  Stopped    sudo apt-get install hello
$ fg 1
Loading database...
....
Stefano Palazzo
fuente
1
Stefano: Gracias ... eso es tan bueno ... Linux me sigue diciendo: "Sí, por supuesto que puedo hacerlo" :) ... y, ahora que lo pienso, era consciente de eso Ctrl + Z, ¡pero la mitad no es suficiente!) ... Ahora que he encontrado una situación "real" en la que no se trata solo de texto en la pantalla, estoy seguro de que nunca lo olvidaré ... debe ir ... Tengo que hacer Cntrl + Z-ing ...
Peter.O
2

Encontré una solución. dado que mi búsqueda no mostró nada parecido y esta es una pregunta frecuente: sudo almacena en algún lugar del sistema de archivos (por ejemplo, en / var / run / sudo), un directorio por nombre de usuario, varios archivos que funcionan como la marca de tiempo , un archivo para cada terminal. elimine esos archivos y su sistema estará seguro nuevamente. solo tenga en cuenta que esos archivos solo son visibles para la raíz (de lo contrario, un intruso podría leer la marca de tiempo y volver a establecer la hora del reloj en un punto donde aún eran válidos; otorgar root-ls a cualquier persona es peligroso). por lo tanto, en mi / etc / pm / sleep / y tal vez también para el protector de pantalla que ejecuto:

rm -f /var/db/sudo/*/*

como raíz, por supuesto ...

piotr5
fuente