Миграция пользовательских аккаунтов на новую систему

()

Вопрос: Как можно переместить/скопировать пользовательские аккаунты со старого сервера на новый. Cent OS Linux. Свежая установка.

Ответ: Задача не самая простая, но вполне решаемая при помощи стандартных команд типа tar, awk, scp и других. Это так же возможно даже если вы используете устаревшие дистрибутивы вроде RedHat 9 или Debian 2.x.

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

  • /etc/passwd - содержит различную информацию по всем пользовательскм аккаунтам.
  • /etc/shadow - содержит зашифрованные пароли и в случае необходимости - время окончания срока действия пароля.
  • /etc/group - определяет группы, в которые входят пользователи.
  • /etc/gshadow - содержит зашифрованные пароли для групп.
  • /var/spool/mail - здесь обычно хранится пользовательская почта.
  • /home - здесь хранятся все пользовательские данные.

Вам нужно скопировать все эти файлы со старой системы на новую.

Команды, выполняемые на старой системе:

Сначала нужно создать архив со всеми необходимыми файлами. Создаём каталог:

# mkdir /root/move/

Задаём лимит UID:

# export UGIDLIMIT=500

Теперь копируем /etc/passwd в /root/move/passwd.mig используя awk чтобы выбрать только пользовательские аккаунты.

# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/move/passwd.mig

Копируем файл /etc/group:

# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/move/group.mig

Копируем /etc/shadow:

# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/move/shadow.mig

Копируем /etc/gshadow (редко используется):

# cp /etc/gshadow /root/move/gshadow.mig

Создаём архивы папок /home и /var/spool/mail:

# tar -zcvpf /root/move/home.tar.gz /home
# tar -zcvpf /root/move/mail.tar.gz /var/spool/mail

Пояснения:

  • В Linux пользователи добавляемые в систему получают UID и GID из диапазонов, установленных дистрибутивом или администратором. Эти пределы в разных дистрибутивах различаются:
    • RHEL/CentOS/Fedora Core: минимальное значение 500. максимальное - 65534. (/etc/libuser.conf).
    • Debian and Ubuntu Linux: минимальное значение 100, максимальное - 29999. (/etc/adduser.conf).
  • Вы не должны создавать новых пользователей в новой системе самостоятельно. Иначе при переносе аккаунтов может возникнуть конфликт UID.
  • export UGIDLIMIT=500 - устанавливает минимальное значени UID в системе. Установите это значение в соответствие с вашим дистрибутивом.
  • awk -v LIMIT=$UGIDLIMIT -F: ‘($3>=LIMIT) && ($3!=65534)’ /etc/passwd > /root/move/passwd.mig - Передамём переменную UIGIDLIMIT awk, используя опцию -v. Опция -F указывает на разделитель полей (по умолчанию пробел). awk читает файл /etc/passwd, пропускает системные учётные записи и генерирует файл /root/move/passwd.mig.
  • tar -zcvpf /root/move/home.tar.gz /home - создаём архив пользовательских домашних каталогов.
  • tar -zcvpf /root/move/mail.tar.gz /var/spool/mail - создаём архив поьзовательской почты.

Используйте scp или какой-либо другой способ для копирования /root/move на новую систему Linux:

# scp -r /root/move/* user@new.linuxserver.com:/path/to/location

Команды, выполняемые на новой системе:

Сначала создайте резервную копию всех учётных записей и паролей:

# mkdir /root/newsusers.bak
# cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/newsusers.bak

Теперь восстановите учётные записи со старой системы:

# cd /path/to/location
# cat passwd.mig >> /etc/passwd
# cat group.mig >> /etc/group
# cat shadow.mig >> /etc/shadow
# /bin/cp gshadow.mig /etc/gshadow

Помните что нужно использовать >> (добавление) а не > (создани) при переносе учётных записей.

Теперь можно распаковать архив с домашними каталогами:

# cd /
# tar -zxvf /path/to/location/home.tar.gz

Пардпоследний шаг: распаковка архива с почтой:

# cd /
# tar -zxvf /path/to/location/mail.tar.gz

Теперь перезагрузитесь. Сразу после перезагрузки ваши учётные записи будут работать так же, как работали на старой системе:

# reboot

Если вы переносите учётные записи между разными *nix-системами - некоторые команды изменятся. Но основная идея останется такой же.

Источник

Комментарии:

Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE