В настоящее время у меня есть Linux-система, в которой размещен наш внутренний репозиторий Subversion. Доступ к этому репозиторию осуществляется через svn + ssh с аутентификацией по учетным записям пользователей на машине. Я недавно приобрел блестящую новую коробку (также установленную с Linux) и хочу перенести на нее репозиторий Subversion (так как в нем больше места на шести дисках, настроенных с использованием RAID 1 + 0).
Что мне нужно сделать, чтобы перенести всю информацию о пользователях, группах и файлах с текущего компьютера на новый, чтобы минимизировать воздействие на текущих пользователей репозитория? Мои текущие мысли заключаются в том, чтобы скопировать соответствующие записи из файлов / etc / passwd и / etc / group (и теневых файлов?), А также скопировать пользовательские папки в / home. Что мне не хватает?
РЕДАКТИРОВАТЬ: Дополнительная информация. Старая коробка - это Ubuntu 8, новая - Ubuntu 9. Есть около дюжины пользователей и дюжина настраиваемых групп.
Следующие файлы / каталоги необходимы для традиционного управления пользователями 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