Zookeeper根节点被误添加权限后导致无法修改权限和获取数据
2022-10-21 本文已影响0人
刘大坝
由于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