使用 SSSD 配置 Sudo

使用 SSSD 配置 Sudo

尝试使用 Windows AD 帐户登录 Linux 系统。使用 SSSD 配置成功。

使用 LDAP 作为身份和访问提供程序,使用 Kerberos 作为身份验证提供程序。

我完成了所有这些工作,但并未将 Linux 系统加入到域中。

现在我尝试将 LDAP 配置为 sudo 提供程序。但未成功。我无法提升广告用户的 sudo 权限。我甚至尝试使用 sudoers 文件,在那里我能够提升特定用户的权限,但不能提升广告组的权限。

以下是 SSSD 配置 wrt sudo 配置

**sudo_provider = ldap

ldap_sudo_search_base = ou=groups,dc=ad,dc=example,dc=com
ldap_sudorule_object_class = sudoRole
ldap_sudorule_object_class = top
ldap_sudorule_command = ALL
ldap_sudorule_host = ALL
ldap_sudorule_user = %domain_group
ldap_sudorule_runasuser = ALL
ldap_sudorule_runas = ALL
ldap_sudorule_runasgroup = ALL
ldap_sudorule_option = !authenticate**

我尝试在调试级别 7 启用日志记录,它提到无法加载本地规则。

此致敬礼,乌代。

答案1

我认为您误解了配置文件开关的用途 - 它们用于映射查询对象的 LDAP 值。指令默认为辅助对象类指定的值(在 CentOS 上,架构位于 /usr/share/doc/sudo-*/schema.ActiveDirectory)。

您应该在 AD 中导入此模式,使用此对象类创建代表 sudo 角色的对象并让 SSSD 查询它们。

请看下面的详尽示例:

以下是从 LDAP 查询用户、组和 sudo 角色的 SSSD 配置示例。将 <> 括起来的部分替换为适合您环境的值:

[domain/default]
id_provider = ldap
auth_provider = ldap
access_provider = ldap
chpass_provider = ldap
sudo_provider = ldap
ldap_uri = ldaps://<ldap-server-address>:636
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt
ldap_tls_reqcert = demand
ldap_default_bind_dn = <proxy-user-dn>
ldap_default_authtok_type = obfuscated_password
ldap_default_authtok = <obfuscated password>                                                                                      
ldap_search_base = <search base for users>
ldap_schema = rfc2307bis
ldap_group_search_base = <search base for groups>
ldap_sudo_search_base = <search base for sudo rules>
cache_credentials = false
enumerate = false

[sssd]
services = nss, pam, ssh, sudo
config_file_version = 2
domains = default

[nss]

[pam]

[sudo]

[autofs]

[ssh]

在您的 LDAP 目录中,创建一个如下ldap_sudo_search_base所示的对象:

objectClass: Top
objectClass: sudoRole
sudoRunAsUser: ALL
sudoHost: yourhost.example.com
sudoUser: %wheel
sudoCommand: ALL
description: Allows members of wheel to become root
cn: wheel_group_sudo_role

这允许组 wheel 的所有成员成为主机 yourhost.example.com 上的 root 权限。

sudo -U testuser -ll在目标主机上以 root 身份运行应该会产生以下结果:

LDAP Role: wheel_group_sudo_role
    RunAsUsers: ALL
    RunAsGroups: ALL
    Commands:
        ALL

编辑

正如您所想象的,由于 SSSD 为 Linux 机器提供了用户,您可以将他们视为普通 Linux 用户,从而创建本地 sudo 规则:

/etc/sudoers.d/00-local-admin-rule

%ad-admin-group ALL: (ALL) ALL

这允许成员ad-admin-group调用 sudo 来成为 root 。

当谈到时*_search_base,指的是某种形式的 LDAP 容器对象的 DN,例如组织单位,如 ou=users,o=corg,dc=example,dc=org 或您的目录所具有的任何层次结构。在指定的容器下创建所需类型的对象。

相关内容