是否有任何 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 的分配可能会有所不同。
制作当然您可以保存所做的任何本地配置。一旦覆盖它就消失了。特别是,保存已安装软件包的列表,以便稍后根据需要进行复制。