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权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后, ...
随机推荐
- 如何在Spring Data MongoDB 中保存和查询动态字段
原文: https://stackoverflow.com/questions/46466562/how-to-save-and-query-dynamic-fields-in-spring-data ...
- 【Linux】LVM 逻辑卷管理
LVM - 逻辑卷管理 简介 LVM(Logical Volume Manager), 即逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制. 相关名词 PV(physical volume) ...
- windows的自动登录和隐藏用户
Launch Regedit. #r -> regedit 1. Navigate to: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Cu ...
- XML外部实体注入 安鸾 Writeup
XML外部实体注入01 XML外部实体注入,简称XXE 网站URL:http://www.whalwl.host:8016/ 提示:flag文件在服务器根目录下,文件名为flag XML用于标记电子文 ...
- STM32—TIMx实现编码器四倍频
文章目录 一.储备知识 二.TIMx的编码器模式介绍 1.计数边沿设置 2.选择极性和使能 3.使能 4.计数方向 三.代码部分 一.储备知识 通过STM32的定时器编码器接口模式对编码器进行四倍频, ...
- Xilinx约束学习笔记(一)—— 约束方法学
<Xilinx约束学习笔记>为自己阅读 Xilinx 官方 UG903 文档后的学习笔记,大多数为翻译得来,方便大家学习. 1 约束方法学 1.1 组织约束文件 Xilinx 建议将时序约 ...
- noip35
T1 考场乱搞出锅了... 正解: 把原序列按k往左和往右看成两个序列,求个前缀和,找下一个更新的位置,直接暴跳. Code #include<cstdio> #include<cs ...
- nacos config基本使用
说明 Nacos is an easy-to-use dynamic service discovery, configuration and service management platform ...
- new[]/delete[]与new/delete区别
new[]/delete[]与new/delete完全不同-动态对象数组创建通过new[] 完成-动态对象数组的销毁通过delete[]完成-new[]/delete[]能够被重载,进而改变内存管理方 ...
- 1TB是多大?
TB是计算机的存储单位,用来描述计算机的存储容量.另外还有GB.MB.KB.B.就像长度单位米.分米.厘米.毫米一样,它们之间有换算关系: 1KB = 1024B 1M = 1024KB 1GB = ...