加入领域后,SSSD 没有创建 krb5.conf 文件,无法“id”域用户,为什么?

加入领域后,SSSD 没有创建 krb5.conf 文件,无法“id”域用户,为什么?

主要问题是加入域后,我无法成为id域用户。请注意,我没有重新启动主机,我需要重新启动吗?我认为我不需要。

在做了一些基本的故障排除之后,我意识到加入域后,我认为会创建一个 krb5.conf 文件,/etc/krb5.conf但它从来没有创建过。

我正在将 Ubuntu20.04 主机加入 Windows 2019 AD 服务器。我已使用加入前创建的脚本确认了以下内容:

[PASS] Checking hostname FQDN has domain 'our.domain' configured
[PASS] Checking hosts file for correct entry of 127.0.1.1
[PASS] Checking DNS resolution.
[PASS] Checking DNS search domain.
[PASS] Checking Time Zone is set properly
[PASS] Checking NTP servers are set properly
[PASS] Checking NTP root distance
[PASS] Checking NTP is syncing properly

dcdiagDC 上的显示很干净。 /var/log/auth.log看起来很干净。 /var/log/sssd/sssd.log几乎没有什么可提供的。 /var/log/sssd/sssd_our.domain.log几乎没有什么可提供的。 /var/log/sssd/krb5_child是空的。

我还不知道如何让调试日志适用于 sssd 或 Kerberos。

这是 sssd.conf 文件


[sssd]
domains = our.domain
config_file_version = 2
services = nss, pam

[domain/our.domain]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = OUR.DOMAIN
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = our.domain
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = simple
simple_allow_groups = Domain Users, Domain Admins, Administrators

这是/usr/share/pam-configs/mkhomedir

Name: activate-mkhomedir
Default: yes
Priority: 900
Session-Type: Additional
Session:
        required                        pam_mkhomedir.so umask=0022 skel=/etc/skel

我还执行以下操作,确认用户位于“域用户”组中

$ sudo realm permit -g 'Domain Users'
$ sudo realm permit -g 'Domain Admins'
$ sudo realm permit -g 'Administrators'

有人可以在不使用环境变量的情况下帮助我更改调试日志吗?我可以设置吗?或者只是一些指导...

编辑:我终于弄清楚了我们的设置出了什么问题。问题是我们有一个多宿主 Active Directory 服务器,该服务器配置了多个为 DNS 服务的接口。这是大忌。当 SSSD LDAP 服务尝试获取 DC 的 IP 时,它会被赋予多个地址,并且从客户端的角度来看,并非所有地址都是可路由的,因为它们位于不同的子网上。在删除 DC 上的其他接口并仅在一个接口上提供 DNS 后,我们不再遇到零星领域加入的问题。所以这从来都不是 Kerberos 问题,但下面建议的故障排除类型非常有帮助。

答案1

Kerberos 纯粹是一种身份验证服务,无法提供用户帐户信息id– SSSD 的“nss”服务必须通过 LDAP 查询 AD 才能获取该信息。因此,您查看的日志是错误的;它是处理帐户查找的ldap_child或。ad_child

检查/etc/nsswitch.conf并确保sss模块(不是passwd:在和部分中配置了“ldap”模块!)group:

在做了一些基本的故障排除之后,我意识到加入域后,我认为会在 /etc/krb5.conf 中创建一个 krb5.conf 文件,但实际上并没有。

实际上,您处理 Kerberos 的唯一时间是 a) 当您运行时kinit,或 b) 当您登录并且 SSSDkinit代表您执行操作时,或 c) 当 SSSD 需要访问 AD LDAP 并使用机器密钥表进行“kinit”时。

你不需要严格遵循 krb5.conf 来获取票证,因为 Kerberos 可以使用 SRV 记录(AD总是有)来发现 KDC——SSSD 还安装了一个自定义 libkrb5“定位器”插件来直接提供 KDC 地址。因此,尽管 realmd应该(如果我没记错的话)创建一个 krb5.conf,它只包含一般信息,例如:

[libdefaults]
    default_realm = OUR.DOMAIN
    rdns = false

我还不知道如何让调试日志适用于 sssd 或 Kerberos。

对于 SSSD 本身,添加类似于debug_level = 0x0770部分[domain/...](对于 krb5/ldap)以及[sssd]部分(对于 nss/pam 响应者)的内容。

id不与 Kerberos 或 LDAP 通信 - 它仅与本地 SSSD 服务通信 - 但如果您想kinit先进行手动操作,可以尝试以下操作:

$ export KRB5_TRACE=/dev/stderr
$ export SSSD_KRB5_LOCATOR_DEBUG=1
$ kinit user@REALM

相关内容