我正在将邮件/ftp 服务器使用的硬件从旧的 32 位平台升级到更新的 64 位平台。两者都运行 Ubuntu 16.04.03。已完成在新系统上安装所有相应软件包的工作。现在我只需要将用户帐户/组转移到新机器。我不想只复制旧系统的 passwd、shadow、group 和 gshadow 文件,因为新系统上的许多 uid/gid 编号都不同。一旦我迁移了用户帐户,我将开始移动所有软件包设置(不期待那样!)
我的问题有几个部分:
- 将旧文件中的个别记录复制到新文件中是否“安全”?
- 除了手动复制每个单独的记录之外,有没有更好的方法来实现我的需要?
- 我列出的四个文件是我需要修改的唯一文件吗,还是还有其他文件?
- 像‘gshadow-’这样的文件有什么用途?
编辑:也许我应该补充一点,我目前正在将整个 /home 文件夹树从旧系统转移到新系统,这就是为什么我想保留所有现有的 uid/gid 值。幸运的是,它们都远高于安装软件包所创建的值,因此用户的 uid/gid 值不会与新机器上的任何内容发生冲突。我只有大约十几个用户,但他们几乎不懂计算机,所以我既不能更改他们的密码,也不能让他们给我提供新密码。这就是为什么我需要转移他们现有的记录。
我本来只需克隆驱动器并移动图像,但我想使用移动到 64 位所允许的额外内存。
编辑 2:似乎有一组 vi 工具(vipw 和 vigr)可用于手动编辑文件 - 如果我只能弄清楚如何使用 vi 来做到这一点。唉。“vi 方式”对我来说一直完全陌生,甚至很难理解文档和教程。希望我可以使用我理解的编辑器,然后让 vi 删除所有内容并粘贴整个更新的文件内容。
答案1
- 将旧文件中的个别记录复制到新文件中是否“安全”?
显然,由于我的系统仍在运行,并且所有迁移的帐户现在都可以访问。
- 除了手动复制每个单独的记录之外,有没有更好的方法来实现我的需要?
可能是@Rinzwind 提供的链接(将用户帐户从旧 Linux 服务器移动或迁移到新 Linux 服务器 | nixCraft)展示了如何使用命令行工具来自动化用户账户转移……大部分。(微笑)
- 我列出的四个文件是我需要修改的唯一文件吗,还是还有其他文件?
似乎只有 group、gshadow、passwd 和 shadow 才需要修改,不过任何其他用户特定的内容(例如主文件夹和邮件文件夹)也需要转移。
- 像‘gshadow-’这样的文件有什么用途?
我没有弄清楚这一点,但我相信它们是以前版本的备份。我之所以问这个问题,是因为我担心它们可能会以某种方式被用来确保影子文件的完整性,以防止它们被手动修改,但它们并没有用于此目的。
为了进行更改,我使用 Windows 桌面上的 WinMerge 工具来比较新旧文件,并选择性地将我需要的行从旧文件移到新文件。然后我使用 sudo vipw/vigr 命令在新系统上编辑文件。令人惊讶的是,当我启动第一个编辑器时,系统询问我想使用什么编辑器,所以我选择了 nano,我对它足够了解,可以删除旧文件并将所有修改后的内容粘贴到其中。更改所有四个文件后,我重新启动了系统,迁移的用户帐户正在运行。