Zookeeper根节点被误添加权限后导致无法修改权限和获取数据解决Authentication is not valid

由于zookeeper对节点授权需要sha1加密并base64编号后添加ACL权限,如果通过 setAcl /testNode xxx:xxx:cdrwa(明文)命令则会导致后面无法操作对应的节点并且报错:Authentication is not valid : /testNode

解决

假如你的zookeeper安装路径如下

/home/fixbug/zoo_server

第一步:
> export ZK_CLASSPATH=/home/fixbug/zoo_server/conf/:/home/fixbug/zoo_server/lib/*:/home/fixbug/zoo_server/* 
> export ZK_CLASSPATH=/home/fixbug/zoo_server/conf/:/home/fixbug/zoo_server/lib/*:/home/fixbug/zoo_server/* 
## 此处假设你需要设置的超级管理员为 super、超级管理员的密码为 super123
> java -cp $ZK_CLASSPATH org.apache.zookeeper.server.auth.DigestAuthenticationProvider super:super123 
super:super123->super:UdxDQl4f9v5oITwcAsO9bmWgHSI= 


第二步,编辑zkServer.sh

在81行左右添加 SERVER_JVMFLAGS 变量:

> vim /home/fixbug/zoo_server/RegisterCenter/bin/zkServer.sh 
 80
 81 SERVER_JVMFLAGS=-Dzookeeper.DigestAuthenticationProvider.superDigest=super:UdxDQl4f9v5oITwcAsO9bmWgHSI=
 82 if [ "x$SERVER_JVMFLAGS"  != "x" ]
 83 then
 84     JVMFLAGS="$SERVER_JVMFLAGS $JVMFLAGS"
 85 fi

第三步,重启zookeeper
> sh /home/fixbug/zoo_server/RegisterCenter/bin/zkServer.sh restart 
第四步,通过zkCli登陆zookeeper重置路径权限
> cd /home/fixbug/zoo_server/RegisterCenter/bin/ 
> ./zkCli.sh
[zk: localhost:2181(CONNECTED) 0] addauth digest super:super123
[zk: localhost:2181(CONNECTED) 1] 
[zk: localhost:2181(CONNECTED) 1] setAcl /XXX world:anyone:cdrwa
[zk: localhost:2181(CONNECTED) 1] getAcl /XXX 
'world,'anyone
: cdrwa 

解决。

原文链接:https://community.cloudera.com/t5/Community-Articles/Zookeeper-Super-User-Authentication-and-Authorization/ta-p/246020

你可能感兴趣的:(Zookeeper根节点被误添加权限后导致无法修改权限和获取数据解决Authentication is not valid)