Wie übertrage ich Benutzerkonten auf eine neue Linux-Maschine?

Wie übertrage ich Benutzerkonten auf eine neue Linux-Maschine?

Ich habe derzeit eine Linux-Box, auf der unser internes Subversion-Repository gehostet wird. Der Zugriff auf dieses Repository erfolgt über svn+ssh, wobei die Authentifizierung über Benutzerkonten auf dem Computer erfolgt. Ich habe mir vor kurzem eine nagelneue Box zugelegt (auf der auch Linux installiert ist) und möchte das Subversion-Repository darauf übertragen (da sie über mehr Speicherplatz auf sechs Festplatten verfügt, die mit RAID 1+0 konfiguriert sind).

Was muss ich tun, um alle Benutzer-, Gruppen- und Dateiinformationen vom aktuellen Computer auf den neuen Computer zu übertragen und so die Auswirkungen auf die aktuellen Benutzer des Repositorys zu minimieren? Ich denke derzeit daran, die relevanten Einträge aus den Dateien /etc/passwd und /etc/group (und Schattendateien?) zu kopieren und die Benutzerordner in /home zu kopieren. Habe ich etwas übersehen?

EDIT: Zusatzinfo. Die alte Box ist Ubuntu 8, die neue Box ist Ubuntu 9. Es gibt ungefähr ein Dutzend Benutzer und ein Dutzend benutzerdefinierte Gruppen.

Antwort1

Von einemcyberciti.biz-Artikel:

Folgende Dateien/Verzeichnisse werden für die herkömmliche Linux-Benutzerverwaltung benötigt:

  • /etc/passwd- enthält verschiedene Informationen zu jedem Benutzerkonto

  • /etc/Schatten– enthält die verschlüsselten Kennwortinformationen für Benutzerkonten und optional die Informationen zur Kennwortalterung.

  • /etc/Gruppe- definiert die Gruppen, zu denen Benutzer gehören

  • /etc/gshadow- Gruppenschattendatei (enthält das verschlüsselte Passwort für die Gruppe)

  • /var/spool/mail- Im Allgemeinen werden Benutzer-E-Mails hier gespeichert.

  • /heim- Alle Benutzerdaten werden hier gespeichert.

Sie müssen alle oben genannten Dateien und Verzeichnisse vom alten Server auf dem neuen Linux-Server sichern.

Antwort2

Von wie vielen Benutzern sprechen wir?

Wenn es nur wenige sind, ist es viel sicherer, einfach „useradd“ auf dem neuen System auszuführen und dabei sicherzustellen, dass Sie für jeden migrierten Benutzer dieselbe UID und GID angeben.

Sobald auf dem neuen Rechner Konten mit derselben UID/GID erstellt wurden, deaktivieren Sie die Anmeldungen auf dem alten Rechner und übertragen Sie deren Home-Verzeichnisse mit rsync. Der einzige verbleibende Schritt wäre, nach der Migration deren Passwörter zurückzusetzen.

Das Problem beim Kopieren von Dingen wie /etc/passwd und /etc/group ist, dass Sie sich (oder root) komplett daran hindern, sich beim neuen System anzumelden, wenn Sie etwas vermasseln. Darüber hinaus können verschiedene Unix-Varianten diese Dateien unterschiedlich interpretieren, also sollten Sie sehr vorsichtig sein. Ein kleiner Fehler und Sie könnten sich als Benutzer „Gast“ anmelden oder eine Reihe anderer Sicherheitslücken öffnen.

Antwort3

Habe etwas sehr schnell geschrieben undsehr dreckigdafür. Hat mir bei der Migration von CentOS-Servern geholfen, sollte aber für die meisten modernen Linux-Rechner funktionieren. Passen Sie es Ihren Bedürfnissen an

Die Verwendung erfolgt natürlich auf eigene Gefahr.

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

verwandte Informationen