12.8. 从 SSSD 服务收集调试日志,对 IdM 服务器的身份验证问题进行故障排除

如果您在尝试以 IdM 用户身份对 IdM 服务器进行身份验证时遇到问题,请在服务器上的 SSSD 服务中启用详细的调试日志,并收集尝试检索用户信息的日志。

先决条件

  • 您需要 root 密码来运行 sssctl 命令并重新启动 SSSD 服务。

流程

  1. 在 IdM 服务器上启用详细的 SSSD 调试日志。

    [root@server ~]# sssctl debug-level 6
  2. 对于遇到身份验证问题的用户,在 SSSD 缓存中使相关的对象无效,这样使您不会绕过 LDAP 服务器来从缓存的 SSSD 中获取信息。

    [root@server ~]# sssctl cache-expire -u idmuser
  3. 通过删除旧的 SSSD 日志来最大程度减少数据集的故障排除。

    [root@server ~]# sssctl logs-remove
  4. 尝试切换至遇到身份验证问题的用户,同时在尝试前后收集时间戳。这些时间戳进一步缩小了数据集的范围。

    [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
  5. (可选)如果您不想继续收集详细的 SSSD 日志,请降低 debug 级别。

    [root@server ~]# sssctl debug-level 2
  6. 查看 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
  7. 如果您无法确定导致身份验证问题的原因:

    1. 收集您最近生成的 SSSD 日志。

      [root@server ~]# sssctl logs-fetch sssd-logs-Mar29.tar
    2. 创建一个红帽技术支持问题单并提供:

      1. SSSD 日志:sssd-logs-Mar29.tar
      2. 与日志对应的请求的控制台输出,包括时间戳和用户名:

        [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