从主目录 UID 恢复用户数据库

从主目录 UID 恢复用户数据库

我问了一个之前关于恢复 RAID 1 分区的问题,其中成员分区的 UUID 已全部清零。由于在该线程中没有收到任何响应,我现在被迫在操作系统分区上重新安装 CentOS 并重建系统。

重建的主要任务之一是尝试恢复没有最近备份的用户数据库。我的目标只是通过使用 UID 和用户名列表上的脚本来重新创建用户数据库,以使用相同的密码创建每个人的帐户,然后他们可以在登录时更改该密码。

/home 位于另一个但仍然存在的 raid 阵列上,因此在该分区中我有一份详尽的用户列表,并且通过读取每个用户目录的 UID,我还获得了每个用户的旧 UID。我正在努力解决的是一对脚本。第一个将迭代 /home 并创建一个包含匹配的 UID 和用户名对的文件,然后第二个将使用该输出文件在新安装上创建所有这些帐户,因此主目录的 UID 将转换为当前用户。它是一个 samba 文件服务器,因此在第二个脚本中我还将创建匹配的 samba 用户名。

有谁知道已经编写了用于执行此任务的工具或脚本,这样我就可以避免重新创建轮子?

谢谢!

答案1

您可以从您的主目录创建一个包含“user:home:uid:gid”的 csv 文件,如下所示:

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 命令添加到循环中。

相关内容