安装时加入 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 的命名标准,可能会导致问题。