Como transferir contas de usuário para uma nova máquina Linux?

Como transferir contas de usuário para uma nova máquina Linux?

Atualmente tenho uma caixa Linux hospedando nosso repositório interno do Subversion. O acesso a este repositório é via svn+ssh com autenticação acontecendo nas contas de usuário na máquina. Recentemente adquiri uma caixa nova e brilhante (também instalada com Linux) e quero fazer a transição do repositório Subversion para ela (pois ela tem mais espaço em seis discos configurados usando RAID 1+0).

O que devo fazer para transferir todas as informações de usuários, grupos e arquivos da máquina atual para a nova máquina, de modo a minimizar o impacto nos usuários atuais do repositório? Meu pensamento atual é copiar as entradas relevantes dos arquivos /etc/passwd e /etc/group (e arquivos shadow?) E copiar as pastas do usuário em /home. Há alguma coisa que estou perdendo?

EDITAR: Informações extras. A caixa antiga é o Ubuntu 8, a nova é o Ubuntu 9. Existem cerca de uma dúzia de usuários e uma dúzia de grupos personalizados.

Responder1

A partir de umartigo cyberciti.biz:

Os seguintes arquivos/diretórios são necessários para o gerenciamento tradicional de usuários do Linux:

  • /etc/senha- contém várias informações para cada conta de usuário

  • /etc/sombra- contém as informações de senha criptografadas das contas do usuário e, opcionalmente, as informações de validade da senha.

  • /etc/grupo- define os grupos aos quais os usuários pertencem

  • /etc/gshadow- arquivo shadow do grupo (contém a senha criptografada do grupo)

  • /var/spool/mail- Geralmente os e-mails dos usuários são armazenados aqui.

  • /lar- Todos os dados dos usuários são armazenados aqui.

Você precisa fazer backup de todos os arquivos e diretórios acima do servidor antigo para o novo servidor Linux.

Responder2

De quantos usuários estamos falando?

Se forem apenas alguns, seria muito mais seguro apenas executar "useradd" no novo sistema, certificando-se de especificar o mesmo uid e gid para cada usuário que você está migrando.

Então, depois que as contas forem criadas na nova máquina com o mesmo uid/gid, desative os logins na máquina antiga e use o rsync para transferir seus diretórios pessoais. A única etapa restante seria redefinir suas senhas após a migração.

O problema de copiar coisas como /etc/passwd e /etc/group é que se você bagunçar tudo, você bloqueará completamente a si mesmo (ou root) de fazer login no novo sistema. Além disso, diferentes sabores de Unix podem ter diferentes interpretações desses arquivos, portanto, você deve ter muito cuidado. Um pequeno deslize e você poderá abrir logins como usuário "convidado" ou qualquer outra falha de segurança.

Responder3

Escreveu algo muito rápido emuito sujopor esta. Serviu para migração de servidores CentOS, mas deve funcionar para a maioria das máquinas Linux modernas. Adote de acordo com suas necessidades

Obviamente, use por sua conta e risco.

transferirusuário.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

informação relacionada