ZooKeeper删除权限执行理解

问题描述 投票:1回答:1
[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),以提高可读性)

  • 该设置有1个服务器和1个客户端。
  • 首先,我在命令9中认证自己。
  • 我在32中创建了一个测试节点
  • 在里面我用正确的ACL创建一个can-delete节点。
  • 在同一个测试文件夹中,我创建了另一个具有错误ACL权限的cant-delete节点(如果你看到消化密码的“=”之前的最后3个字符,我在命令35中更改了它们与命令34中的on相比) 。
  • 我尝试删除两个节点(can-delete和cant-delete)。我成功了。

我无法理解为什么以及如何允许我删除cant-delete,因为ACL与经过身份验证的ID:PASSWORD不匹配。我原以为这会给我一个NoAuthException。

请帮忙,谢谢。

java permissions apache-zookeeper acl
1个回答
0
投票

ZooKeeper documentation说:

ZooKeeper支持以下权限:

CREATE:您可以创建子节点

READ:您可以从节点获取数据并列出其子节点。

WRITE:您可以为节点设置数据

删除:您可以删除子节点

ADMIN:您可以设置权限

请注意,DELETE权限适用于子节点,而不适用于节点本身。

这意味着为了防止删除节点,您需要在要保护的节点的父节点上设置ACL(没有'd'DELETE权限)(即,您需要在/test节点上设置ACL例)

© www.soinside.com 2019 - 2024. All rights reserved.