如何使用 LDAP 存储 sudoer 信息

如何使用 LDAP 存储 sudoer 信息

我们有一个 LDAP 服务器和许多正在运行的服务器。我们的用户信息位于 LDAP 中http://fclose.com/b/281/。但是 sudoers 列表存储在 /etc/sudoers 中。现在的问题是,如何将 sudoers 列表存储在 LDAP 中,以便有一个中心控制它?

我们在 LDAP 服务器和工作服务器上都使用 Fedora 12。

答案1

按照官方说明进行操作自述文件.LDAP,以及sudoers.ldap手册页。

  1. 确保sudo已构建 LDAP 支持。
  2. 更新 LDAP 模式。
  3. sudoers文件导入 LDAP。
  4. sudoers在 中配置服务nsswitch.conf

答案2

像下面这样添加 sudo 条目

dn: ou=sudoers,ou=people,dc=example,dc=com
ou: sudoers
objectClass: top
objectClass: organizationalUnit

dn: cn=sudogroup,ou=sudoers,ou=people,dc=example,dc=com
objectClass: top
objectClass: sudoRole
cn: sudogroup
sudoUser: thomas
sudoHost: ALL
sudoRunAs: ALL
sudoCommand: ALL

在客户端的 ldap.conf 中添加 sudoers_base。

sudoers_base ou=sudoers,ou=people,dc=example,dc=com

& 编辑 /etc/nsswitch.conf 如下

sudoers : files ldap

答案3

这些说明假设您使用的是 OpenLDAP。某些细节可能特定于 Arch Linux。

  1. 确保sudo内置有 LDAP 支持。(请参阅自述文件.LDAP或者
  2. slapd.conf通过编辑添加将 sudo 模式添加到 LDAP 服务器include /etc/openldap/schema/sudo.schema。请注意,必须从中复制此文件/usr/share/doc/sudo/schema.OpenLDAP(请参阅 README.LDAP)。
  3. sudoUser根据 README.LDAP,通过向 添加行index sudoUser eq来指示 LDAP 服务器索引该属性slapd.conf,然后重新启动 LDAP 服务器。
  4. 将 ou=SUDOers 容器添加到数据库。这可以通过传入以下内容来完成ldapadd

    dn:ou=SUDOers,dc=example,dc=com
    objectClass:top
    objectClass:organizationalUnit
    ou:SUDOers

  5. 将现有sudoers文件转换为 LDIF 格式,并将cvtsudoers其添加到数据库ldapadd(请参阅 README.LDAP)。当然,也可以从头开始生成配置。

  6. 在客户端上创建(或编辑)ldap.conf(在 Arch 上)以添加sudo LDAP 感知功能(请参阅/etc/openldap/ldap.confsudoers_base ou=SUDOers,dc=example,dc=comsudoers.ldap)。根据您的 LDAP 配置,可能还需要设置各种 LDAP 选项;sudo 设置选项的语法可能与您的 LDAP 实现不同,因此可能需要提供两次相同的信息。
  7. sudoers将中的服务编辑nsswitch.confsudoers: files ldap,或将sudoers: files sss编辑为 如果使用 缓存SSSD(请参阅sudoers.ldap manual)。如果使用 SSSD 缓存,则需要将必要的条目添加到 sssd.conf(并且在运行 systemd 的系统上sssd-sudo.socket必须启用(请参阅手册页SSSD-SUDO))

相关内容