在安装过程中根据 /home 中的目录设置用户

在安装过程中根据 /home 中的目录设置用户

是否有任何 Gnu/Linux 安装程序会查看旧/home分区,以根据该分区根目录中的目录设置用户?

因此,如果我安装一个新的 Gnu/Linux,并保留旧的/home,该/home分区将充满各种用户和组拥有的文件。我还需要设置大量用户,这些用户需要与旧系统中的用户相匹配,以便文件/home具有正确的所有权。分区的根目录/home为每个用户提供一个目录,该目录由该用户及其主要组拥有。

因此,应该可以扫描该目录,并为找到的每个目录创建一个用户/主组。

  • 是否有任何工具已经可以做到这一点?
  • 它们是否在任何已安装的 Gnu/Linux 中使用?
  • Debian 这样做吗?

(我即将安装一个新的 Debian。)

答案1

没有脚本可以做到这一点,但 UNIX/Linux shell 本身就是很可能将一系列工具串在一起来管理至少部分您想要的内容。

#!/bin/bash
for homedir in /home/*
do
    user="${homedir##*/}"
    uid="$(stat -c %u "$homedir")"
    gid="$(stat -c %g "$homedir")"

    groupadd --gid "$gid" "$user"
    useradd --gid "$gid" --uid "$uid" --shell /bin/bash --home-dir "$homedir" --no-create-home "$user"
done

没有错误检查,但大多数情况下groupadd都会useradd安全失败。在这两个命令前面加上 (例如) 前缀,echo以查看在实时环境中运行它之前会发生什么。我还强烈建议您事先保存文件/etc/passwd/etc/shadow/etc/group和的副本/etc/gshadow,这样,如果一切都出现问题,您可以安全地将用户数据库恢复到其原始值,然后重试。

答案2

是否有任何 Gnu/Linux 安装程序会查看旧的 /home 分区,并根据该分区根目录中的目录设置用户?

是和不是。如果/home位于单独的分区上,那么任何发行版都应该能够使用它。但是,您必须检查每个用户的 UID 和 GID,以便确保它们在/etc/passwd、 和中匹配/etc/group

因此,如果我安装新的 Gnu/Linux,并保留旧的 /home,/home 分区将充满各种用户和组拥有的文件。我还需要设置大量用户,这些用户需要与旧系统中的用户相匹配,以便 /home 中的文件具有正确的所有权。 /home 分区的根目录为每个用户及其主要组拥有一个目录。

基本上,是的。您可以编辑 中的相关配置文件/etc,也可以重新创建所有用户和组,然后使用chown修复旧目录中文件的权限/home

因此,应该可以扫描该目录,并为找到的每个目录创建一个用户/主组。

不确定是否有任何工具可以自动执行此操作,但这里有一些可能有帮助的命令。

ls -n /old_home
total 8
drwxr-xr-x 32 1000 1000 4096 Jul  5 18:26 old_user

chown -R new_user:new_group /home/old_user

是否有任何工具已经可以做到这一点?

从来没听说过。

它们是否在任何已安装的 Gnu/Linux 中使用?

不。

Debian 这样做吗?

不。

(我即将安装一个新的 Debian。)

好的!

答案3

如果您更新,它应该尊重现有的用户和组。如有疑问,请复制/etc到安全位置,安装并让用户退出备份。

请注意,不同的发行版可能使用不同的 UID 约定,GID 的分配可能会有所不同。

制作当然您可以保存所做的任何本地配置。一旦覆盖它就消失了。特别是,保存已安装软件包的列表,以便稍后根据需要进行复制。

相关内容