在 Ubuntu 上给 Kafka 配置权限,通常分为 文件系统权限 和 Kafka 自身访问权限(ACL / SASL) 两类。下面按常见场景给你说明。
Kafka 默认数据目录一般是:
/tmp/kafka-logs
# 或
/var/lib/kafka
如果你用的是自定义用户(如 kafka):
sudo mkdir -p /var/lib/kafka
sudo chown -R kafka:kafka /var/lib/kafka
sudo chmod 750 /var/lib/kafka
sudo chown kafka:kafka /etc/kafka/*.properties
sudo chmod 640 /etc/kafka/*.properties
sudo mkdir -p /var/log/kafka
sudo chown -R kafka:kafka /var/log/kafka
如果你是 systemd 启动 Kafka:
sudo useradd -r -s /usr/sbin/nologin kafka
/etc/systemd/system/kafka.service 示例:
[Service]
User=kafka
Group=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.properties
然后:
sudo systemctl daemon-reload
sudo systemctl restart kafka
如果你说的是 “谁能读写 Topic”,那是 Kafka 的安全机制。
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin
# server.properties
listeners=SASL_PLAINTEXT://:9092
security.interop.bootstrap.servers=SASL_PLAINTEXT://localhost:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
允许 user1 读写 test topic:
kafka-acls.sh \
--bootstrap-server localhost:9092 \
--add \
--allow-principal User:user1 \
--operation Read \
--operation Write \
--topic test
查看权限:
kafka-acls.sh --bootstrap-server localhost:9092 --list
| 问题 | 原因 |
|---|---|
Permission denied |
Kafka 用户对数据目录无权限 |
TopicAuthorizationException |
ACL 未配置 |
GroupAuthorizationException |
消费组无权限 |
你可以告诉我:
我可以给你一份精确配置文件示例。