当前位置:   article > 正文

Zookeeper(2)常用命令,ACL权限_zookeeper 查看权限

zookeeper 查看权限


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、zk节点和节点类型

znode数据存储图的讲解
在这里插入图片描述

节点类型

  1. PERSISTENT --持久化目录节点
    客户端与zookeeper断开连接后,该节点依旧存在
  2. PERSISTENT_SEQUENTIAL-持久化顺序编号节点
    客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
  3. EPHEMERAL -临时节点
    客户端与zookeeper断开连接后,该节点被删除,临时节点不可以创建子节点
  4. EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
    客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

二、常用命令

1.客户端连接

保证集群启动

  • 使用zkCli.sh默认链接本机
    在这里插入图片描述
    quit 退出 会话
    close 关闭与服务端的连接

  • 或者使用 zkCli -server ip或者主机名:端口号 链接相应服务器
    我的主机名已经配ip了

zkCli.sh -server cluster1:2181
  • 1

在这里插入图片描述

  • 或者是在zk命令行: connect ip地址或者主机名称:端口号, 链接相应服务器

2.常用命令

help 帮助命令

在这里插入图片描述

ls / 查看跟目录 后面必须

ls 存储路径 查看路径下的信息(路径必须是绝对路径)

 ls [-s] [-w] [-R] path
  • 1
列出子节点 -s状态 -R 递归查看所有子节点 -w 添加监听
  • 1

递归查询跟节点的所有子节点 ls -R /
ls -w / 查看监听根目录 ,如果根下的子节点发生变化都会被监听,只监听一次 (为了少占资源)提高效率

在这里插入图片描述
改变状态 都会被ls -w 监控到但是只监听一次
在这里插入图片描述

创建节点

create [-s] [-e] [-c] [-t ttl] path [data] [acl]
  • 1
  • -s 创建有序节点
  • -e 创建临时节点
  • data 节点内容 老版本必须有内容
  • acl(Access contro list)访问控制权限

创建普通节点
在这里插入图片描述
创建持久节点

创建持久有序
在这里插入图片描述
创建临时节点

create -e /fram/spring/aop 'aop'

  • 1
  • 2

持久化节点都是0X0 临时的ephemeralOwner和这次会话放id一样 说明这个东西是属于这个会话的 当会话消失 临时文件消失
在这里插入图片描述

临时的不能有子节点(临时持久都不能有)
在这里插入图片描述

创建临时有序节点
create -e -s /fram/spring/mvc ‘mvc1’
create -e -s /fram/spring/mvc ‘mvc2’
create -e -s /fram/spring/mvc ‘mvc3’
在这里插入图片描述
你会发现所有的顺序都是有序的
当退出后临时节点都消失了
在这里插入图片描述


get

get [-s] [-w] path
  • 1

get /frame/spring
get -s /frame/spring
set /frame/spring ‘spirng1’
get -s /frame/spring
set /frame/spring ‘spirng111’
get -s /frame/spring
create /frame/spring/boot ‘boot’
get -s /frame/spring
delete /frame/spring/boot
get -s /frame/spring
get -w /frame/spring 查看节点内容并监控 但是也是只监控一次
在另外一个会话中,改变/frame/spring的内容
set /frame/spring ‘spirng4’
set /frame/spring ‘spirng5’ 发现只有一次可以触发监控
在这里插入图片描述
在这里插入图片描述

zxid:节点创建时的zxid
ctime:节点创建时间
mZxid:节点最近一次更新时的zxid
mtime:节点最近一次更新的时间
pZxid: 表示该节点的子节点列表最后一次修改的事务ID,添加子节点或删除子节点就会影响子节点列表,但是修改子节点的数据内容则不影响该ID
cversion:子节点更新次数
dataVersion:本节点数据更新次数
aclVersion:节点ACL(授权信息)的更新次数
ephemeralOwner:如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是临时节点,ephemeralOwner值为0
dataLength:节点数据长度,本例中为hello world的长度
numChildren:子节点个数

set

set [-s] [-v version] path data
  • 1

更新节点内容:
set /frame/spring ‘spring1’ 更新节点内容
在这里插入图片描述

delete

delete [-v version] path 删除单个节点
删除节点,(不能存在子节点)
delete /frame/spring/mvc0000000008
create /frame/spring/boot ‘boot’
create /frame/spring/boot/sarun ‘SpringApplicationrun’
delete /frame/spring/boot 错误

deleteall path

删除路径及所有子节点

deleteall /frame/spring/boot
在这里插入图片描述

stat查看节点的状态

stat /frame/spring

setquota增加配额

setquota -n|-b val path
  • 1

-n 设置子节点的配额数量
-b 设置节点内容的长度

setquota -n 3 /frame 为/frame路径设置子节点数量限制 包含自己在内,最多3个子节点

listquota /frame 查看配额

ls /frame 查看子节点
在另外一个会话中打开日志:
tail -f /usr/zookeeper/logs/zookeeper-root-server-cluster1.out
create /frame/mybatis ‘ORM’
create /frame/hibernate ‘ORM’ 第二次创建目录时就会提示
listquota查询配额
listquota path
-1 表示无限, 即没有限制
listquota /frame
在这里插入图片描述

delquota删除配额

delquota [-n|-b] path
  • 1

delquota /frame 删除所有配额

删除配额好 配额米有了
在这里插入图片描述

三、ACL权限控制:

ACL:Access Control List 访问控制列表
相关命令:
getAcl 获取某个节点的acl权限信息
setAcl 设置某个节点的acl权限信息
addauth 输入认证授权信息,注册时输入明文密码(登录),但是在zk的系统里,密码是以加密后的形式存在的

1、ZooKeeper权限特性:

ZooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限

  • 每个znode支持设置多种权限控制方案和多个权限
  • 子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点

授权格式:
授权策略:授权对象: 权限
scheme: id: Permission

Scheme:(计划)授权的策略 包含下面:

  • world:默认方式,相当于全部都能访问 代表所有人

  • ip:使用客户端的主机IP作为ACL ID 。这个ACL表达式的格式为addr/bits ,此时addr中的有效位与客户端addr中的有效位进行比对。

  • auth:使用已添加认证的用户认证(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)

  • digest:即用户名:密码这种方式认证,这也是业务系统中最常用的。用username:password 字符串来产生一个MD5串,然后该串被用来作为ACL ID。认证是通过明文发送username:password 来进行的,当用在ACL时,表达式为username:base64 ,base64是password的SHA1摘要的编码。

ID:授权的对象
权限赋予的用户或者一个实体,例如:IP 地址 或者是用户(授权) 或者是 anyone

2、Permission:授予的权限 CRWDA

  • zookeeper支持的权限
  • CREATE©: 创建权限,可以在在当前node下创建child node
  • READ®: 读权限,可以获内容及子节点
  • WRITE(w): 写权限,可以向当前node写数据
  • DELETE(d): 删除权限,可以删除当前的child nodes
  • ADMIN(a): 管理权限,可以设置当前node的permission

world:

  • setAcl /aaa world:anyone:crwa 设置权限 米有删除权限
  • getAcl /aaa 查看权限
  • delete /aaa/a 不能删除
  • setAcl /aaa world:anyone:crwd 设置米有acl权限
  • delete /aaa/a 可以删除
  • ls /aaa 查询
  • setAcl /aaa world:anyone:crwda 在设置回去发现不成功
  • delete /aaa 直接删除节点

ip

setAcl /bbb ip:192.168.106.130:crwa 设置权限 和ip
当设置后只能这个ip的访问
非ip下会显示无访问权限
在这里插入图片描述
不过可以在 重新编写ip 重新设置

可以同时设置多个
在这里插入图片描述

auth

addauth digest scott:tiger
setAcl /ccc auth:scott:crwda

在这里插入图片描述
重新连接后需要重新再次添加授权用户才可以查看
不过可以删除
在这里插入图片描述

设置正确的认证信息后可以重新访问 名字:密码
在这里插入图片描述

digest

create /eee 555

setAcl /eee digest:user:6DY5WhzOfGsWQ1XFuIyzxkpwdPo=:crwda 创建摘要

addauth digest user:123456 添加用户
成功后可以查看
在这里插入图片描述
父节点的权限不会限制到子节点

在这里插入图片描述

测试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/467241
推荐阅读
相关标签
  

闽ICP备14008679号