• acl的构成-scheme与id、permissions


    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    默认权限:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    [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

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    C++的一些基础语法
    Python潮流周刊#6:Python 3.12 有我贡献的代码!
    Android---java内存模型与线程
    LeetCode_50_Pow(x,n)
    TiUP 简介
    0基础如何学习软件测试?10分钟给你安排明白
    virtualbox基本配置
    面试25题
    区块链的技术架构:节点、网络和数据结构
    制造企业如何三步实现进销存管理?
  • 原文地址:https://blog.csdn.net/qq_37432174/article/details/128105742