温馨提示×

linux zookeeper怎么设置权限

小樊
39
2026-10-13 08:03:53
栏目: 智能运维

在 Linux 上部署的 ZooKeeper,权限通常涉及 两层面:

  1. Linux 系统层权限(谁可以启动、访问 ZooKeeper 文件)
  2. ZooKeeper 自身 ACL 权限(对 znode 的读写控制)

下面分别说明。


一、Linux 系统层权限设置

1. 创建专用用户(推荐)

不要用 root 运行 ZooKeeper:

useradd zookeeper
passwd zookeeper

2. 修改目录权限

假设 ZooKeeper 安装在 /opt/zookeeper,数据目录在 /data/zookeeper:

chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /data/zookeeper
chmod 750 /opt/zookeeper
chmod 700 /data/zookeeper

3. 使用专用用户启动

su zookeeper
/opt/zookeeper/bin/zkServer.sh start

二、ZooKeeper ACL 权限(重点)

ZooKeeper 使用 ACL(Access Control List) 控制 znode 访问。

1. ACL 权限类型

权限 说明
CREATE 创建子节点
READ 读取节点和数据
WRITE 写数据
DELETE 删除子节点
ADMIN 设置 ACL

组合示例:

  • world:anyone:cdrwa(默认,所有人可读写)
  • auth::cdrwa(已认证用户)
  • digest:user:password:cdrwa

2. 使用 digest 方式设置账号密码(最常用)

(1)生成密码摘要

java -cp zookeeper.jar:lib/* org.apache.zookeeper.server.auth.DigestAuthenticationProvider user:123456

输出类似:

user:123456 -> user:6e6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d

(2)登录 ZooKeeper

zkCli.sh

(3)创建带权限的节点

create /test "data" digest:user:6e6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d:cdrwa

(4)客户端认证后访问

addauth digest user:123456
get /test

3. 修改已有节点 ACL

setAcl /test digest:user:6e6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d:cdrwa

4. 查看节点 ACL

getAcl /test

三、常见安全配置建议

1. 禁用 world 权限(生产环境)

避免:

world:anyone:cdrwa

2. 开启 ACL 强制

在 zoo.cfg 中:

aclProvider=org.apache.zookeeper.server.auth.SASLAuthenticationProvider

3. 限制客户端 IP(防火墙)

iptables -A INPUT -p tcp --dport 2181 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 2181 -j DROP

四、总结

场景 做法
Linux 权限 专用用户 + 目录权限
znode 权限 ACL(digest 最常用)
安全建议 禁用 world、限制 IP

如果你愿意,我可以:

  • 给你 完整 zoo.cfg 安全配置示例
  • 或讲 ZooKeeper + Kerberos 认证
  • 或针对 Kafka / Hadoop 使用 ZooKeeper 权限 的场景说明

0 踩