sábado, 29 de marzo de 2008

Nuevo Blog

Estoy pasando los artículos de este blog al nuevo que está en www.elproferoman.com.ar

Por favor, búsquenme ahí desde ahora.

Gracias

Día de terror... me olvidé de la contraseña de mi GNU/Linux

Varias veces me ha pasado de toparme con un Linux del que se desconocía la contraseña (ya sea del usuario no privilegiado como del root). Algunas veces, eran mi propio sistema, en otras, se trataba del sistema de otra persona. En todos los casos, recurrí a Google o a algún llamado telefónico con alguien que me recuerde el procedimiento... y lo resolví.
Hoy, aprovechando un correo a la lista de Gleducar donde pedían ayuda en esto mismo, tomo algunos enlaces, algunas ideas y desarrollo este artículo.
Te prevengo que como es un artículo técnico, puede ser que seguirlo requiera que tengas que leer bastante de los enlaces que te proporciono, dependiendo de tus conocimientos previos. Estás por realizar una tarea NO menor y que generalmente un usuario no técnico no realiza... sin importar el sistema operativo que use.

Comprendiendo la situación

El sistema está funcionando (aunque no lo creas). La única diferencia es que no te deja entrar a vos como usuario porque vos mismo le ordenaste que solo permita el acceso si ponés una contraseña (aparte del nombre de usuario, claro está).
Sin embargo, este sistema está ideado para superar esos problemas apelando al acceso físico al equipo... tranquilo, no hay que buscar el destornillador.
Vas a tener que reiniciar el equipo y hacer alguno de los procedimientos que te describo a continuación (o algún otro que olvido o desconozco... seguro que los hay).
Antes que alguien me ponga un comentario diciendo algo como ¿no era que Linux era recontra seguro? ¿dónde está la seguridad?, les cuento que estos tipos de soluciones se basan en la presunción de que si se puede tener acceso físico al equipo es porque somos de confianza como para manipularlo.

Opción 1: Ubuntu

Ubuntu Linux usa un cargador de arranque llamado Grub, que tiene configurada una opción llamada "Recovery mode", seguramente la vez cada vez que prendés tu computadora pero nunca la usaste... hoy es el día.
Este modo de arranque te va a iniciar el sistema en modo monousuario, con permisos de administrador (root). Que es el que tiene permiso de hacer cualquier cosa... como cambiar las contraseñas.
En esa críptica, hasta ahora, consola de texto, escribís lo siguiente:
passwd roman

En el extraño caso que el nombre de tu usuario sea el mismo que el mío (roman). Como seguramente vos tenés otro nombre de usuario, reemplazá roman por el tuyo.
Te va a pedir la nueva contraseña y cuando la ingresás, vuelve el prompt.
Ahora podés ejecutar el último comando para reiniciar normalmente tu máquina:
reboot


Opción 2: Tengo un Linux que usa Grub, pero no veo la opción recovery mode

No desesperarse... se complica un poquito más, pero hasta el día de hoy, no hay muertes registradas por realizar este procedimiento.
Generalmente, aparte de las opciones simples que se eligen con las flechas del cursor, Grub nos proporciona un método manual de edición de opciones de arranque. A esto se accede pulsando la tecla 'e' de nuestro teclado, mientras está la pantalla de elección del sistema operativo a arrancar.
En la siguiente pantalla, elegimos la opción de arranque habitual y volvemos a pulsar 'e' en nuestro teclado. Para editar esa opción de arranque.
Al final de la línea (para este caso, no importa lo que diga la misma), con un espacio como separación, escribimos single. Que es la opción que le dice al sistema, que al arrancar haga lo mismo que teníamos en "recovery mode", de la opción anterior.
Solo nos resta pulsar la tecla 'Enter' y luego la tecla 'b' para que "bootee" (neologismo que significa arrancar) nuestro sistema.
Una vez que arrancó es como en la Opción anterior:
passwd NUESTRO_USUARIO

Le damos una nueva contraseña.
Y finalmente ejecutamos el comando
reboot


Opción 3: El Linux que tengo no tiene grub... pero tengo el disco de instalación

Distribuciones como Mandriva Linux, Red Hat Enterprise Linux, Fedora Core, etc. Tienen procedimientos específicos para realizar esta tarea lo más simplemente posible.
Todos coinciden en arrancar la computadora con el disco 1 de instalación puesto y levante desde ahí el sistema. Luego las opciones nos permitirán recuperar el sistema o cambiar las contraseñas fácilmente.
Les recomiendo que para cada caso busquen el cómo, en su correspondiente página web de la distribución. No tiene mucho sentido que me ponga a escribir sobre esos procedimientos que ya están documentados y hasta es posible que si cambian, yo ni me entere. Con lo que este artículo te llevaría por un camino que no te serviría.

Opción 4: El Linux que tengo no tiene grub, no tengo el disco de instalación y me estoy desesperando

¡Acá se pone buena la cosa!
Si tenés cualquier otro Linux del tipo Live-CD, no importa que no sea la misma distribución que la instalada, arrancá la computadora con él y abrí una consola para escribir algunos comandos como root.
Desde ahí tenemos que encontrar cual es la partición donde está instalado tu Linux. El siguiente comando te va a ser muy útil:
fdisk -l

La salida te va a ayudar mucho (con un poco de voluntad se entiende). Vamos a suponer que notás que la partición que tiene tu Linux es la /dev/hda5. Y que en la ante última columna (delante de la palabra Linux), dice 83 (que es lo más probable).
Ejecutamos un comando que nos permita montar esa partición en nuestro sistema que está corriendo en memoria RAM en este momento. Sin importar por ahora lo que significa "montar".
mount -t ext3 /dev/hda5 /mnt

Con esto podremos ver nuestros archivos que están en el disco rígido desde ahora.
Lo siguiente es modificar el archivo donde dice que nuestro usuario tiene una contraseña.
nano /mnt/etc/passwd

Allí veremos un archivo de texto donde cada línea comienza con el nombre de los usuarios y sigue con varias cosas más. Buscá la línea correspondiente al usuario al que le querés quitar la contraseña.
En el hipotético caso que te llamaras como yo y que el nombre del usuario tuyo sea igual al mío, existe la posibilidad de que la línea a modificar se vea así:
roman:x:1000:1000:Roman,,,,:/home/roman:/bin/bash

En este caso, habría que borrar esa 'x' que figura justo después de "roman:".
Luego pulsás "Ctrl+x", respondés con la tecla 's' o 'y' (según tengas el editor nano en español o inglés), como respuesta a la pregunta si estás seguro de guardar el archivo modificado.
Y por último el comando reboot (acordate de sacar el CD para que tu máquina arranque normalmente desde el disco rígido).
Ahora tu sistema va a arrancar sin pedirte contraseña. Te recomiendo que una vez que puedas entrar al sistema normalmente, le pongas contraseña al usuario que se la quitaste con el comando passwd desde una consola.

Descargo de responsabilidad

Este artículo está escrito con la mejor intención de ayudarte, pero no puedo darte garantías de que sirva para tu caso. Tampoco puedo asegurarte que no vas a romper el sistema, eso me ha pasado cuando estaba aprendiendo a mi mismo. Solo lo tomé como parte del costo del aprendizaje.
Espero que con este artículo a vos no te pase lo mismo y que puedas aprender con el menor costo de errores posible.
El software libre se caracteriza por evolucionar continuamente, así que es importante que leas la fecha en la que escribí esto, porque si pasaron varios años, es probable que esté desactualizado y existan formas mucho más simples de hacer lo mismo... tal vez las computadoras ya leen lo que vos pensás y todo esto solo tiene valor arqueológico... tal vez ya no existen computadoras... mmmm, creo que eso no porque en ese caso tampoco lo estarías leyendo. :-P
En fin, espero que te sirva.

Bibliografía consultada
http://www.ubuntu-es.org/index.php?q=node/24933
http://www.ecualug.org/?q=2006/03/27/trucos_y_tips/recuperar_la_contrasena_del_root
Mi cabeza no tiene enlace... por ahora... menos mal.