Migracion y Backup de cuentas de usuario en Linux 25

Si estan buscando como mover, migrar o crear backups de las cuentas de usuarios de un viejo sistema Linux a uno nuevo, han llegado al lugar indicado. Precisamente en estos momentos estoy virtualizando varios servidores fisicos (dos NT 4, un WinXP y un Debian) en un nuevo servidor con mas capacidad y redundancia.

La virtualizacion de los servidores windows fue de lo mas facil con la ayuda de VMWare Converter, solo point and clic. En cambio con el servidor de Linux Debian que quiero mover no sera asi de facil ya que el VMWare Converter aun no soporta la virtualizacion automatica de sistemas Linux.

Dicho esto, manos a la obra….

Este howto se puede utlizar con distribuciones Redhat/Cent OS, Debian y Ubuntu. Recordemos que el sistema objetivo tiene que ser una instalacion fresca,

Todo lo que necesitamos para migrar los usuarios de nuestro linux viejo a una nueva instalacion son los comandos tar, awk, scp y otros. Este manual tambien es util si estan utilizando distribuciones de Linux tales como, Redhat 9 o Debian 2.x.

Debemos hacer un backup de los archivos de administracion de usuarios de Linux, los cuales son los siguientes:

  • /etc/passwd – contiene la informacion de todas las cuentas de los usuarios del sistema.
  • /etc/shadow – contiene las contraseñas encriptadas para cada usuario y opcionalmente la caducidad de las mismas.
  • /etc/group – define los grupos a los cuales pertenecen los usuarios.
  • /etc/gshadow – archivo shadow de los grupos contiene las contraseñas encriptadas para cada grupo
  • /var/spool/mail – En algunas configuraciones los correos de los usuarios son guardados aca.
  • /home – Este directorio contiene un subdirectorio por cada usuario del sistema donde se guardan todos sus archivos.

Sistema Linux Original

Los comandos descritos a continuacion deben ser tecleados en el servidor que contiene toda la informacion de nuestros usuarios.
Primero creamos un tarball de backup siguiendo estos pasos:


deathbian.old:~# mkdir /root/migracion/

Ahora definimos un filtro para el limite del UID, 500 para Redhats y CentOS y 1000 para Debian y Ubuntus


deathbian.old:~# export UGIDLIMIT=500

Ahora copiamos el archivo /etc/passwd de las cuentas a /root/migracion/passwd.mig utilizando el comando awk para filtrar las cuentas de servicios del sistema


deathbian.old:~# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/migracion/passwd.mig

Copiar archivo /etc/group:


deathbian.old:~# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/migracion/group.mig

Copiar archivo /etc/shadow:


deathbian.old:~# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/migracion/shadow.mig

Copiar archivo /etc/gshadow si acaso existe el archivo:


deathbian.old:~# cp /etc/gshadow /root/migracion/gshadow.mig

Hagamos el backup del home de los usuarios y sus correos:


deathbian.old:~# tar -zcvpf /root/migracion/home.tar.gz /home
deathbian.old:~# tar -zcvpf /root/migracion/mail.tar.gz /var/spool/mail

Donde,

  • Los usuarios que son agregados al sistema Linux siempre empiezan con un valor UID y GID unicos, los cuales estan especificados por la propia distribucion Linux o por el administrador.
    Limites segun diferentes distros de Linux:

    • RHEL/CentOS/Fedora Core : El default es de 500 con un limite superior de 65534 /etc/libuser.conf.
    • Debian, Knoppix y Ubuntu: El default es de 1000 con un limite superior de 29999 /etc/adduser.conf.
  • En el sistema recien instalado no deberiamos crear ninguna nueva cuenta de usuario. Ya que el comando awk utilizado filtra los UID segun la distro.
  • export UGIDLIMIT=500 – Dependiendo de nuestra distribucion de Linux, vamos a asignar el valor inicial del UID para cuentas de usuarios normales.
  • awk -v LIMIT=$UGIDLIMIT -F: ‘($3>=LIMIT) && ($3!=65534)’ /etc/passwd > /root/migracion/passwd.mig – Es necesario pasar el valor de la variable UGIDLIMIT al awk usando la opcion -v option (la cual asigna el valor de la variable del shell UGIDLIMIT a la variable LIMIT del programa awk). La opcion -F: determina el separador de campos : . Finalmente awk lee cada linea desde /etc/passwd, filtra las cuentas de systema y genera un nuevo archivo llamado /root/migracion/passwd.mig. La misma logica se aplica para el resto de comandos awk.
  • tar -zcvpf /root/migracion/home.tar.gz /home – Hace una copia de seguridad del directorio /home de los usuarios
  • tar -zcvpf /root/migracion/mail.tar.gz /var/spool/mail – Hace una copia de seguridad del directorio de correos de los usuarios.

Pueden usar scp, una memoria usb o otro medio para copiar /root/migracion al nuevo sistema Linux.
deathbian.old:~# scp -r /root/migracion/ usuario@nuevo.servidor.com:/root/

Importanto las cuentas en el nuevo sistema

Antes que nada, hacemos una copia de los usuarios y contraseñas actuales:

nuevo.linux.:~# mkdir /root/users.bk
nuevo.linux.:~# cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/users.bk

Ahora restauramos passwd y otros archivos en /etc/

nuevo.linux.:~# cd /root/migracion/
nuevo.linux.:~# cat passwd.mig >> /etc/passwd
nuevo.linux.:~# cat group.mig >> /etc/group
nuevo.linux.:~# cat shadow.mig >> /etc/shadow
nuevo.linux.:~# /bin/cp gshadow.mig /etc/gshadow
Nota: Les recuerdo que es necesario utilizar >> (append) y no > (create) en la redireccion del shell.

Ahora copiamos y extraemos el archivo home.tar.gz en el /home del nuevo servidor

# cd /
nuevo.linux.:~# tar -zxvf /root/migracion/home.tar.gz

Ahora copiamos y extraemos el archivo mail.tar.gz (Correos) dentro de /var/spool/mail del nuevo servidor

nuevo.linux.:~# cd /
nuevo.linux.:~# tar -zxvf /path/to/location/mail.tar.gz

Ahora reiniciamos el sistema; cuando el sistema Linux vuelva a cargar, todas las cuentas de usuarios deberian de funcionar como en el sistema viejo:

nuevo.linux.:~# shutdown -r now

Terminos de busqueda

  • migrar usuarios linux
  • copiar usuarios linux
  • exportar usuarios linux
  • migrar usuarios de linux
  • migrar usuarios samba
  • backup de usuarios en linux
  • migrar usuarios ubuntu
  • como migrar un esquema en linux
  • migrar usuarios en linux
  • Migrar Zimbra de FEDORA a Zimbra en UBuntu
  • 25 thoughts on “Migracion y Backup de cuentas de usuario en Linux

    1. Reply Migrar datos de un active directory a un ldap Jan 16,2008 13:59

      Quisiera saber si ustedes me pueden ayudar con un codigo que me permita migrar las cuentas de usuarios de un active directory de windows a un ldap en linux!!! O si el codigo que presenta para migrar me puede servir para mi migracion…
      Gracias….

      • Reply fher98 Jan 17,2008 13:00

        A decir verdad las dos implementaciones de Ldap son muy diferentes. El codigo que mostramos en esta pagina es para las cuentas de usuarios de sistema, y no de alguna variante/implementacion de LDAP.

        Para hacer la migracion de usuarios del active directory tendras que:

        1.- Escribir un esquema que soporte los atributos del AD sobre OpenLDAP.

        2.- Escribir un script que convierta los atributos del AD en los atributos estandar que soportan los esquemas de OpenLDAP.

        Dicho script puede ser de varios cientos de lineas dependiendo de la cantidad de usuarios que tenda el directorio activo. Para este fin podrias utilizar Perl por su rapidez para procesar texto y su soporte para expresiones regulares.

        Hay herramientas de migracion como Active Directory Migration Tool, pero solo he visto para windows.

        Saludos

    2. Reply Linux_usuario Aug 25,2008 09:30

      Muchas gracias por el aporte funciono muy bien

    3. Reply Mauricio May 22,2009 09:08

      Buen dia, Gracias por esta informacion, la cuestion basica, funcionara si el servidor a donde migrare las cuentas de un redhat Ver 4ES, hacia solaris 10 ?. Gracias por la respuesta. Saludos.

      • Reply fher98 May 22,2009 09:49

        No veo por que no, a decir verdad no he trabajado con Solaris, pero siendo basado Unix compatible deberia de funcionar. Siempre pasanos los resultados.

    4. Reply Mauricio May 25,2009 10:02

      :(, no funciono, no funciono, Ahora no se como entrarle a estaba bosada de solaris 10, :(, todo por que el server SunFire X41000, no funciono ni con Redhat ni con FEDORA, que mal. saludos

    5. Reply diego Jul 10,2009 01:52

      Hola, ha conseguido alguien migrar los datos del active directory al openlapd de linux? ese script lo tiene alguien?

    6. Reply Gabo Jan 14,2010 19:03

      he seguido los pasos, el samba de partida era el del ubuntu 5.10 el de destino el del ubuntu server 8.04 64bits. Luego de finalizar la migracion el listado de usuarios aparece en la aplicacion para administracion de usuarios linux. Sin embargo no puedo loguearme desde ninguna maquina del dominio con esos usuarios, la carpetas /bin/bash han desaparecido de las pestañas de la configuracion de cada usuario. Realmente no se si falta migrar algo mas.

      Gracias.

    7. Reply Gabo Jan 21,2010 12:08

      Hola,

      Gracias por responder.

      A parte de migrar los usuarios como señalaste. He copiado los archivos que se encuentran en la carpeta de samba en /etc/samba :
      smb.conf
      passw
      Group
      Gshadow
      Smbpasswd
      Smbusers
      Tambien el archivo secrets.tdb que esta en :
      /var/lib/samba/secrets.tdb

      Además he actualizado el SID del samba anterior al nuevo con:
      server:~# net getlocalsid ( da el sid de la forma S-1-5-21-x-y-z )
      y luego con newserver:~# net setlocalsid S-1-5-21-x-y-z

      Me uno sin inconvenientes en equipos xp al dominio.

      Pero no logro loguearme en los equipos xp con otro usuario que no sea el Administrador que permite sumarse al dominio.

      Ademas en el administrador de usuarios y grupos del ubuntu 8.04 no veo nombres reales, privilegios o los bin/bash…

      Son 900 usuarios lo cual complica un poco el panorama.

      Cualquier sugerencia será de gran ayuda.

    8. Reply Yuyito Apr 11,2010 15:26

      Hola! Casi todo automatico, pero me encontre con un problema… cuando copio los archivos de /home de los usuarios, todos adquieren el permiso de root, mientras que en el Linux Viejo, por lo tanto cuando quiero enviar o revisar mis correos el correo no me lo deja hacer por problemas de permiso.

      Gracias

    9. Reply Cugar Apr 25,2010 08:27

      Hola eh hecho todo tal y como pones y en principio aparecen todos los usuarios pero como consigo que tb puedan entrar al ftp con los usuarios y contraseñas que tenian?? que en principio era lo mismo… yo creaba un usuario y se creaba automaticamente para el ftp, saludos y gracias

    10. Reply alexdark May 8,2010 04:07

      segui los pasos tal cual y pude migrar los usuarios desde un centos 4 a un centos 5.4 x64 sin ningun problema, me estaba rompiendo la cabeza hasta con webmin, sos un capo loco, el unico tuto que me sirvio, gracias man, no soy de contestar en foros pero te mereces mi agradecimiento por que gracias a esto pude migrar mi server samba a una maquina virtual.

    11. Reply Alice Oct 14,2010 13:08

      Hola, muchas gracias por este tutorial, me sirvió de mucho y ya pase todo, solo tengo una pregunta como puedo pasar la información de las quotas de los usuarios??, incluso pase los aliases pero no se donde se almacena la información sobre las quotas, espero puedas orientarme y nuevamente muchas gracias.

    12. Reply yoandy Nov 12,2010 07:03

      Hola. este tuto está muy bueno. lo he probado y funciona ok.

      Pero me ha surgido una duda y quisiara que si está en sus posibilidaes me la explicaran.

      Tengo un servidor antiguo con debian. este servidor tiene alrededor de 120 usuarios unix. Pero a la hora de pasar los user para un servidor nuevo no los quisiera pasar todos. Por ejemplo:

      user@serverviejo para user@servernuevo con su misma contraseña.

      entonces despues solo seria crear el home para ese user y listo.

      Saludos y gracias de antemano.

    13. Reply yoandy Nov 12,2010 07:06

      Pero me ha surgido una duda y quisiara que si está en sus posibilidaes me la explicaran.

      Tengo un servidor antiguo con debian. este servidor tiene alrededor de 120 usuarios unix. Pero a la hora de pasar los user para un servidor nuevo no los quisiera pasar todos. Por ejemplo:

      user@serverviejo para user@servernuevo con su misma contraseña.

      entonces despues solo seria crear el home para ese user y listo.

      Saludos y gracias de antemano.

    14. Reply Juan Pablo Mar 10,2011 18:36

      Hola, estoy por migrar de opensuse con cyrus a debian squeeze con courier, me sirve esta informacion que pusiste? Muchas gracias ¡

    15. Reply Juan Pablo Mar 11,2011 05:26

      los usuarios en opensuse estan en sistema, y en debian los tendria con postfix y mysql

      • Reply fher98 Mar 11,2011 10:32

        Entonces no. Tendras que hacer la migracion de usuarios de sistema a usuarios dentro de la BD de mysql. Esto lo que hace es mover tus usuarios y sus /home de un servidor a otro.

    16. Reply Claudio Hormazábal Oct 6,2011 08:53

      Excelente por el autor de este post, la migración me resultó sin dramas, pero me permito sugerir que en vez de estar compactando y descompactando, es mucho mejor enviar el home directamente al servidor nuevo con:
      rsync -agE /home/ root@ip_servidor_nuevo:/home/

      con esto te ahorras varias lineas en shell.
      Atte.,
      Claudio Hormazábal.

    17. Reply JJ Jan 11,2012 13:05

      Hola mira estoy tratando de migrar un servidor de archivos en debian a un centos, he realizado todos los pasos pero no funciona que estare haciendo mal.

    18. Reply Wil Ortega Jun 28,2016 14:28

      Muchas gracias por el tuto, pero quiero consultar sobre la virtualización de windows NT 4 Server. No me funciono de clip y listo con vm converter utilice la versión recomendada. Pero no obtuve los resultados esperados no inicia y se que en la pantalla de verificación de memoria y posee las mismas características en cuanto a las cantidades de la física comparada con la virtual.

    Comentario, Preguntas o agradecimientos?

    %d bloggers like this: