Linux, TipsApril 16, 2009 6:35 pm

Tras instalar el nuevo servidor LAMP, me econtré con un problema y es que MySQL no arrancaba, ni paraba, ni se recargaba.

Tras investigar un poco descubrí que existe un usuario en MySQL llamado debian-sys-maint que se encarga de esas cosas. Dicho usuario existe en la base de datos, el problema estaba en la migración.

Cuando construí el servidor, volque mediante mysqldump toda la base de datos del viejo servidor al nuevo, y el fallo fue que cambió la contraseña de este usuario.

La configuración para este usuario se encuentra en /etc/mysql/debian.cnf encontramos que tiene una contraseña en texto plano y que tenemos que introducir en la base de datos. Para eso existen muchas opciones, yo uso Webmin, está instalado en todas mis máquinas (que no corriendo) y me facilita el mantenieniento en momentos puntuales (aun adoro la consola, hasta Windows 2003 Server corre cygwin). Dicho y hecho, copiamos la contraseña del archivo cnf al campo Password de la tabla mysql.user y guardamos los cambios. Webmin se encarga de codificarla en md5.

Linux, TipsFebruary 26, 2009 7:32 pm

El comando para eliminar un usuario es

userdel -r username

Esto eliminará al usuario del sistema, su directorio personal y su buzón de correo. Sin embargo, tengo dos razones para no usar este comando y en su lugar usar este

usermod -L username

Que bloquea la cuenta de usuario impidiendole entrar.

Las dos razones para no eliminar completamente al usuario son:

  1. Lo que borras hoy hace falta mañana. Esto lo he vivido en muchas ocasiones, que buscan la hoja de cálculo estupenda que tenía Pepito, o cosas así.
  2. Si se elimina un usuario, el UID queda libre para el siguiente que entre. Esto puede suponer un problema de seguridad si el usuario que se eliminó tenía ficheros fuera de su home (por ejemplo, en una unidad en red, o al restaurar una copia de seguridad). El nuevo usuario se convertiría en dueño de estos archivos.

Para volver a habilitar de nuevo la cuenta de usuario

usermod -U username

Linux, Tips 7:16 pm

Para impedir que los usuarios inicien sesión mientras se realizan labores de mantenimiento en el servidor, hacemos lo siguiente

# touch /etc/nologin

Y sólo el usuario root podrá iniciar sesión. Para sacar a los usuarios conectados hacemos

# init 1

Que bajará el nivel de ejecución a monousuario. Si posteriormente necesita volver a un nivel con más servicios, volvemos a ejecutar init al nivel deseado (Debian suele ser 2, RedHat 5, Slackware 4), pero es subjetivo a las necesidades del sistema y configurable a través de los scripts en /etc/rc.d.

Al revisar los logs mientras existe el fichero /etc/nologin se observaran errores de servicios que han intentado ejecutarse sin exito al no poder hacer login. Hay que tenerlo en cuenta, que cuando root dice aquí no entra nadie, nadie entra. Ni usuarios, ni demonios.

No olvidar borrar el archivo una vez que se han finalizado las tareas.

TipsSeptember 21, 2008 6:36 pm

No debería ocurriros nunca pero en caso de extraviar la contraseña del administrador del sistema, existe una pequeño truco (no es una vulnerabilidad) para poder iniciar el sistema directamente a una sesión de root.

Desde Grub se inicia la opción modo de recuperación (single user mode). Esta forma se base en un inicio del sistema en modo usuario único, lo norma es iniciar con un valor de ejecución entre 2 y 5 que abarcan desde multiusuario a sistema gráfico. Pues una vez iniciado desde la shell cambiamos la contraseña con la orden passwd.

¿Qué ocurre si cuando iniciamos la máquina en single user mode nos recibe el sistema preguntando por la contraseña?

Pues que:

  1. Reiniciamos la máquina.
  2. Cuando estemos frente al menú de Grub, seleccionamos la opción de single user mode y presionamos e (Edit).
  3. De las (normalmente) tres opciones seleccionamos la que empieza por kernel.
  4. Volvemos a presionar e (Edit).
  5. Nos movemos hasta el final de la línea y añadimos lo siguiente: init=/bin/bash
  6. Presionamos b (Boot).

Ya has preparado Grub para un acceso de administración sin contraseña.

¿Qué ocurre si no aparece una opción de modo rescate o single user mode o similar?

Pues debeís conocer más acerca del sistema que quereis iniciar, cuando esteis en el Grub le damos a c (command line) y escribimos las ordenes para hacer una opción de single mode.

  1. La partición raiz.
  2. El kernel con la opción init al final.
  3. El fichero initrd.
Después escribimos boot para iniciar al sistema.

 

Conclusión

Como indiqué al comienzo del tip, esto no se trata de una vulnerabilidad, ya que cualquier equipo al que se pueda acceder físicamente está comprometido, con más o menos esfuerzo. 

Este tip sólo es una reseña para que los despistados que pierdan sus contraseñas no pierdan un sistema completo, espero que nadie se dedique a reiniciar ordenadores por ahí intentando probar este truco.

Linux, TipsJuly 25, 2008 6:55 pm

Tuve un problema cuando formateé el equipo de mi jefe por uno de los objetivos que tenía que cumplir era convertir sus particiones donde almacena sus datos a ext3 desde particiones ntfs. Cuando saqué toda la información y la pasé a otra máquina lo hice mediante scp.

Cuando hice tal cosa no preservé la fecha de los archivos (con scp se hace mediante la opción -p). Teníamos entonces el problema de las copias de seguridad que se basan en la fecha.

La solución es cambiar la fecha a los archivos a un día antes de empezar a trabajar con la máquina puesto que los días que ha estado offline no se han actualizado los archivos. Lo hacemos con touch:

for file in `find *`
do
touch -d `date +%Y-%m-%d -d "[número de días] days ago"` "$file"
done

Y listo.