Zookeeper Acl权限 超级用户权限 怎么跳过ACL密码/账户验证
Zookeeper的一个节点不知道什么原因无法删除了,查看日志发现是没有权限,
我们之前使用ACL进行Zookeeper节点的权限管理。
可以解决以下三种但不限于以下三种问题:
1.在设置Acl权限时遇到了坑人(明文,密文)的问题,无法找回该路径权限
2.忘记路径对应的用户名以及密码
3.没有权限
使用以下两种方式生成密码的密文:
第一种使用代码生成密码的密文:
import org.apache.zookeeper.KeeperException;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Acl {
public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
String passwd = "super:Super_CmSz_Ht159357";
System.out.println(generateDigest(passwd));
}
static public String generateDigest(String idPassword) {
String parts[] = idPassword.split(":", 2);
byte digest[] = null;
try {
digest = MessageDigest.getInstance("SHA1").digest(idPassword.getBytes());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return parts[0] + ":" + base64Encode(digest);
}
static final private String base64Encode(byte b[]) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < b.length; ) {
int pad = 0;
int v = (b[i++] & 0xff) << 16;
if (i < b.length) {
v |= (b[i++] & 0xff) << 8;
} else {
pad++;
}
if (i < b.length) {
v |= (b[i++] & 0xff);
} else {
pad++;
}
sb.append(encode(v >> 18));
sb.append(encode(v >> 12));
if (pad < 2) {
sb.append(encode(v >> 6));
} else {
sb.append('=');
}
if (pad < 1) {
sb.append(encode(v));
} else {
sb.append('=');
}
}
return sb.toString();
}
static final private char encode(int i) {
i &= 0x3f;
if (i < 26) {
return (char) ('A' + i);
}
if (i < 52) {
return (char) ('a' + i - 26);
} 第一种使用代码生成密码的密文:
if (i < 62) {
return (char) ('0' + i - 52);
}
return i == 62 ? '+' : '/';
}
}
生成后的ID加密码为:super:VF+l3YE+veE4zEI/AgJX8bJVy3s=
第二种使用 linux 生成密码的密文:
mcbadm@cm01 ~]$ echo -n super:Super_CmSz_Ht159357 | openssl dgst -binary -sha1 | openssl base64
zookeeper:4lvlzsipXVaEhXMd+2qMrLc0at8=
生成后的ID加密码为:super:VF+l3YE+veE4zEI/AgJX8bJVy3s=
修改Zookeeper的启动脚本zkServer.sh,在start附件(140行左右)加入以下配置:
启动脚本只需要修改一个即可
重启修改脚本上的zookeeper服务即可
nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.DigestAuthenticationProvider.superDigest=super:VF+l3YE+veE4zEI/AgJX8bJVy3s=" \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
重新启动Zookeeper服务:
zkServer.sh restart
使用super:Super_CmSz_Ht159357连接Zookeeper服务器就可以对里面的节点任意妄为了。
addauth digest super:Super_CmSz_Ht159357
提醒,操作完成后最好把zkServer.sh文件还原了,以免出现安全问题。
如果密码真的忘记了
#配置文件中添加一下配置跳过Acl验证,默认为no
skipACL=yes
修改好密码后记得改为no或者删除此配置
如何正确的设置 zookeeper Acl权限 :
Zookeeper Acl权限 超级用户权限 怎么跳过ACL密码/账户验证的更多相关文章
- 为linux普通用户添加超级用户权限sudo
问题:假设用户名为:ali如果用户名没有超级用户权限,当输入 sudo + 命令 时, 系统提示: ali is not in the sudoers file. This incident wil ...
- linux普通用户权限设置为超级用户权限方法、sudo不用登陆密码
以用户zato为例 普通用户权限设置为超级用户权限 进入有超级用户权限的账号 添加文件可写(w)权限 sudo chmod u+x /etc/sudoers 编辑/etc/sudoers文件 添加语句 ...
- 在 Linux 中使用超级用户权限
在你想要使用超级权限临时运行一条命令时,sudo 命令非常方便,但是当它不能如你期望的工作时,你也会遇到一些麻烦.比如说你想在某些日志文件结尾添加一些重要的信息,你可能会尝试这样做: $ echo & ...
- windows service(system权限)创建用户权限进程
windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限.打开任务管理器,可查看到. 通常桌面系统explorer的权限是User权限,即 ...
- Ubuntu 获得超级用户权限
sudo passwd root 首先要先输入当前用户的密码,再在"输入新的UNIX密码"后面输入你想要设置的 root 密码即可,然后就可以切换到 super user 了: $ ...
- vim以超级用户权限保存文件
以普通用户打开文件 保存时执行 :w !sudo tee % > /dev/null
- DDD领域模型数据访问权限之用户权限(十)
BAS_PRService岗位和角色服务: public class BAS_PRService { //岗位 private IRepository<BAS_Post> ireposit ...
- Linux中让普通用户拥有超级用户的权限
问题 假设用户名为:ali 如果用户名没有超级用户权限,当输入 sudo + 命令 时, 系统提示: ali is not in the sudoers file. This incident wi ...
- 简单的Linux的用户权限管理
企业生产环境用户权限集中管理方案案例 建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后, ...
随机推荐
- 阿里面试Redis常考问题
一提到Redis缓存,我们不得不了解的三个问题就是:缓存雪崩.缓存击穿和缓存穿透.这三个问题一旦发生,会导致大量的请求直接请求到数据库层.如果并发压力大,就会导致数据库崩溃.那p0级的故障是没跑了. ...
- 如何远程调试自定义开发的Flume应用
一.前言 Flume作为当下最流行的大数据采集组件之一.其本身拥有分布式/高可靠/高可用等优点,但相比较于Flink/Spark/Kafka等大数据组件,其对于本地调试的功能支持度并不高,如果我们没有 ...
- linux 高并发socket通信模型
------select 1 一个误区很多人认为它最大可以监听1024个,实际上却是文件描述符的值不能大于等于1024,所以除掉标准输入.输出.错误输出,一定少于1024个,如果在之前还打开了其他文件 ...
- Mysql聚合函数count(1) sum(1)结果返回0和NULL
1.count(1) 返回为0 如果所查询的表或者where条件筛选后得到的结果集为空,则 count(1)返回为 0 如: select count(id) from test; select co ...
- Redis奇怪的姿势
Redis奇怪的姿势 写在前面 之前渗透 摸鱼 时和小伙伴发现了一个redis,存在未授权,是win服务器但是没有路径,度娘了之后发现了这个姿势,特此学习记录一下. 写入启动项 环境搭建 window ...
- 一文学会在Markdown中编辑数学符号与公式
在用Markdown写博客时会涉及到数学符号与公式的编辑,下面进行汇总.随手记录,方便你我他. 行内公式:将公式插入到本行内 $0.98^{365} \approx 0.0006$ 我的365天:\( ...
- Blazor+Dapr+K8s微服务之开发环境调试
1 安装Dapr开发调试环境 1.1 Dapr 完整安装模式不支持开发调试 在上一篇随笔<Blazor+Dapr+K8s微服务之服务调用>中,我们通过为每个 ...
- mpu6050控制舵机云台
准备材料:2个舵机mg90,云台支架,1个arduino-uno,mpu6050 编程工具:VScode-platformio or ArduinoIDE 我使用的是VScode在编辑代码上会更方 ...
- 五、Abp vNext 基础篇丨博客聚合功能
介绍 业务篇章先从客户端开始写,另外补充一下我给项目起名的时候没多想起的太随意了,结果后面有些地方命名冲突了需要通过手动using不过问题不大. 开工 应用层 根据第三章分层架构里面讲到的现在我们模型 ...
- .Net Core 踩坑记录--程序独立发布 无法运行
背景 创建.net Core3.1 的Console程序 点击发布 选择独立部署模式 目标电脑 Win10 x64 未安装任何.Net SDK 现象 发布的程序 点击运行没有反应 或是直接闪退 解决 ...