带有 ACL 的 rmr zknode
rmr zknode with ACL
我已经使用 acl 创建了一个新的 zknode,如下所示。
[0]addauth digest username:password
[1]create /testnode mydata auth:username:password:crdwa,world:anyone:r
这成功创建了 zknode,然后我退出了 zkCli 会话。
现在,当我再次登录到 zkCli 会话时。如果我不执行 "addauth digest username:password" 作为我的第一个命令,那么我将无法读取和写入 /testnode,这是预期的。但是我可以 运行 rmr 和 delete 命令
[0]rmr /testnode -> this command deletes the zknode, which I do not want.
您在/testnode 上定义的ACL 限制访问,以便任何人都可以读取znode 中的数据,但只有经过身份验证的用户才能在/testnode 下创建子节点、删除/testnode 下的子节点、将数据写入znode 或管理 znode 权限。此 ACL 对删除 /testnode 没有任何限制,因为实际上那是对父目录的操作:删除 /.
的子目录
ZooKeeper access control using ACLs 上的 Apache 文档更详细地描述了权限设置:
ZooKeeper supports the following permissions:
- CREATE: you can create a child node
- READ: you can get data from a node and list its children.
- WRITE: you can set data for a node
- DELETE: you can delete a child node
- ADMIN: you can set permissions
要限制删除子 znode,您需要在其父节点上应用 ACL,并且该 ACL 必须限制 DELETE 访问。
我已经使用 acl 创建了一个新的 zknode,如下所示。
[0]addauth digest username:password
[1]create /testnode mydata auth:username:password:crdwa,world:anyone:r
这成功创建了 zknode,然后我退出了 zkCli 会话。
现在,当我再次登录到 zkCli 会话时。如果我不执行 "addauth digest username:password" 作为我的第一个命令,那么我将无法读取和写入 /testnode,这是预期的。但是我可以 运行 rmr 和 delete 命令
[0]rmr /testnode -> this command deletes the zknode, which I do not want.
您在/testnode 上定义的ACL 限制访问,以便任何人都可以读取znode 中的数据,但只有经过身份验证的用户才能在/testnode 下创建子节点、删除/testnode 下的子节点、将数据写入znode 或管理 znode 权限。此 ACL 对删除 /testnode 没有任何限制,因为实际上那是对父目录的操作:删除 /.
的子目录ZooKeeper access control using ACLs 上的 Apache 文档更详细地描述了权限设置:
ZooKeeper supports the following permissions:
- CREATE: you can create a child node
- READ: you can get data from a node and list its children.
- WRITE: you can set data for a node
- DELETE: you can delete a child node
- ADMIN: you can set permissions
要限制删除子 znode,您需要在其父节点上应用 ACL,并且该 ACL 必须限制 DELETE 访问。