![SSSD 正在运行但 UID/GID 错误?](https://linux22.com/image/165878/SSSD%20%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E4%BD%86%20UID%2FGID%20%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我已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
变化:
ldap_id_mapping = False
我认为,主要的修复方法是使用 AD posix ID,而不是根据 AD 用户objectSID
属性进行计算- 我还添加了
ldap_..._...id_number = ...
设置并将其设置为用户在 AD 中相应的属性字段。完成第 (1) 部分后,机器上的 UID 没有变化。与其他没有此问题的使用 sssd 的服务器相比,sssd.conf 中的唯一区别是更改 (1)。我的想法是,其他机器已经有了ldap_id_mapping = False
,所以当 AD 用户第一次在这些机器上登录时,他们会自动获得他们的 AD posix UID。在这台混乱的服务器上,UID 已被错误设置,因此需要显式强制使用uidNumber
和gidNumber
AD 属性。
然后重启sssd服务。
对 AD 和 SSSD 不太有经验,所以如果我误解了任何内容,请发表评论让我知道。