


默认权限:






[permissonins]
c:create(不设置就不能创建该节点的子节点)
r:read(不设置就不能获取该节点信息,但如果子节点设置了r还是能获取子节点信息)
w:write(不设置就不能修改该节点信息,但如果子节点设置了w还是能修改子节点信息)
d:delete(不设置就不能删除该节点,也不能删除子节点)

world

auth

- 使用auth时,需要首先进行账号密码注册,否则无效;
addauth digest 账号:密码
可以看到使用digest注册,保存在数据库的密码是以密文的形式,它经过了SHA1加密后又用了BASE64加密,双重加密
'digest,'zsl:Fx+cuv7M7sbNyRbSyGvEoGnllEM=- 注册完后就可以,在节点上针对该账号密码进行权限设置
setAcl 路径 auth:账号:密码:[permissions]- 通过匿名方式设置权限;其实此时因为你前面已经通过了账号密码进行权限设置,所以你再次设置,默认取当前第一个账号,可以不用输入账号密码,因为它会根据你第一次注册的用户进行绑定 ;
setAcl 路径 auth::[permissions]

- 你再使用addauth注册一个账号
addauth digest 账号:密码
'digest,'zslx:mSx7c6F9PLe+xTpf/7EY9yx/wow=- 再针对该账号对该节点设置权限,你会发现这个节点可以针对不同的账号进行权限控制
- 使用匿名的方式还是可以进行设置权限,不过默认是第一个账号
setAcl 路径 auth::[permissions]

- 我们给节点设置了针对账号的权限,我们断开连接,连上后,不登录账号密码,会发现没有对该节点的权限;
- 断开客户端连接后,需要再次登录账号密码,才能对设置了账号权限的节点进行操作;
addauth digest 账号:明文密码登录- 我们登录都是通过密码是明文的方式登录
digest

- 通过digest,密码密文的方式给节点设置账号权限
setAcl 路径 digest:账号:密文密码:[permissions]
ip

设置只有指定ip才能访问该节点
setAcl 路径 ip:ip地址:[permissions]

super
- 当忘记了密码,需要使用超级管理的权限去重新设置节点权限,这时候就可以使用super,权限等级最高;
- 修改 zkServer.sh文件,在nohup下
"-Dzookeeper.DigestAuthenticationProvider.superDigest=账号:密文密码="- 对应着zookeeper源代码里,
DigestAuthenticationProvider类下的静态常量属性superDigest



