3.4. 发现和加入身份域
realm discovery 命令返回完整的域配置,以及必须安装的软件包列表,才能在域中注册系统。
然后,realm join 命令通过配置本地系统服务和身份域中的条目来设置本地计算机以用于指定域。由 realm 运行的进程遵循以下步骤 :
- 对指定的域运行发现扫描.
- 自动安装将系统加入域所需的软件包。这包括 SSSD 和 PAM 主目录作业软件包。请注意,自动安装软件包需要运行
PackageKit
套件。注意如果禁用PackageKit
,系统会提示您输入缺少的软件包,您需要使用yum
实用程序手动安装它们。 - 通过在 目录中为系统创建帐户条目来加入域。
- 创建
/etc/krb5.keytab
主机 keytab 文件。 - 在 SSSD 中配置域并重新启动服务。
- 在 PAM 配置和
/etc/nsswitch.conf
文件中为系统服务启用域用户。
发现域
不带任何选项运行时,realm discover 命令将显示有关默认 DNS 域的信息,即通过 Dynamic Host Configuration Protocol(DHCP)分配的域:
# realm discover ad.example.com type: kerberos realm-name: AD.EXAMPLE.COM domain-name: ad.example.com configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common
也可以为特定域运行发现。要做到这一点,运行 realm discover 并添加您要发现的域名称:
# realm discover ad.example.com
域系统随后将使用
DNS SRV 查找来自动查找此域中的域控制器。
注意
域发现命令要求 NetworkManager 正在运行;特别是,它依赖于 NetworkManager 的 D-Bus 接口。如果您的系统没有使用 NetworkManager,请始终在 realm discovery 命令中指定域名。
realmd
系统可以发现 Active Directory 和 Identity Management 域。如果您的环境中两个域都存在,您可以使用 --server-software
选项将发现结果限制为特定的服务器类型。例如:
# realm discover --server-software=active-directory
发现搜索返回的其中一个属性是
login-policy
,它显示域用户是否允许域用户在加入完成后立即登录。如果默认情况下不允许登录,您可以使用 realm allow 命令手动允许登录。详情请查看 第 3.7 节 “管理域用户的登录权限”。
有关 realm discover 命令的详情请参考 realm(8) man page。
加入域
重要
请注意,Active Directory 域需要使用唯一的计算机名称。NetBIOS 计算机名称及其 DNS 主机名应唯一定义并相互对应。
要将系统加入身份域,请使用 realm join 命令并指定域名:
# realm join ad.example.com realm: Joined ad.example.com domain
默认情况下,连接以域管理员身份执行。对于 AD,管理员帐户名为
Administrator
;对于 IdM,它名为 admin
。要以其他用户身份连接,请使用 -U
选项:
# realm join ad.example.com -U user
命令首先尝试在没有凭据的情况下进行连接,但是如果需要,它会提示输入密码。
如果在 Linux 系统上正确配置了 Kerberos,则也可以使用 Kerberos 票据进行身份验证。要选择 Kerberos 主体,请使用
-U
选项。
# kinit user # realm join ad.example.com -U user
realm join 命令接受其他几个配置选项。有关 realm join 命令的详情请参考 realm(8) man page。
例 3.1. 将系统注册到域中的过程示例
- 运行 realm discovery 命令,以显示有关域的信息。
# realm discover ad.example.com ad.example.com type: kerberos realm-name: AD.EXAMPLE.COM domain-name: ad.example.com configured: no server-software: active-directory client-software: sssd
- 运行 realm join 命令,并将域名传递到 命令。如果系统提示输入密码,请提供管理员密码。
# realm join ad.example.com Password for Administrator: password
请注意,当发现或加入域时,realmd 会检查
DNS SRV 记录:
_ldap._tcp.domain.example.com.
for Identity Management records_ldap._tcp.dc._msdcs.domain.example.com.
for Active Directory records
在配置了 AD 时会默认创建 记录,这允许通过服务发现发现它。
在加入域后测试系统配置
要测试系统是否已成功加入域中,请验证您是否可以以用户身份从域中登录,并是否正确显示用户信息:
- 运行 id user@domain_name 命令,以显示域中用户的信息。
# id user@ad.example.com uid=1348601103(user@ad.example.com) gid=1348600513(domain group@ad.example.com) groups=1348600513(domain group@ad.example.com)
- 使用
ssh
实用程序,以同一用户身份登录。# ssh -l user@ad.example.com linux-client.ad.example.com user@ad.example.com@linux-client.ad.example.com's password: Creating home directory for user@ad.example.com.
验证pwd
实用程序是否打印用户的主目录。$ pwd /home/ad.example.com/user
- 验证
id
实用程序是否在第一步中显示与 id user@domain_name 命令相同的信息。$ id uid=1348601103(user@ad.example.com) gid=1348600513(domain group@ad.example.com) groups=1348600513(domain group@ad.example.com) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
在测试域加入是否成功时,kinit
实用程序也很有用。请注意,要使用该工具,必须安装 krb5-workstation 软件包。