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. C++ //多态案例三 ---电脑组装

    1 //多态案例三 ---电脑组装 2 3 #include <iostream> 4 #include <string> 5 using namespace std; 6 7 ...

  2. 《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)

    1.简介 按计划今天宏哥继续讲解css的定位元素的方法.但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用. 2.常用定位方法(8种) (1)id(2)name(3)class name( ...

  3. 【Vulnhub】DC-2靶机

    Vulnhub DC-2 靶机 信息搜集 访问web端发现访问不了,可以观察到相应的URL为域名而不是IP,需要在hosts文件种添加一条DNS记录. host位置:C:\Windows\System ...

  4. 超过Numpy的速度有多难?试试Numba的GPU加速

    技术背景 Numpy是在Python中非常常用的一个库,不仅具有良好的接口文档和生态,还具备了最顶级的性能,这个库很大程度上的弥补了Python本身性能上的缺陷.虽然我们也可以自己使用Cython或者 ...

  5. 利用pycharm创建DjangoWeb项目

    1.打开pycharm开发工具:(开发服务器的搭建) File------->New Project-------->Django()

  6. LeetCoded第21题题解--合并两个有序链表

    21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出 ...

  7. IDEA不自动提示仓库中有的包maven

  8. Mysql 中隐式转换

    案例一:条件字段函数操作 假设你现在维护了一个交易系统,其中交易记录表 tradelog 包含交易流水号(tradeid).交易员 id(operator).交易时间(t_modified)等字段.为 ...

  9. jQuery中的表单对象属性过滤选择器(四、八)::enabled、:disabled、:checked、:selected

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  10. jQuery中的内容、可见性过滤选择器(四、四)::contains()、:empty、:has()、:parent、:hidden、:visible

    <!DOCTYPE html> <html> <head> <title>内容.可见性过滤选择器</title> <meta http ...