Aplicable a: Redhat/CentOS/Fedora.
Los archivos y directorios que referencian a los usuarios son los siguientes:
/etc/passwd – Información de las cuentas de usuario del sistema.
/etc/shadow – Contraseñas encriptadas para cada usuario.
/etc/group – Grupos a los cuales pertenecen los usuarios.
/etc/gshadow – Archivo shadow de los grupos.
/home – Archivos de los usuarios.
Ojo: En el servidor destino no deben existir cuentas de usuario.
En el servidor de origen de las cuentas, creamos un directorio para ir guardando los datos:
# mkdir /root/backuser
Para extraer los usuarios del passwd vamos a usar el gran awk:
# awk -F: ‘($3>=500) && ($3!=65534)’ /etc/passwd > /root/backuser/passwd
El -F es para decirle que el field separator es el “:”.
Luego filtra que $3 (posición 3 en el passwd) sea >=500 y != de 65534. En toda la línea Redhat, los UID y los GID arrancan en el 500.
El resultado lo redirigimos ( > ) al nuevo archivo /root/backuser/passwd
Ahora extraemos los grupos:
awk -F: ‘($3>=500) && ($3!=65534)’ /etc/group > /root/backuser/group
Con el shadow hacemos algo parecido, pero en el awk debemos obtener el nombre de usuario, dado que en el shadow ese es el campo clave:
# awk -F: ‘($3>=500) && ($3!=65534) {print $1}’ /etc/passwd | tee – | egrep -f – /etc/shadow > /root/backuser/shadow
Si existe el gshadow, lo copiamos directamente:
# cp /etc/gshadow /root/backuser
Copiamos estos archivos con scp u otro medio al servidor destino. Es decir, a donde queremos migrar los usuarios:
# scp /root/backuser/passwd root@destino:/root/passwd.bak
# scp /root/backuser/group root@destino:/root/group.bak
# scp /root/backuser/shadow root@destino:/root/shadow.bak
# scp /root/backuser/gshadow root@destino:/root/gshadow.bak
Luego, en el servidor destino, previo backup de los archivos originales en el /etc, “cateamos” los archivos obtenidos con el awk dentro de los del sistema:
# cat /root/passwd.bak >> /etc/passwd
# cat /root/shadow.bak >> /etc/shadow
# cat /root/group.bak >> /etc/group
# cat /root/gshadow.bak >> /etc/gshadow
Con esto tendríamos los usuarios migrados. Ahora nos falta migrar la data contenida en los home’s:
Para esto, lo mas práctico es hacer un rsync, por ejemplo:
# /usr/bin/rsync -vah root@serverorigen:/home/ /home/
Ahora crucen los dedos y reinicien…