
Actualmente tengo una caja de Linux que aloja nuestro repositorio interno de Subversion. El acceso a este repositorio se realiza a través de svn+ssh y la autenticación se realiza en las cuentas de usuario de la máquina. Recientemente adquirí una caja nueva y brillante (también instalada con Linux) y quiero transferir el repositorio de Subversion a ella (ya que tiene más espacio en seis discos configurados usando RAID 1+0).
¿Qué tengo que hacer para transferir toda la información de usuarios, grupos y archivos de la máquina actual a la nueva máquina para minimizar el impacto en los usuarios actuales del repositorio? Mi idea actual es copiar las entradas relevantes de los archivos /etc/passwd y /etc/group (¿y archivos ocultos?) y copiar las carpetas de usuario en /home. ¿Hay algo que me falta?
EDITAR: información adicional. El cuadro antiguo es Ubuntu 8, el cuadro nuevo es Ubuntu 9. Hay alrededor de una docena de usuarios y una docena de grupos personalizados.
Respuesta1
A partir de unaartículo de cyberciti.biz:
Se requieren los siguientes archivos/directorios para la administración de usuarios de Linux tradicional:
/etc/contraseña- contiene varios datos para cada cuenta de usuario
/etc/sombra- contiene la información de contraseña cifrada para las cuentas de usuario y, opcionalmente, la información de antigüedad de la contraseña.
/etc/grupo- define los grupos a los que pertenecen los usuarios
/etc/gshadow- archivo oculto del grupo (contiene la contraseña cifrada para el grupo)
/var/spool/correo- Generalmente los correos electrónicos de los usuarios se almacenan aquí.
/hogar- Todos los datos de los Usuarios se almacenan aquí.
Debe hacer una copia de seguridad de todos los archivos y directorios anteriores del servidor anterior al nuevo servidor Linux.
Respuesta2
¿De cuántos usuarios estamos hablando?
Si son solo unos pocos, sería mucho más seguro ejecutar "useradd" en el nuevo sistema, asegurándose de especificar el mismo uid y gid para cada usuario que esté migrando.
Luego, una vez que se hayan creado las cuentas en la nueva máquina con el mismo uid/gid, deshabilite los inicios de sesión en la máquina anterior y use rsync para transferir sus directorios de inicio. El único paso restante sería restablecer sus contraseñas después de la migración.
El problema con copiar cosas como /etc/passwd y /etc/group es que si estropeas las cosas, bloquearás completamente a ti mismo (o al root) para que no puedas iniciar sesión en el nuevo sistema. Además, diferentes versiones de Unix pueden tener diferentes interpretaciones de estos archivos, por lo que debes tener mucho cuidado. Un pequeño desliz y podría abrir inicios de sesión como usuario "invitado" o cualquier otro agujero de seguridad.
Respuesta3
Escribí algo muy rápido ymuy suciapara esto. Me sirvió para la migración de servidores CentOS, pero debería funcionar para la mayoría de las máquinas Linux modernas. Adopta según tus necesidades
Obviamente, úselo bajo su propio riesgo.
transferirusuario.sh
#!/bin/sh
# Transfer user from old passwd / shadow to existing system. Create homedir if
# necessary
# configurables
OLDETC=/path/to/extract/old/etc
# end configurables
if [ $# -ne 1 ]; then
echo "Usage: $0 <username>"
exit 1
fi
NEWUSER=$1
OLDPWD=${OLDETC}/passwd
OLDSHDW=${OLDETC}/shadow
OLDGRP=${OLDETC}/group
OLDGSHDW=${OLDETC}/gshadow
id $NEWUSER > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "ERROR: user $NEWUSER already exist on this system"
exit 2
fi
grep -q "${NEWUSER}:" $OLDPWD
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "ERROR: user $NEWUSER does not exist in $OLDPWD"
exit 3
fi
# all seems good, lets blindly transfer user
grep "${NEWUSER}:" $OLDPWD >> /etc/passwd
grep "${NEWUSER}:" $OLDSHDW >> /etc/shadow
grep "${NEWUSER}:" $OLDGRP >> /etc/group
grep "${NEWUSER}:" $OLDGSHDW >> /etc/gshadow
/usr/sbin/mkhomedir_helper ${NEWUSER}
# check consistency:
pwck -r
grpck -r