ZK的权限访问ACL。由schema:id:permission来定义的。
其中schema包括 world、auth、digest、ip,其中world是默认权限,而且是所有人都可以对节点做任意操作,id的话就是不同schema下的标识,比如。auth、digest则代表用户名和密码,ip代表ip地址。permission表示具体具有哪些权限:cdwra分别表示create, delete,write,read, admin。其中admin表示具有对节点设置ACL的权限。
a.auth是使用用户来对某一节点设置权限。使用auth的schema,首先需要创建一个认证用户:
addauth digest username:password
setAcl /path auth:username:cdwra
b.digest授权模式。需要一个加密的密码。我们可以在linux上直接执行该命令获取
echo -n super:admin | openssl dgst -binary -sha1 | openssl base64 创建一个用户名为super,密码为admin会生成一个字符串
setAcl /path digest:username:加密后的密码:crdwa
digest与auth的区别在于。digest不需要先添加认证用户就能设置节点权限,而auth需要先添加认证用户。
通过digest设置完节点权限后,如果客户端需要访问,那么我们只需要添加认证用户即可:
addauth digest username:明文密码
c.world的schema
d.ip的schema
当前客户端使用localhost连接的。所以提示没有权限。使用本机Ip连接就可以了
最后一种比较特殊,就是设置集群的超级用户。
vim zk的bin目录下的zkServer.sh找到标红的一行,将下列代码写入并保存进去
先生产超级管理员的加密密码,然后将密码写入如图下面的命令中。
"-Dzookeeper.DigestAuthenticationProvider.superDigest=root:qiTlqPLK7XM2ht3HMn02qRpkKIE="
将上面的命令加入到上图箭头的位置,并重启zk集群。
超级用户集群添加失败,等待大佬指正下问题!!!