Назад | Перейти на главную страницу

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

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

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

РЕДАКТИРОВАТЬ: Дополнительная информация. Старая коробка - это Ubuntu 8, новая - Ubuntu 9. Есть около дюжины пользователей и дюжина настраиваемых групп.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Очевидно, используйте на свой страх и риск.

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