我们有一个 LDAP 服务器和许多正在运行的服务器。我们的用户信息位于 LDAP 中http://fclose.com/b/281/。但是 sudoers 列表存储在 /etc/sudoers 中。现在的问题是,如何将 sudoers 列表存储在 LDAP 中,以便有一个中心控制它?
我们在 LDAP 服务器和工作服务器上都使用 Fedora 12。
答案1
按照官方说明进行操作自述文件.LDAP,以及sudoers.ldap
手册页。
- 确保
sudo
已构建 LDAP 支持。 - 更新 LDAP 模式。
- 将
sudoers
文件导入 LDAP。 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。
- 确保
sudo
内置有 LDAP 支持。(请参阅自述文件.LDAP或者这) slapd.conf
通过编辑添加将 sudo 模式添加到 LDAP 服务器include /etc/openldap/schema/sudo.schema
。请注意,必须从中复制此文件/usr/share/doc/sudo/schema.OpenLDAP
(请参阅 README.LDAP)。sudoUser
根据 README.LDAP,通过向 添加行index sudoUser eq
来指示 LDAP 服务器索引该属性slapd.conf
,然后重新启动 LDAP 服务器。将 ou=SUDOers 容器添加到数据库。这可以通过传入以下内容来完成
ldapadd
:dn:ou=SUDOers,dc=example,dc=com
objectClass:top
objectClass:organizationalUnit
ou:SUDOers将现有
sudoers
文件转换为 LDIF 格式,并将cvtsudoers
其添加到数据库ldapadd
(请参阅 README.LDAP)。当然,也可以从头开始生成配置。- 在客户端上创建(或编辑)
ldap.conf
(在 Arch 上)以添加sudo LDAP 感知功能(请参阅/etc/openldap/ldap.conf
sudoers_base ou=SUDOers,dc=example,dc=com
sudoers.ldap
)。根据您的 LDAP 配置,可能还需要设置各种 LDAP 选项;sudo 设置选项的语法可能与您的 LDAP 实现不同,因此可能需要提供两次相同的信息。 sudoers
将中的服务编辑nsswitch.conf
为sudoers: files ldap
,或将sudoers: files sss
编辑为 如果使用 缓存SSSD
(请参阅sudoers.ldap manual
)。如果使用 SSSD 缓存,则需要将必要的条目添加到 sssd.conf(并且在运行 systemd 的系统上sssd-sudo.socket
必须启用(请参阅手册页SSSD-SUDO))