需要将 Windows 服务器迁移到大约有 1000 个用户的 Linux 服务器(Ubuntu)。是否有可用于转移 Windows 帐户(而非手动转移)的迁移工具?我读过 Ubuntu 有迁移工具,但似乎没有太多详细信息
答案1
您应该能够使用 sssd 和 kerberos 将 Linux 主机加入 AD 域。
一旦正确配置,您将拥有一个名称服务插件(/etc/nsswitch.conf 中的 sssd),它将允许 nss 查询 AD 以获取用户详细信息(即 /etc/passwd 内容)。
然后,您可以使用“getent passwd”以 /etc/passwd 格式列出 AD 用户。只需将此输出定向到一个文件,然后使用该文件在本地 Linux 主机上构建实际的 /etc/passwd。您可以从相同的数据创建 /etc/shadow 条目,最初使用锁定的哈希值(“!!”)。
一些警告...
- AD 中的用户需要定义其 UNIX 属性。AD 在“用户属性”面板(查看高级功能 = 开启)的“属性编辑器”选项卡中原生支持此功能。您需要指定以下内容:gidNumber、name、uid、uidNumber 和 unixHomeDirectory。这将允许更完整的 /etc/passwd 样式输出。
在设置 uidNumber 和 gidNumber 等内容时,请务必仔细考虑这些内容,并已做好相应的 Linux 准备。请记住,不要为任何用户重复 uidNumber。
根据您使用的 Windows Server 版本,您可能能够或无法查询用户的哈希密码。我认为 MS 在 Server 2012 中删除了此功能,但我的记忆不太清楚。因此,一旦将用户导入 Linux,您可能需要让他们设置新密码。
如果幸运的话,你也许还能用“getent group”从 Windows 中获取一些组数据,但可能无法使用。值得一试,看看能得到什么。
请不要在 Linux /etc/passwd 或 /etc/group 文件中使用任何大写字母。除了用户的真实姓名(GECOS 字段)外,这些文件中不应有大写字母。Linux 不会在意,但这完全不符合最佳实践,而且会让人大喊“业余!”
完成所有这些后,您可以删除 sssd/kerberos 配置。
这有点复杂,但可能比手动重新创建 1000 个用户更快。