温馨提示×

linux zookeeper如何设权限

小樊
45
2026-10-01 13:22:21
栏目: 智能运维

在 Linux 上搭建的 ZooKeeper,权限控制主要涉及 两方面:

  1. Linux 系统层权限(谁能动 ZooKeeper 进程/目录)
  2. ZooKeeper 自身 ACL 权限(谁能访问/修改 ZNode)

下面分别说明。


一、Linux 系统层权限设置

1. 使用独立用户运行 ZooKeeper(推荐)

不要用 root 跑 ZooKeeper。

useradd zookeeper
passwd zookeeper

修改目录归属:

chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /var/lib/zookeeper
chown -R zookeeper:zookeeper /var/log/zookeeper

启动:

su zookeeper -c "/opt/zookeeper/bin/zkServer.sh start"

2. 目录权限控制

chmod 750 /opt/zookeeper
chmod 700 /var/lib/zookeeper

确保只有 zookeeper 用户和 root 能访问。


3. 防火墙限制(可选)

只允许指定 IP 访问 2181:

firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="2181" protocol="tcp" accept'
firewall-cmd --reload

二、ZooKeeper 自身 ACL 权限(重点)

ZooKeeper 支持 ACL(Access Control List),控制 ZNode 的访问。

1. ACL 权限模式(scheme)

常用:

  • world:所有人(默认)
  • auth:已认证用户
  • digest:用户名+密码(最常用)
  • ip:指定 IP

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

(1)生成密码

echo -n user:password | md5sum

例如:

user:123456 → md5

(2)创建带权限的 ZNode

create /test nodeData digest:user:密码MD5:cdrwa

示例:

create /app digest:admin:21232f297a57a5a743894a0e4a801fc3:cdrwa

(3)客户端登录

addauth digest admin:123456

之后才能访问 /app


3. 权限字符说明(cdrwa)

  • c:create(创建子节点)
  • d:delete(删除子节点)
  • r:read(读)
  • w:write(写)
  • a:admin(设置 ACL)

示例:

digest:user:md5:rw

4. 查看和修改 ACL

查看:

getAcl /app

修改:

setAcl /app digest:user:md5:cdrwa

5. 默认安全建议

  • 不要使用 world:anyone
  • 生产环境使用 digest 或 ip
  • 关闭 ZooKeeper 的匿名访问

三、ZooKeeper 配置层面增强(可选)

zoo.cfg 中:

# 只允许本地或指定网段
clientPortAddress=127.0.0.1

或配合防火墙使用。


总结

层级 做法
Linux 专用用户 + 目录权限 + 防火墙
ZooKeeper digest/auth/ip ACL
运维 不用 root、最小权限

如果你愿意,我可以:

  • 给你一个 生产环境 ZooKeeper 权限模板
  • 或针对 Kafka / Hadoop / Dubbo 场景讲权限配置

0 踩