使用 zookeeper 添加普通账户,并给某节点进行赋权,忘记密码后,无法对该节点进行操作,通过开启 ACL super 账户进行操作。
$ zkCli.sh
[zk: localhost:2181(CONNECTED) 4] addauth digest test:test123
[zk: localhost:2181(CONNECTED) 3] create /test_acl value_of_test_acl
[zk: localhost:2181(CONNECTED) 5] setAcl /test_acl auth:test:crawd
- c:create 可以创建子节点
- r:read 可以读取节点数据及显示子节点列表
- a:admin 可以设置节点访问控制列表权限
- w:write 可以设置节点数据
- d:delete 可以删除子节点(仅下一级节点)
- world:只有一个 id "anyone",代表任何人
- ip:通常是一个 ip 地址或者 ip 段
- auth:授权用户,用户名:密码
- digest:自定义,通常是username:BASE64(密码)
[zk: localhost:2181(CONNECTED) 7] get /test_acl
value_of_test_acl
[zk: localhost:2181(CONNECTED) 8] stat /test_acl
cZxid = 0x100003cf0
ctime = Sat May 02 20:59:14 CST 2020
mZxid = 0x100003cf0
mtime = Sat May 02 20:59:14 CST 2020
pZxid = 0x100003cf0
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 17
numChildren = 0
$ vim zookeeper/bin/zkServer.sh
nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
"-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError='kill -9 %p' \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="
nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
"-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs=" \
-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError='kill -9 %p' \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
$ zookeeper/bin/zkServer.sh restart
[zk: localhost:2181(CONNECTED) 0] addauth digest super:admin
[zk: localhost:2181(CONNECTED) 1] getAcl /test_acl
'digest,'test:4kLbCbLRytYsfNQkaDbMuExRDDs=
: cdrwa
'digest,'dev:F68DtlM8o9v9xs9S6LL7P4VQJIM=
: cdrwa
[zk: localhost:2181(CONNECTED) 2] get /test_acl
value_of_test_acl
[zk: localhost:2181(CONNECTED) 3] delete /test_acl
- 关闭 super 权限 && 重启 zookeeper 服务
"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs=" \
$ zookeeper/bin/zkServer.sh restart
参考