Как перенести учетные записи пользователей на новый компьютер Linux?

Как перенести учетные записи пользователей на новый компьютер Linux?

В настоящее время у меня есть Linux-бокс, на котором размещен наш внутренний репозиторий Subversion. Доступ к этому репозиторию осуществляется через svn+ssh с аутентификацией, выполняемой по учетным записям пользователей на машине. Недавно я приобрел блестящий новый ящик (также с установленным Linux) и хочу перенести на него репозиторий Subversion (так как на нем больше места на шести дисках, настроенных с использованием RAID 1+0).

Что мне нужно сделать, чтобы перенести всю информацию о пользователях, группах и файлах с текущей машины на новую, чтобы минимизировать влияние на текущих пользователей репозитория? Мои текущие мысли - скопировать соответствующие записи из файлов /etc/passwd и /etc/group (и теневых файлов?), а также скопировать папки пользователей в /home. Есть ли что-то, что я упускаю?

EDIT: Дополнительная информация. Старый ящик — Ubuntu 8, новый ящик — Ubuntu 9. Есть около дюжины пользователей и дюжина пользовательских групп.

решение1

Изстатья cyberciti.biz:

Для традиционного управления пользователями Linux требуются следующие файлы/каталоги:

  • /etc/пароль- содержит различную информацию для каждой учетной записи пользователя

  • /etc/тень- содержит зашифрованную информацию о паролях для учетных записей пользователей и, опционально, информацию об устаревании паролей.

  • /etc/группа- определяет группы, к которым принадлежат пользователи

  • /etc/gshadow- файл тени группы (содержит зашифрованный пароль для группы)

  • /var/spool/mail- Обычно здесь хранятся адреса электронной почты пользователей.

  • /дом- Все данные пользователей хранятся здесь.

Вам необходимо сделать резервную копию всех вышеуказанных файлов и каталогов со старого сервера на новый сервер Linux.

решение2

О каком количестве пользователей идет речь?

Если их немного, будет гораздо безопаснее просто запустить «useradd» на новой системе, убедившись, что вы указали одинаковые uid и gid для каждого пользователя, которого вы переносите.

Затем, как только учетные записи будут созданы на новой машине с тем же uid/gid, отключите входы на старой машине и используйте rsync для переноса их домашних каталогов. Единственным оставшимся шагом будет сброс их паролей после миграции.

Проблема с копированием таких вещей, как /etc/passwd и /etc/group, заключается в том, что если вы все испортите, вы полностью заблокируете себе (или root) вход в новую систему. Кроме того, разные версии unix могут по-разному интерпретировать эти файлы, поэтому будьте очень осторожны. Одна маленькая оплошность, и вы можете открыть вход в систему как пользователь "гость" или любое количество других дыр в безопасности.

решение3

Написал что-то очень быстро иочень грязныйдля этого. Мне понадобилось для миграции серверов CentOS, но должно работать и для большинства современных машин Linux. Приспособьте под свои нужды

Разумеется, используйте на свой страх и риск.

трансферюзер.ш

#!/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

Связанный контент