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密码/账户验证的更多相关文章

  1. 为linux普通用户添加超级用户权限sudo

    问题:假设用户名为:ali如果用户名没有超级用户权限,当输入 sudo + 命令 时, 系统提示: ali is not in the sudoers file.  This incident wil ...

  2. linux普通用户权限设置为超级用户权限方法、sudo不用登陆密码

    以用户zato为例 普通用户权限设置为超级用户权限 进入有超级用户权限的账号 添加文件可写(w)权限 sudo chmod u+x /etc/sudoers 编辑/etc/sudoers文件 添加语句 ...

  3. 在 Linux 中使用超级用户权限

    在你想要使用超级权限临时运行一条命令时,sudo 命令非常方便,但是当它不能如你期望的工作时,你也会遇到一些麻烦.比如说你想在某些日志文件结尾添加一些重要的信息,你可能会尝试这样做: $ echo & ...

  4. windows service(system权限)创建用户权限进程

    windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限.打开任务管理器,可查看到. 通常桌面系统explorer的权限是User权限,即 ...

  5. Ubuntu 获得超级用户权限

    sudo passwd root 首先要先输入当前用户的密码,再在"输入新的UNIX密码"后面输入你想要设置的 root 密码即可,然后就可以切换到 super user 了: $ ...

  6. vim以超级用户权限保存文件

    以普通用户打开文件 保存时执行 :w !sudo tee % > /dev/null

  7. DDD领域模型数据访问权限之用户权限(十)

    BAS_PRService岗位和角色服务: public class BAS_PRService { //岗位 private IRepository<BAS_Post> ireposit ...

  8. Linux中让普通用户拥有超级用户的权限

    问题 假设用户名为:ali 如果用户名没有超级用户权限,当输入 sudo + 命令 时, 系统提示: ali is not in the sudoers file.  This incident wi ...

  9. 简单的Linux的用户权限管理

    企业生产环境用户权限集中管理方案案例 建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后, ...

随机推荐

  1. 100的累加和 for循环

    1 int main() 2 { 3 int sum ; 4 int i; 5 for(i = 0; i<101; i++) 6 { 7 sum += i; 8 } 9 printf(" ...

  2. 两年Android开发三面上岸腾讯,这些核心知识点建议收藏

    概述 感觉毕业后时间过得真快啊,从 19 年 7 月本科毕业入职后,到现在快两年了,前段时间金三银四期间想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,面试好几家大厂,最后选择了腾讯.也祝 ...

  3. 树莓派应用Docker

    本期通过在树莓派上配置 Docker,来介绍 Docker 应用,欢迎来到"万物皆可 Docker"的时代! 什么是 Docker ? Docker 最初是 dotCloud 公司 ...

  4. Postman API 接口测试、Jenkin 持续集成测试

    Postman 是一个创建和使用API的应用,Postman 对于Web开发者来说非常有用,Postman 带来的便利有很多,诸如: RESTFul接口测试不依赖其他端,进度不受影响 测试脚本即文档, ...

  5. Linux进程理解与实践(三)进程终止函数和exec函数族的使用

    进程的几种终止方式(Termination) (1)正常退出 从main函数返回[return] 调用exit 调用_exit或者_Exit 最后一个线程从其启动处返回 从最后一个线程调用pthrea ...

  6. Python断言及常用断言函数总结

    Python断言 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Python 解释器会报 As ...

  7. 快速从SQL语法过度到Elasticsearch的DSL语法

    目录 前言 bool-相当于一个括号 should-相当于or must-相当于and must_not-相当于 ! and term-相当于= terms-相当于in between-相当于rang ...

  8. PHP下对Mysql数据库的操作

    PHP连接数据库: 使用 mysqli-connect()函数,函数里面至少填三个变量:host,用户名,密码. $dbHost="localhost"; $dbUser=&quo ...

  9. RabbitMQ和Elasticsearch的使用笔记

    Demo介绍 学习rabbitmq和elasticsearch后的小练习,主要功能点介绍: 1.elasticsearch实现搜索.条件查询和分页: 2.搜索周边酒店信息 3.酒店竞价排名: 4.后台 ...

  10. CGO入门和OCR文字识别(非第三方API,有源码,效果好)实战

    这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战 系列文章见: [第四天] GDB调试指南:C++中如何调试生产环境的程序? [第三天] IM敏感词算法原理和实现 [第二天] 现代IM架构研 ...