SSSD 正在运行但 UID/GID 错误?

SSSD 正在运行但 UID/GID 错误?

我已sssd在服务器上安装以使用 Active Directory 帐户并可以连接,但发现 AD 用户的 UID 非常错误(例如,AD 用户的 posix UID 设置为 1234,但我在 sssd 机器上看到像 987654987654 这样的大数字)。该/etc/sssd/sssd.conf文件看起来像...

[sssd]
domains = ucera.local
config_file_version = 2
services = nss, pam

[domain/ucera.local]
ad_domain = co.local
krb5_realm = CO.LOCAL
realmd_tags = manages-system joined-with-samba
cache_credentials = False
id_provider = ad
krb5_store_password_if_offline = False
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = ad
default_domain_suffix = co.local

有什么想法为什么会发生这种情况吗?有调试建议吗?


我还注意到我有时使用 AD 用户登录计算机时遇到问题。例如。当尝试 ssh 进入服务器时,我的密码被拒绝,但是当 ssh 以 root 身份su进入该用户并退出时,我可以直接以该 AD 用户的身份 ssh 进入服务器(就像服务器没有意识到它拥有该用户,直到我“提醒” “通过以su该用户的身份进入)(不确定是否相关)。

答案1

基于文章找到这里,似乎已经解决了问题,sssd.conf 文件现在看起来像......

[sssd]
domains = ucera.local
config_file_version = 2
services = nss, pam

[domain/ucera.local]
ad_domain = co.local
krb5_realm = CO.LOCAL
realmd_tags = manages-system joined-with-samba
cache_credentials = False
id_provider = ad
krb5_store_password_if_offline = False
default_shell = /bin/bash
ldap_id_mapping = False
ldap_user_uid_number = uidNumber
ldap_user_gid_number = gidNumber
ldap_group_gid_number = gidNumber
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = ad
default_domain_suffix = co.local

变化:

  1. ldap_id_mapping = False我认为,主要的修复方法是使用 AD posix ID,而不是根据 AD 用户objectSID属性进行计算
  2. 我还添加了ldap_..._...id_number = ...设置并将其设置为用户在 AD 中相应的属性字段。完成第 (1) 部分后,机器上的 UID 没有变化。与其他没有此问题的使用 sssd 的服务器相比,sssd.conf 中的唯一区别是更改 (1)。我的想法是,其他机器已经有了ldap_id_mapping = False,所以当 AD 用户第一次在这些机器上登录时,他们会自动获得他们的 AD posix UID。在这台混乱的服务器上,UID 已被错误设置,因此需要显式强制使用uidNumbergidNumberAD 属性。

然后重启sssd服务。


对 AD 和 SSSD 不太有经验,所以如果我误解了任何内容,请发表评论让我知道。

相关内容