Nsswitch - sudoers sss 与 ldap 我遗漏了什么

Nsswitch - sudoers sss 与 ldap 我遗漏了什么

我正在尝试配置 nsswitch 以使用sudoers: files sssrhel9 系统的默认设置,但这对我来说不起作用,但以下操作sudoers: files ldap确实有效。

我缺少什么才能使 SSSD 正常工作?

我可以使用我的帐户成功登录实例,但即使如此,我仍不允许使用 sudosudoCommand: ALL

$ ldapsearch -H ldap://ipa.example.com -b ou=sudoers,dc=example,dc=com -ZZ '(&(objectClass=sudoRole))' -x
# allow_all, sudoers, EXAMPLE.COM
dn: cn=allow_all,ou=sudoers,dc=EXAMPLE,dc=COM
objectClass: sudoRole
objectClass: top
sudoUser: %host-admin
sudoHost: ALL
sudoCommand: ALL
sudoRunAsUser: ALL
sudoRunAsGroup: ALL
cn: allow_all


$ id admin
uid=6666(admin),1234(host-admins)

sssd.conf

[domain/default]
id_provider = ldap
auth_provider = ldap
sudo_provider = ldap
chpass_provider = ldap
ldap_uri = ldaps://ipa.example.com
ldap_search_base = dc=example,dc=com
ldap_id_use_start_tls = True
ldap_schema = rfc2307bis
ldap_sudo_include_regexp = true
cache_credentials = True
ldap_tls_cacertdir = /etc/openldap/certs
ldap_tls_reqcert = allow

[sssd]
services = nss, pam, sudo
domains = default

[nss]
homedir_substring = /home

[pam]

[sudo]
debug_level = 7

nsswitch.conf

sudoers: files sss <--- Does not work

sudoers: files ldap <--- Does work

答案1

我猜这host-admin[s]当地的服务器上的组而不是 LDAP 组。

SSSD 故意忽略引用主机本地组的 LDAP“sudoers”条目。如果我没记错的话,它只接受引用同一 SSSD“域”内的组的条目。

如果您希望不同的主机拥有不同的管理员,则可以将授权用户名直接存储在 LDAP sudoers 规则中(该sudoUser属性是多值的),用于sudoHost将角色限制为特定主机(或主机集),并为每组需要不同管理员列表的主机创建一个新角色。

或者,你可以使用 NIS 风格网络组在 LDAP 中(使用 objectClassnisNetgroup并包含三元组列表(host,user,[nisdomain])),或者您可以完全避免使用 LDAP 并通过 Salt/Ansible 部署 /etc/sudoers.d/ 作为常规文件(然后可以引用 nsswitch 已知的任何组或 NIS 网络组)。

相关内容