HOWTO - Cómo hacer que los comandos sudo, gksu y kdesu no conserven en memoria la contraseña introducida.

ÍNDICE

INTRODUCCIÓN

En los sistemas UNIX/Linux existe un usuario especial llamado root. Este superusuario tiene todos los privilegios administrativos para el uso del sistema. En la distribución Ubuntu la cuenta root está bloqueada de manera predeterminada, y no es posible iniciar sesión como root.

Por lo anterior durante la instalación de Ubuntu se crea un usuario, que podrá realizar tareas administrativas mediante el uso del comando sudo. El comando sudo se antepone al comando que necesita ser ejecutado con privilegios de root, por ejemplo:

sudo fdisk -l

Si no se hubiera usado el comando sudo en el ejemplo anterior, el sistema no hubiera desplegado la información solicitada, ya que fdisk es un comando que sólo puede ejecutar el usuario root.

JUSTIFICACIÓN

Ubuntu está configurado para recordar, durante 15 minutos, la contraseña introducida junto con el comando sudo. El propósito es facilitar a que el usuario no se vea en la necesidad de introducir muchas veces la contraseña para sudo, cuando esté ejecutando varios comandos, uno tras otro.

Sin embargo esto puede ocasionar que un usuario use sudo para cierto comando, y posteriormente use otros comandos con sudo con la diferencia que el sistema ya no pedirá la contraseña si es que no han pasado 15 minutos. Esto puede causar que el usuario ingrese un comando de manera incorrecta o de manera peligrosa, y sistema no pida la contraseña sino que actúe de manera inmediata al momento de presionar la tecla Enter.

También es posible que en algún momento el usuario deje su terminal por unos minutos, y entonces alguien ajeno al sistema introduzca comandos que requieran sudo, y aunque el usuario intruso no conozca la contraseña podrá ejecutar dichos comandos porque el sistema la conserva en memoria durante el tiempo ya mencionado. Esto es especialmente peligroso cuando se usa alguna versión Server en vez de la versión Desktop.

Por lo anterior, si se desea aumentar la seguridad del sistema, es necesario cambiar el comportamiento del mismo para que no recuerde la contraseña, sino que sea solicitada cada vez que se use sudo. El siguiente procedimiento explica cómo realizar ese cambio.

PROCEDIMIENTO

La configuración se guarda en el archivo /etc/sudoers . En ese archivo se indica quiénes pueden usar el comando sudo y por cuánto tiempo se conserva la contraseña del usuario en memoria. Para modificar dicho archivo es necesario usar un comando especial llamado visudo, así:

sudo visudo

El comando anterior automáticamente abrirá el archivo mencionado, no es necesario introducir su nombre. Si se está usando GNOME el archivo será abierto con el editor nano. Si se está usando KDE el archivo será abierto con el editor vi.

Se localiza la siguiente línea:

Defaults        env_reset

y se agrega al final de la misma lo siguiente ,timestamp_timeout=0 , quedando así:

Defaults        env_reset,timestamp_timeout=0

El número cero (0) significa cero minutos, es decir, en ningún momento conservará en memoria la contraseña. Si se especifica un número entero mayor a cero entonces ese número será la cantidad en minutos para conservar en memoria la contraseña. Advertencia: Si se especifica el valor -1 entonces el sistema sólo pedirá la contraseña una vez, y no volverá a solicitarla.

Posteriormente se cierra el archivo guardando los cambios. No hay necesidad de reiniciar el sistema, ni necesidad de reiniciar servicio alguno.

NOTAS

Si no se conoce el uso de los editores nano ó vi es posible editar el archivo con algún editor gráfico (KWrite, Kate, y otros) con la ayuda de los comandos kdesu o kdesudo. Pero nunca se debe usar sudo para ejecutar aplicaciones gráficas desde una terminal virtual. Este artículo explica el por qué:

"Por qué se debe usar KDESU ó KDESUDO para ejecutar aplicaciones gráficas desde la terminal, en vez de usar SUDO".
http://www.kubuntu-es.org/wiki/sistema/por-que-se-debe-usar-kdesu-o-kdes...

FUENTES

https://help.ubuntu.com/community/RootSudo
https://help.ubuntu.com/community/RootSudoTimeout