2017-01-19 44 views
1

我用acl創建了一個新的zknode,如下所示。rmr zknode with ACL

[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刪除命令

[0]rmr /testnode -> this command deletes the zknode, which I do not want. 

回答

0

的ACL您已經在/ testnode定義限制訪問權限,使任何人都可以讀取Z序節點的數據,但只有通過認證的用戶可以創建兒童在/ testnode下,刪除/ testnode下的子項,將數據寫入znode或管理znode權限。這個ACL對delete/testnode沒有任何限制,因爲這對父目錄是一種操作:刪除/的子項。

ZooKeeper access control using ACLs Apache的文檔描述了權限設置的詳細信息:

的ZooKeeper支持以下權限:

  • CREATE:您可以創建一個子節點
  • READ:您可以從節點獲取數據並列出其子節點。
  • WRITE:您可以爲節點設置數據
  • DELETE:您可以刪除一個子節點
  • ADMIN:您可以設置權限

要限制的缺失一個子節點znode,你需要在它的父節點上應用ACL,並且該ACL必須限制DELETE訪問。