пятница, 12 января 2018 г.

Перенос Linux & Samba пользователей Debian 8.6 -> Debian 9.3

Всвязи с переносом терминального сервера Debian 8 на другой гипервизор, была выполнена новая установка Debian 9. После того, как сервер был установлен и настроен, встал вопрос о вводе его в эксплуатацию и соответственно о переносе на него пользователей, прогонять их снова через процедуру регистрации и очередной настройки приложений с нуля не хотелось и я решил проделать замену сервера прозрачно для пользователей.
Сразу говорю что мой выбор инструментов - это лишь один из вариантов, обусловленный конкретной задачей.
Стартовые условия: Сервер, со свеже установленным Debian  9.3 в системе помимо рута создан привелигированный пользователь (пусть его зовут myadmin) с uid/guid=1000.
Приступаем:
В первую очередь генерируем на исходном сервере пару rsa ключей
ssh-keygen
на все вопросы понажимать <Enter>, пароль не вводить, добавляем публичный ключ
на удаленный сервер:
scp ~/.ssh/id_rsa.pub myadmin@remote_server:.ssh/authorized_keys2
если выдало ошибку, необходимо создать в папочке нашего удаленного пользователя myadmin каталог .ssh
теперь мы можем ходить на этот сервер по SSH без пароля.
На целевом сервере в папке пользователя создаем каталог для бэкапов:
mkdir ~/backups
с исходного сервера копируем на новый файлы c linux пользователями:
sudo scp /etc/passwd myadmin@remote_server:~/backups
sudo scp /etc/shadow myadmin@remote_server:~/backups
Базу Samba пользователей:
sudo scp /var/lib/samba/private/passdb.tdb myadmin@remote_server:~/backups
sudo scp /var/lib/samba/private/secret.tdb myadmin@remote_server:~/backups
Конфиг файлы, например самбы:
sudo scp /etc/samba/smb.conf myadmin@remote_server:~/backups
далее на целевом сервере выполняем:
cd ~/backups
раскидываем конфиги по местам:
sudo cp smb.conf /etc/samba
кидаем пользователей самба на место:
sudo cp *.tdb /var/lib/samba/private
теперь редактируем passwd и shadow - наша задача удалить всех системных пользователей
для passwd:
этот блок необходимо удалить, плюс почистить то, что могло затесаться между вашими юзерами, так же отличный момент для зачистки неактуальных пользователей.
аналогично для shadow:
необходимо проследить чтоб пользователи, которых переносим не пересекались с пользователями целевого сервера.
После редактирования файлов выполняем:
sudo su
cat passwd >> /etc/passwd
cat shadow >> /etc/shadow
exit
для переноса домашних каталогов пользователей, на исходном сервере выполняем:
sudo mkdir /home/backup
cd /home/backup
sudo ls -d -1 /home/* | awk -F"\/" '{print $3}'  > userlist.txt
редактируем userlist.txt, удаляя всех лишних(тех кого зачистили из passwd и shadow, а так же папку backup)
пишем скрипт userbackup.sh:

#!/bin/sh
for i in $(awk  '{print $0}' /home/backup/userlist.txt); do
tar -cvzf "/home/backup/userBackup_$i.tar.gz" --exclude "/home/"$i"/.cache/*"  \
--exclude "/home/"$i"/.local/share/Trash/*" "/home/"$i"/";
/usr/bin/scp "/home/backup/userBackup_$i.tar.gz"  "myadmin@192.168.0.213:backups";
done
Делаем его исполняемым:
chmod +x userbackup.sh
запускаем:
sudo ./userbackup.sh
После того, как скрипт отработает, мы на целевом сервере, в папке backups увидим архивы с домашними каталогами пользователей. Копируем наш userlist.txt на целевой сервер:
sudo scp /home/backups/userlist.txt myadmin@remote_server:~/backups
На целевом сервере делаем скрипт users_unbackup.sh:
#!/bin/sh
for i in $(awk  '{print $0}' /home/myadmin/backups/userlist.txt); do
cd /
tar -xvf /home/myadmin/backups/userBackup_$i.tar.gz
chown -R $i:users $i
done
Делаем его исполняемым:
chmod +x users_unbackup.sh
Запускаем:
sudo ./users_unbackup.sh
Все, пользователи перенесены!

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

Отправить комментарий