[zk: 9] addauth digest user:defaultPassword
[zk: 32] create /test
Created /test
[zk: 33] create /test/can-delete null digest:user:xMNYqfrT373RREgAzmYepA2oLxY=:cdrw
Created /test/can-delete
[zk: 34] getAcl /test/can-delete
'digest,'user:xMNYqfrT373RREgAzmYepA2oLxY=:cdrw
[zk: 35] create /test/cant-delete null digest:user:xMNYqfrT373RREgAzmYepA2oMHb=:cdrw
Created /test/cant-delete
[zk: 37] delete /test/can-delete
[zk: 38] delete /test/cant-delete
(从上面的每一行删除localhost:2181(CONNECTED)
,以提高可读性)
我无法理解为什么以及如何允许我删除cant-delete,因为ACL与经过身份验证的ID:PASSWORD不匹配。我原以为这会给我一个NoAuthException。
请帮忙,谢谢。
ZooKeeper documentation说:
ZooKeeper支持以下权限:
CREATE:您可以创建子节点
READ:您可以从节点获取数据并列出其子节点。
WRITE:您可以为节点设置数据
删除:您可以删除子节点
ADMIN:您可以设置权限
请注意,DELETE权限适用于子节点,而不适用于节点本身。
这意味着为了防止删除节点,您需要在要保护的节点的父节点上设置ACL(没有'd'DELETE权限)(即,您需要在/test
节点上设置ACL例)