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

5

Atualmente tenho uma caixa de Linux hospedando nosso repositório interno do Subversion. O acesso a este repositório é via svn + ssh com ocorrências de autenticação contra contas de usuários na máquina. Adquiri recentemente uma nova e brilhante caixa (também instalada com o Linux) e quero fazer a transição do repositório do subversion para ele (já que ele tem mais espaço em seis discos configurados usando o RAID 1 + 0).

O que preciso fazer para transferir todas as informações de usuários, grupos e arquivos da máquina atual para a nova máquina para minimizar o impacto nos usuários atuais do repositório? Minhas ideias atuais são para copiar as entradas relevantes dos arquivos / etc / passwd e / etc / group (e arquivos de sombra?) E para copiar as pastas do usuário em / home. Há algo que eu esteja sentindo falta?

EDIT: Informação extra. A caixa antiga é o Ubuntu 8, a nova caixa é o Ubuntu 9. Há cerca de uma dúzia de usuários e uma dúzia de grupos personalizados.

    
por Anthony Cramp 04.06.2009 / 00:55

3 respostas

6

De um artigo cyberciti.biz :

Following files/dirs are required for traditional Linux user management:

  • /etc/passwd - contains various pieces of information for each user account

  • /etc/shadow - contains the encrypted password information for user's accounts and optional the password aging information.

  • /etc/group - defines the groups to which users belong

  • /etc/gshadow - group shadow file (contains the encrypted password for group)

  • /var/spool/mail - Generally user emails are stored here.

  • /home - All Users data is stored here.

You need to backup all of the above files and directories from old server to new Linux server.

    
por 04.06.2009 / 01:03
4

Quantos usuários estamos falando?

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

Em seguida, depois que as contas forem criadas na nova máquina com o mesmo uid / gid, desative os logons 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 as coisas, você bloqueará completamente (ou root) o login no novo sistema. Além disso, diferentes sabores de unix podem ter diferentes interpretações desses arquivos, portanto, você deve ser muito cuidadoso. Um pequeno deslize e você pode abrir logins como usuário "convidado" ou qualquer outro número de falhas de segurança.

    
por 04.06.2009 / 01:04
0

Escreveu algo muito rápido e muito sujo para isso. Serviu-me para a migração de servidores CentOS, mas deve funcionar para a maioria das máquinas Linux modernas. Adopte-se às suas necessidades

Obviamente, use a seu próprio risco.

transferuser.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
    
por 18.09.2017 / 00:13