13.8. 从 SSSD 服务收集调试日志,对 IdM 服务器的身份验证问题进行故障排除
如果您在尝试以 IdM 用户身份对 IdM 服务器进行身份验证时遇到问题,请在服务器上的 SSSD 服务中启用详细的调试日志,并收集尝试检索用户信息的日志。
先决条件
-
您需要 root 密码来运行
sssctl
命令并重新启动 SSSD 服务。
流程
在 IdM 服务器上启用详细的 SSSD 调试日志。
[root@server ~]# sssctl debug-level 6
对于遇到身份验证问题的用户,在 SSSD 缓存中使相关的对象无效,这样使您不会绕过 LDAP 服务器来从缓存的 SSSD 中获取信息。
[root@server ~]# sssctl cache-expire -u idmuser
通过删除旧的 SSSD 日志来最大程度减少数据集的故障排除。
[root@server ~]# sssctl logs-remove
尝试切换至遇到身份验证问题的用户,同时在尝试前后收集时间戳。这些时间戳进一步缩小了数据集的范围。
[root@server sssd]# date; su idmuser; date Mon Mar 29 15:33:48 EDT 2021 su: user idmuser does not exist Mon Mar 29 15:33:49 EDT 2021
可选:如果您不想继续收集详细的 SSSD 日志,请降低 debug 级别。
[root@server ~]# sssctl debug-level 2
查看 SSSD 日志,了解失败请求的信息。例如,检查
/var/log/sssd/sssd_example.com.log
文件表明 SSSD 服务没有在cn=accounts,dc=example,dc=com
LDAP 子树中找到用户。这可能表示用户不存在,或者存在于其他位置。(Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [dp_get_account_info_send] (0x0200): Got request for [0x1][BE_REQ_USER][name=idmuser@example.com] ... (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(uid=idmuser)(objectclass=posixAccount)(uid=)(&(uidNumber=)(!(uidNumber=0))))][cn=accounts,dc=example,dc=com]. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_op_finished] (0x0400): Search result: Success(0), no errmsg set (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_search_user_process] (0x0400): Search for users, returned 0 results. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_delete_user] (0x0400): Error: 2 (No such file or directory) (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:49 2021) [sssd[be[example.com]]] [ipa_id_get_account_info_orig_done] (0x0080): Object not found, ending request
如果您无法确定导致身份验证问题的原因:
收集您最近生成的 SSSD 日志。
[root@server ~]# sssctl logs-fetch sssd-logs-Mar29.tar
创建一个红帽技术支持问题单并提供:
-
SSSD 日志:
sssd-logs-Mar29.tar
与日志对应的请求的控制台输出,包括时间戳和用户名:
[root@server sssd]# date; id idmuser; date Mon Mar 29 15:33:48 EDT 2021 id: ‘idmuser’: no such user Mon Mar 29 15:33:49 EDT 2021
-
SSSD 日志: