SSSD 在缓存中存储了错误的 shell

SSSD 在缓存中存储了错误的 shell

我正在使用 SSSD 针对本地 Active Directory 服务器 (Windows) 对 Linux 上的用户进行身份验证。它运行正常,这是我的配置:

[sssd]
domains = my.domain
config_file_version = 2
services = nss, pam

[domain/my.domain]
ad_domain = my.domain
ad_server = my-dc.my.domain
krb5_realm = MY.DOMAIN
realmd_tags = joined-with-samba
cache_credentials = true
auth_provider = ad
id_provider = ad
krb5_store_password_if_offline = true
default_shell = /bin/bash
ldap_id_mapping = true
use_fully_qualified_names = false
fallback_homedir = /home/%u
access_provider = simple
simple_allow_groups = IT

问题是:我们有一个用户想要zsh。因此我将用户的 loginShell 属性更改为/usr/bin/zsh。这在用户第一次登录时工作正常。但是一旦用户登录并且我这样做了getent passwd username,它就会显示用户的 shell 是/bin/bash。因此,当用户注销并再次登录时,确实bash会用作 shell。

当我这样做时sss_cache -u username,shell 会再次正确设置,并且用户在登录时会获得正确的 shell。我不想禁用缓存,因为任何域控制器停机都不会对 Linux 用户登录产生影响。

我试图删除default_shell,但它只会将默认 shell 更改为空而不是/bin/bash,因此行为相同。

答案1

您可以在 nss 部分使用默认值。

[nss]
default_shell = /bin/bash

并覆盖使用override_shell = <your shell>

override_shell (string)
    Override the login shell for all users. This option can be specified globally in the [nss] section or per-domain. 

编辑1:针对特定组的变化

[sssd]
config_file_version = 2
services = nss, pam
domains=DOMAIN_GROUP1,DOMAIN_GROUP2,DOMAIN

[nss]
default_shell = /bin/bash

[domain/DOMAIN_GROUP1]
id_provider = ad
ad_domain = mydomain.local
ad_server = mydc01.domain.local,mydc02.domain.local,mydc03.domain.local
# Restrict to group members
ldap_user_search_base = DC=domain,DC=local?subtree?(memberOf=CN=group1,OU=Groups,DC=domain,DC=local)
# Shell
override_shell = /shell/path/for/group1
# Homedir
override_homedir = /home/%u

#same way for other groups
[domain/DOMAIN_GROUP2]
..........
..........
..........

希望这会有所帮助。

答案2

由于另一个答案完全错误,这里是实际的解决方案(来自https://lists.fedorahosted.org/archives/list/[电子邮件保护]/线程/BXFRHRI5VCLTQNE565ZVGZTEGALSNNJY/):

我想知道 SSSD 是否正在连接到全局目录以进行某些查找而不是其他查找,当 SSSD 在 GC 中查找信息并有效地将它们从缓存中删除时,POSIX 属性会被显示为“已删除”。

设置: ad_enable_gc = false 在本[domain]节中将证明该假设是否正确。

因此,解决方案是禁用全局目录查找。非常感谢@Lennie谁首先建议这样做,但直到现在我才这样做。

相关内容