Cambiar el editor por defecto de VISUDO

Para los que usan la maravillosa distribución de Linux, UBUNTU, es muy común el uso del VISUDO, comando mediante el cual se debe recurrir para editar, sin peligro, el archivo /etc/sudoers.

¿¿Que para que sirve ese archivo?? Pues bien, dicho archivo es el que determina el comportamiento del comando sudo, tantas veces usado en ubuntu, ya que es la unica manera, por defecto, de realizar tareas con permisos administrativos.

Este archivo (/etc/sudoers), contiene una serie de comandos y descripciones que hacen variar de diferentes maneras el comportamiento del comando sudo, pudiendo hacer que no pida contraseña a los usuarios que especifiquemos en él (No aconsejable), el tiempo que puede durar sin pedir contraseña desde que se introduce la primera vez, que los usuarios que en él se configuren puedan utilizar comandos para los que, por defecto, no tendrian privilegios...etc

Este archivo tan importante, llamado sudoers, aunque se puede llegar a editar con cualquier otro editor, si no se hace mediante el comando visudo como en el siguiente ejemplo, puede llegar a dar muchos problemas:

sudo visudo

Estos problemas son que podría hacer que inutilizasemos por completo el uso de sudo con un minimo error de sintaxis en cualquiera de sus lineas, ya que al abrirlo con cualquier otro editor podremos guardarlo sin que nos avise de los errores que pueda contener en su interior mientras que gracias al visudo, antes de terminar la operacion de guardado, nos va a informar de que hay uno o más errores en él y la o las lineas donde están, además que nos permitirá volver a editarlo para corregirlos sin llegar a dañar el sistema. (Si por desgracia ya ha dañado su archivo sudoers, al final de este mismo artículo explico como solucionarlo).

CONSEJO: Es bueno hacer una copia de seguridad de los archivos de configuración del sistema antes de hacer cualquier modificación ya que en el peor de los casos, no nos acordamos de como vovler a su estado original, tendremos una copia que podremos volver a restaurar como original.

El problema es que tras poner en nuestra poderosa consola:

sudo visudo

Nos llevaremos la grata sorpresa de que, por defecto, nos abre normalmente el poderoso editor vi, pero a quienes no estén acostumbrados a su peculiar forma de uso puede ser un auténtico galimatias. Buscando y buscando y volviendo a buscar por multitud de páginas la forma de cambiar el editor por defecto para este utilísimo comando (visudo), todas coinciden en modificar el valor de la variable "editor" cosa que por desgracia, está muy bien en la teoría pero no en la práctica ya que además de modificar esa variable tendremos que especificar en el propio archivo sudoers (Recordad que debemos hacerlo siempre a través del "sudo visudo" para evitar sorpresas desagradables) el editor por defecto para abrirlo o incluso una lista de editores por orden de aparición den dicha lista.

Manos a la obra

Dicho esto, comenzamos a modificar el editor por defecto para el comando visudo y, en este caso, vamos a utilizar el editor nano ya que es de los más amigable dentro de las posibilidades que tenemos para dicha variable:

Lo primero es asegurarse de que tenemos la variable editor con el valor correcto, para ello vamos a nuestra maravillosa consola e introducimos el siguiente comando:

sudo update-alternatives --config editor

Esto nos mostrará la lista de editores que pueden ser elegidos por defecto para la variable. Como en mi caso quiero utilizar el nano pues me limito a seleccionar el número 3 ya que es el que tiene el nano. Veámoslo en la siguiente captura:

Clic para ampliar

Como podrá observar, si alguna vez tuvo que buscar donde está el ejecutable (which nano) habrá visto que la ruta real al editor nano es /usr/bin/nano mientras que en este menú aparece como /bin/nano. No se preocupe por nada ya que en la ubicación que muestra este menu (/bin/nano) tenemos un enlace que nos enviará directamente al nano de forma totalmente trasparente para el usuario.

Una vez hecho esto pasamos a editar el archivo sudoers (/etc/sudoers) ya que por mucho que se diga por la red que con el anterior paso ya es suficiente, en mi caso no ha sido así y supongo que en el resto de "ubunteros" tampoco lo sea ya que invocando el manual del visudo (man visudo) podremos ver una línea que dice que el visudo no hace mucho caso a las variables visual o editor, así que continuamos la segunda parte del trabajo mediante el comando:

sudo visudo

Y una vez dentro de él comentaremos las lineas Defaults y env_reset añadiendo una almoadilla (#) delante de cada una de las lineas y agregaremos la opción Defaults editor cuyo valor será la ruta o rutas a los editores que queramos. En caso de poner la ruta de dos editores, tendrán que estar separadas por ":" quedan las lineas modificadas con el siguiente aspecto:


# Defaults
# env_reset
Defaults editor=/usr/bin/nano:/user/bin/vim

Observe que en este ejemplo hemos pasado dos editores a la variable separados por ":" de forma que si hay algún problema para cargar el nano cuando se invoque el visudo, pasará a abrir el vim (Vi mejorado).

Una vez hecho el cambio, guardamos el archivo (Presionamos Esc, escribimos ":wq" sin las comillas y damos a intro. Si no hemos cometido ningún error, al siguiente vez que usemos el visudo (sudo visudo) nos editará el archivo sudoers (/etc/sudoers) con el editor nano, lo que sin duda resulta bastante más amigable.

REPARAR EL SISTEMA SI EL ARCHIVO SUDOERS TIENE ERRORES

Si en alguna ocasión hicimos caso omiso de las advertencias del visudo sobre los errores dentro del archivo sudoers o si lo editamos con cualquier otro editor sin usar el comando visudo y tenemos algun error dentro del archivo y lo hemos guardado, no nos permitirá utilizar el comando sudo, por lo que lo más probable es que la mayor parte de los ubuntu queden inutilizables ya que no se podrán lanzar comandos o tareas que requieran permisos de administrador.

Para solucionar este problema tendremos que utilizar el CD de instalación de UBUNTU, u otro LiveCD cualquiera para arrancar el equipo desde otro sistema linux que no sea el problemático.

Una vez arrancada la LiveCD abriremos una consola y tendremos que montar la partición donde hayamos instalado el ubuntu con problemas. Por ejemplo:

sudo mkdir /media/ubuntu_roto
sudo mount /dev/sda5 /media/ubuntu_roto

La primera línea tan solo es para crear el directorio donde posteriormente montaremos la partición del ubuntu problemático.

La segunda línea es en la que procedemos a montar esa partición en la carpeta que hemos creado con anterioridad. En el ejemplo es la partición sda5 pero en su caso puede ser cualquier otra partición ya que puede haber instalado el sistema en cualquiera.

Una vez montado correctamente tendremos que editar el archivo sudoers de la instalacion problemática teniendo en cuenta que está en una ruta diferente ya que si editamos con "sudo visudo" estaremos editando el sudoers de la LiveCD, así que haremos lo siguiente:

sudo nano /media/ubuntu_roto/etc/sudoers

Esto nos abrirá el sudoers con problemas. Modificamos la o las líneas con problemas y guardamos.

Ahora para probar que todo está correcto sin tener que salir de la LiveCD podremos "enjaular" la consola en la distribución de ubuntu que estamos arreglando para que la consola en la que llevemos a cabo los cambios se comporte como si fuese la del mismo ubuntu "en reparacón". Para ello escribiremos:

sudo chroot /media/ubuntu_roto

En cuanto presionemos intro veremos que el aspecto de la consola cambia ligeramente. En ese mismo momento estaremos en una consola dentro de la instalación en reparación por lo que cualquier comando que usemos en ella se comportará como lo haría la distribución ubuntu instalada. Dicho esto, comprobaremos si los problemas con el archivo sudoers están solucionados haciendo, desde esa misma consola:

sudo visudo

Si nos permite ejecutar el comando sin mostrar ningun error, podremos salir de la LiveCD y volver a nuestra instalación porque el problema está solucionado. Si por el contrario continua mostrando error en alguna línea del sudoers, tendremos que volver a editar el archivo PERO ¡¡ OJO !! tendremos que hacerlo desde otra cosola diferente ya que está es la de la misma instalación rota y no nos dejará. Eso si, no es necesario salir de esta consola ya que podemos dejarla abierta y con la distro "enjaulada" mientras hacemos los cambios en el sudoers desde otra consola cualquiera de la LiveCD.

.

1 comentario:

Miguel dijo...

bueno gracias por el tutorial,que es una pena no tenga ningún comentario pues de lo que je buscado es de lo mas completo.gracias de nuevo y ha ver si tengo suerte y lo consigo reparar.