我正在运行 openldap 2.4.40 并应用了以下 ACL:
olc访问:{0}至 * 自写 由 dn="cn=Manager,dc=sample,dc=com" 撰写 由 * 阅读 olcAccess:{1}到 dn.children="ou=sysUsers,dc=sample,dc=com" attrs=用户密码,shadowLastChange,描述,sshPublicKey 自写 由 dn="cn=Manager,dc=sample,dc=com" 撰写 由匿名用户认证 作者:*无
我想由用户 (sysUsers) 更改 userPassword、shadowLastChange、description 和 sshPublicKey。但它给出权限错误,无法写入权限。
# slapacl -D''-b'uid=user1,ou=sysUsers,dc=sample,dc=com' 身份验证DN:“” 条目:读取(=rscxd) 子项:读取(=rscxd) gidNumber=1000: 读取(=rscxd) homeDirectory=/home/user1:读取(=rscxd) : cn=user1:读取(=rscxd) sshPublicKey=ssh-rsa AAAAB3Nza…cGWliPbw==[电子邮件保护]:读取(=rscxd) 用户密码=****: 读取(=rscxd) 描述=测试用户1:读取(=rscxd) : 修改时间戳=20161025074434Z:读取(=rscxd)
LDAP 响应:访问权限不足 错误编号:0x32(LDAP_INSUFFICIENT_ACCESS) 描述:您没有足够的权限执行该操作。
我尝试通过用户 uid=user1,ou=sysUsers,dc=sample,dc=com 修改描述,但失败了。
uid=Manager,ou=sysUsers,dc=sample,dc=com 可以修改。
我做错了什么?我怀疑是 ACL 问题?
答案1
olcAccess: {0}to * by self write by dn="cn=Manager,dc=sample,dc=com" write by * read olcAccess: {1}to dn.children="ou=sysUsers,dc=sample,dc=com" attrs=userPassword,shadowLastChange,description,sshPublicKey by self write by dn="cn=Manager,dc=sample,dc=com" write by anonymous auth by * none
首先,您给出的 ACL 序列是不正确的,在这种情况下,所有内容都会与第一个指令匹配,因为它包含“*”,它与所有内容匹配,并且它永远不会转到 ACL 的第二条规则。
第二,您用来检查 ACL 权限的命令不正确,您使用了:
slapacl -D '' -b 'uid=user1,ou=sysUsers,dc=sample,dc=com'
不正确的是 -D 是 DN谁的要检查权限并且 -b 是 baseDN到需要检查哪些权限。
因此正确的命令应该是检查自身权限:
slapacl -D 'uid=user1,ou=sysUsers,dc=sample,dc=com' -b 'uid=user1,ou=sysUsers,dc=sample,dc=com'
根据你的发现进行编辑:您申请的 ACL 是dn:olcDatabase={0}配置,cn=配置而它应该适用于数据库 DNdn:olcDatabase={2}bdb,cn=config
我很确定您要尝试更改 DN:“uid=Manager,ou=sysUsers,dc=sample,dc=com”的描述,当然根据 ACL,除了 DN:“uid=Manager,ou=sysUsers,dc=sample,dc=com”本身或 DN:“cn=Manager,dc=sample,dc=com”之外,任何其他人都无法做到这一点。
希望这能有所帮助!如果答案有帮助,请将其标记为“有帮助”或“已回答”,以表示支持。
答案2
致。Anirudh Malhotra 感谢地回复道。
我尝试改变 ALC。
[root@evolable-ldap-01 cn=config]# cat olcDatabase\=\{0\}config.ldif # 自动生成的文件 - 请勿编辑!!使用 ldapmodify。 #CRC32 57182ee5 dn:olcDatabase={0}配置 对象类:olcDatabaseConfig olcDatabase:{0}配置 olcAddContentAcl: 真实 olcLastMod: TRUE olcMaxDerefDepth: 15 olcReadOnly:FALSE olcRootDN: cn=config olcSyncUseSubentry:FALSE olcMonitoring:错误 结构对象类:olcDatabaseConfig 条目UUID:af419f18-0036-1035-8ba5-452a6aebab7f 创作者名称:cn=config 创建时间戳:20151006052730Z olcAccess:{0}to dn.children="ou=sysUsers,dc=evolableasia,dc=net" attrs=用户密码,shadowLastChange,描述,sshPublicKey 由 dn="uid=user1,ou=sysUsers,dc=sample,dc=com" 写入 自写 由 dn="cn=Manager,dc=sample,dc=com" 撰写 作者:*无 olc访问:{1}至 * 自写 由 dn="cn=Manager,dc=sample,dc=com" 撰写 由匿名用户认证 由 * 阅读 条目CSN:20161026004145.362887Z#000000#000#000000 modifiersName:cn=manager,dc=sample,dc=com 修改时间戳:20161026004145Z
但是,slapacl 没有改变。
# slapacl -D''-b'uid=user1,ou=sysUsers,dc=sample,dc=com' authcDN:“uid=user1,ou=sysusers,dc=sample,dc=com” 条目:读取(=rscxd) 子项:读取(=rscxd) gidNumber=1000: 读取(=rscxd) homeDirectory=/home/user1:读取(=rscxd) : cn=user1:读取(=rscxd) sshPublicKey=ssh-rsa AAAAB3Nza…cGWliPbw==[电子邮件保护]:读取(=rscxd) 用户密码=****: 读取(=rscxd) 描述=测试用户1:读取(=rscxd) : 修改时间戳=20161025074434Z:读取(=rscxd)