
Я спросилранее заданный вопрос о восстановлении раздела 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 в цикл.