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


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

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

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


5
2018-06-03 22:55


Источник




Ответы:


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

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

  • / И т.д. / пароль - содержит различные фрагменты информации для каждого пользователя   Счет

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

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

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

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

  • /Главная - Здесь хранятся все данные Пользователя.

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


6
2018-06-03 23:03



Благодарю. URL-адрес cyberciti.biz/faq/... - Anthony Cramp


Сколько пользователей мы говорим?

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

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

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


4
2018-06-03 23:04



Спасибо за ответ. Я надеялся избежать необходимости вмешательства любого пользователя, кроме ссылки на новое имя сервера. Изменили мой вопрос, чтобы указать, какие Linuxes и приблизительные номера пользователей. - Anthony Cramp
Я успешно многократно копировал хэши паролей с одной машины на другую. Вы должны быть осторожны, но я не думаю, что это причина не делать этого. - Brent


Написал что-то очень быстрое и очень грязный для этого. Поручил меня для миграции серверов 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

0
2017-09-17 22:13