![加入领域后,SSSD 没有创建 krb5.conf 文件,无法“id”域用户,为什么?](https://linux22.com/image/783710/%E5%8A%A0%E5%85%A5%E9%A2%86%E5%9F%9F%E5%90%8E%EF%BC%8CSSSD%20%E6%B2%A1%E6%9C%89%E5%88%9B%E5%BB%BA%20krb5.conf%20%E6%96%87%E4%BB%B6%EF%BC%8C%E6%97%A0%E6%B3%95%E2%80%9Cid%E2%80%9D%E5%9F%9F%E7%94%A8%E6%88%B7%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
主要问题是加入域后,我无法成为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
dcdiag
DC 上的显示很干净。
/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