我使用 sudoers 官方网站提供的说明配置了 sudoers ldap(使用 openldap 作为后端 LDAP)。 (关联)
也受到限制/etc/sudo-ldap.conf和600根:根权限,以便计算机中的普通用户无法知道他们正在与之通信的 LDAP 服务器。
但 ldap 服务器目前允许匿名访问连接到所有内容,包括 sudoers OU。是否可以以任何方式将 ldap 服务器上的 sudoers OU(例如 ou=sudoers、dc=example、dc=com)限制为特定用户,并保留 ldap 结构的其余部分以进行匿名访问? (我无法找到进行访问控制的正确方法)
配置详情:
slapd.conf:
access to dn.subtree="dc=example,dc=com"
by * read
sudo-ldap.conf:
uri ldap://LDAP_SERVER
sudoers_base ou=sudoers,dc=example,dc=com
如果您需要更多详细信息,请告诉我。
答案1
我找到了正确的方法:
- 在 LDAP 中创建一个新用户
cn=sudoread,dc=example,dc=com
cat > /tmp/tmplif <<EOF
dn: cn=sudoread,dc=example,dc=com
objectClass: top
objectClass: person
cn: sudoread
sn: read
userPassword: sudoread
EOF
$ ldapadd -H ldap://localhost -f /tmp/tmplif -D 'cn=root,dc=example,dc=com' -W
$ printf "sudoread" | base64
c3Vkb3JlYWQ=
ou=sudoers,dc=example,dc=com
在授予所有访问权限之前,向上述创建的用户授予访问权限。
access to dn.one="ou=sudoers,dc=example,dc=com"
by dn="cn=sudoread,dc=example,dc=com" read
access to *
by * read
- 在sudo-ldap.conf中使用binddn和bindpw参数:
$ cat >> /etc/sudo-ldap.conf <<EOF
binddn cn=sudoread,dc=example,dc=com
bindpw base64:c3Vkb3JlYWQ=
EOF
这将创建一个可用于查询 ldap 并保留 LDAP 的其余部分对所有内容的访问权限的用户。