我试图将nsswitch配置为使用sudoers: files sss,这对于rhel9系统来说是默认的,但是这对我不起作用,但是下面的sudoers: files ldap确实有效。
我少了什么让SSSD工作?
我可以使用我的帐户成功地登录到实例中,但是我甚至不允许使用sudo sudoCommand: 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 = 7nsswitch.conf
sudoers: files sss <--- Does not work
sudoers: files ldap <--- Does work发布于 2023-03-21 09:01:56
我将猜测host-admin[s]是服务器上的本地组,而不是LDAP组。
SSSD故意忽略LDAP "sudoers“条目,这些条目引用主机-本地组。如果我没记错的话,它只接受在同一个SSSD“域中”中引用组的条目。
如果希望不同的主机拥有不同的管理员,则可以将授权用户名直接存储在LDAP sudoers规则中( sudoUser属性是多值的),使用sudoHost将角色限制为特定主机(或主机集),并为每一组需要不同管理员列表的主机创建一个新角色。
或者,您可以在LDAP中使用NIS样式的netgroup (它使用nisNetgroup objectClass并包含(host,user,[nisdomain])三元组的列表),也可以完全避免LDAP,并通过盐/Ansible将/etc/sudoers.d/作为常规文件部署(然后该文件可以引用任何组或netgroup)。
https://serverfault.com/questions/1126673
复制相似问题