安装时加入 Active Directory

在安装 Ubuntu 22.04 时,发现可以直接在安装过程中加入 Active Directory(AD)。这个过程非常顺利,并且可以直接通过 AD 认证访问。需要确保 DHCP 服务器分配的 DNS 地址能够解析域名,这是家庭环境中特别重要的一点。安装过程中没有选项可以设置不同的 DNS 服务器,如果无法找到 AD 服务器,安装过程会继续,但不会启用 AD 认证。

初始登录界面只显示在安装过程中创建的本地管理员账户。你需要选择 “未列出”,然后输入 [email protected] 形式的用户名。如果只输入域用户名而没有扩展名,则会失败。完成本地账户设置后,域用户将出现在登录界面中。

使用 Hyper-V 创建虚拟机时的注意事项

如果使用 Windows 10/11 的 Hyper-V 创建 Ubuntu 虚拟机,Quick Create 选项没有加入域的选项,需要在创建虚拟机后手动加入 AD。个人觉得手动创建虚拟机并在安装过程中使用自动加入域的方式更简单。

虚拟机网络配置

在 Hyper-V 中创建虚拟机时,务必先创建一个外部虚拟交换机,并在配置虚拟机时为其分配这个交换机。默认情况下,虚拟机的网络连接是 内部 网络,这将无法连接到 AD 域控制器。然而,在配置过程中,连接测试会使用主机网络,因此会通过测试,但实际使用时会失败,因为虚拟机使用了自己的虚拟网络交换机,而不是主机网络。

检查 Ubuntu 使用的 DNS 服务器

使用以下命令检查 Ubuntu 使用的 DNS 服务器:

nmcli dev show | grep DNS

安装后如何加入 Active Directory

如果操作系统已经安装,或是使用更早版本的 Ubuntu(如 22.04 之前的版本),可以通过以下步骤加入 AD:

安装所需的包

首先,安装所有所需的软件包:

sudo apt -y install realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit

禁用本地 DNS 解析并验证

接下来,禁用本地的 DNS 解析服务并验证:

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved.service
sudo systemctl status systemd-resolved.service

设置主机名与 AD 模式一致

将主机名设置为符合 AD 模式的格式,例如:

hostname.sub.domain.extension

例如:ubuntu1.internal.bogus.org

配置 DNS

编辑 DNS 配置文件:

sudo nano /etc/resolv.conf

nameserver 127.0.0.1 替换为 AD DNS 服务器地址。

测试 DNS 连接

使用 realm discover 命令测试 DNS 连接:

realm discover internal.bogus.org

如果没有将计算机名添加到 AD DNS,会看到错误信息 unable to resolve hostname.sub.domain.bogus.org,尽管仍能连接,但后续过程会持续显示错误信息。

加入 AD

执行以下命令加入 AD:

sudo realm join -U someADadmin internal.bogus.org

此时会提示输入密码。成功加入后没有输出。

检查是否加入成功

可以使用以下命令检查是否成功加入:

realm list

允许用户进行认证并创建主目录

接下来,允许用户通过 AD 进行认证,并自动创建主目录:

sudo nano /usr/share/pam-configs/mkhomedir

配置如下:

Default yes
Priority 900
Delete Session-Interactive-Only

更新 PAM 配置:

sudo pam-auth-update

确保勾选 “Create home directory on login”

重启 SSSD 服务

重启 SSSD 服务:

sudo systemctl restart sssd
sudo systemctl status sssd

允许 AD 用户登录

允许所有 AD 用户登录:

sudo realm permit --all

查看视频教程了解如何让域管理员成为本地 sudo 用户。

启用并重启 DNS 解析服务

启用并重启 DNS 解析服务,以确保能够连接到网络并成功登录:

sudo systemctl enable systemd-resolved.service
sudo systemctl restart systemd-resolved.service

登出并使用 AD 用户登录

登出后,在登录界面选择 “未列出”,然后输入 AD 用户名,格式为:[email protected]

注意:AD 用户名如果以数字开头或包含其他非字母字符,会违反 Ubuntu 的命名标准,可能会导致问题。