我用acl创建了一个新的zknode,如下所示。
[0]addauth digest username:password
[1]create /testnode mydata auth:username:password:crdwa,world:anyone:r
这成功创建了zknode,然后我退出了zkCli会话。
现在,当我再次登录zkCli会话时。如果我不做" addauth摘要用户名:密码"作为我的第一个命令,然后我无法读取和写入/ testnode,这是预期的。但我可以运行 rmr 和删除命令
[0]rmr /testnode -> this command deletes the zknode, which I do not want.
答案 0 :(得分:0)
您在/ testnode上定义的ACL限制访问权限,以便任何人都可以读取znode中的数据,但只有经过身份验证的用户可以在/ testnode下创建子项,删除/ testnode下的子项,将数据写入znode或管理znode权限。此ACL不对删除/ testnode施加任何限制,因为这实际上是对父目录的操作:删除/.//的子项
ZooKeeper access control using ACLs上的Apache文档更详细地介绍了权限设置:
ZooKeeper支持以下权限:
- 创建:您可以创建子节点
- 阅读:您可以从节点获取数据并列出其子项。
- WRITE :您可以为节点设置数据
- 删除:您可以删除子节点
- ADMIN :您可以设置权限
要限制删除子znode,您需要在其父级上应用ACL,并且该ACL必须限制DELETE访问。