Иногда возникает необходимость перенести локальных пользователей с одного linux-сервера на другой - при миграции, клонировании окружений или настройке тестовой копии. Но важно не просто скопировать имена, а сохранить UID, GID, пароли и групповые принадлежности, чтобы избежать конфликтов и сохранить доступы.
🌟 Что нужно сохранить
/etc/passwd - основная информация о пользователях
/etc/shadow - пароли пользователей
/etc/group - группы
/etc/gshadow - пароли групп (редко)
/home/ - директории пользователей и их данные (если нужно)
1️⃣ Фильтрация нужных пользователей. На проде часто много системных аккаунтов. Чтобы перенести только нужных людей, можно отфильтровать пользователей с UID > 1000 (или 500 - зависит от дистрибутива):
awk -F: '$3 >= 1000 && $3 < 60000 { print $1 }' /etc/passwd
2️⃣ Экспорт записей. Выполните на исходном сервере:
#пользователей
awk -F: '$3 >= 1000 && $3 < 60000' /etc/passwd > users.passwd
#пароли
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/shadow > users.shadow
#группы
awk -F: '$3 >= 1000 && $3 < 60000' /etc/group > users.group
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/gshadow > users.gshadow
Скопируйте файлы
users.passwd, users.shadow, users.group, users.gshadow на новый сервер.3️⃣ Импорт на новом сервере. На новом сервере:
Сначала делаем резервные копии оригинальных файлов:
cp /etc/passwd /etc/passwd.bak
cp /etc/shadow /etc/shadow.bak
cp /etc/group /etc/group.bak
cp /etc/gshadow /etc/gshadow.bak
Затем добавляем новые записи (убедитесь, что нет конфликтов UID/GID):
cat users.passwd >> /etc/passwd
cat users.shadow >> /etc/shadow
cat users.group >> /etc/group
cat users.gshadow >> /etc/gshadow
4️⃣ Копирование домашней директории
rsync -avz /home/ user@newserver:/home/
Не забудьте про владельцев:
chown -R username:groupname /home/username
Проверка
getent passwd имя_пользователя
id имя_пользователя
su - имя_пользователя
🌟 Если вы переносите пользователей с sudo-доступом, убедитесь, что их записи присутствуют в
/etc/sudoers или /etc/sudoers.d/.#linux #users
🧑💻 NetworkAdmin