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