Восстановление базы данных пользователей из UID домашнего каталога

Восстановление базы данных пользователей из UID домашнего каталога

Я спросилранее заданный вопрос о восстановлении раздела RAID 1, где все UUID разделов-участников были обнулены. Не получив ответа в этой теме, я теперь вынужден переустановить CentOS на разделе ОС и пересобрать систему.

Одной из больших задач перестройки будет попытка восстановить базу данных пользователей, для которой нет недавней резервной копии. Моя цель — просто воссоздать базу данных пользователей, используя скрипт на списке UID и имен пользователей, чтобы создать учетную запись для каждого с тем же паролем, который они затем смогут изменить при входе в систему.

/home был на другом и все еще существующем массиве raid, поэтому в этом разделе у меня есть исчерпывающий список пользователей, и, считывая UID каталога каждого пользователя, я также получаю старый UID каждого пользователя. Я борюсь с парой скриптов. Первый будет итерировать /home и создавать файл с совпадающими парами UID и имени пользователя, а затем второй будет использовать этот выходной файл для создания всех этих учетных записей в новой установке, поэтому UID домашних каталогов затем будут преобразованы в текущего пользователя. Это файловый сервер samba, поэтому во втором скрипте я также создам соответствующее имя пользователя samba.

Знает ли кто-нибудь уже написанный инструмент или скрипт для выполнения этой задачи, чтобы мне не пришлось заново создавать колесо?

Спасибо!

решение1

Вы можете создать CSV-файл из ваших домашних каталогов, содержащий «user:home:uid:gid», например так:

find /home -mindepth 1 -maxdepth 1 -type d -not -name "lost+found*" \
  -printf "%f:%p:%U:%G\n" >/tmp/user.txt

Затем заново создайте пользователей следующим образом:

cat /tmp/user.txt | while IFS=: read -r user home uid gid; do \
  echo useradd -d "$home" -u "$uid" -g "$gid" "$user"
done

Удалите echo, если вывод выглядит правильно. Вы должны быть в состоянии адаптировать эту useraddкоманду для своих нужд и добавить правильную команду samba в цикл.

Связанный контент