温馨提示×

Zookeeper在Ubuntu上的权限设置如何操作

小樊
33
2025-12-18 18:59:28
栏目: 智能运维

Zookeeper 在 Ubuntu 上的权限设置操作指南

一 系统与服务运行权限

  • 创建专用系统用户与数据目录,避免使用 root 直接运行:
    • 创建用户与家目录:sudo useradd -m zookeeper
    • 可选设置 shell:sudo usermod --shell /bin/bash zookeeper
    • 创建数据与日志目录:sudo mkdir -p /data/zookeeper
    • 设置目录属主:sudo chown -R zookeeper:zookeeper /data/zookeeper
  • 安装与解压 Zookeeper 后,将安装目录属主设为 zookeeper:zookeeper,例如:
    • sudo chown -R zookeeper:zookeeper /opt/zookeeper
  • 以专用用户启动服务(避免直接用 root):
    • 切换用户:su - zookeeper
    • 启动:/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
  • 使用 systemd 托管时,在单元文件中显式指定运行用户与组,确保最小权限运行:
    • 示例关键项:User=zookeeperGroup=zookeeperWorkingDirectory=/opt/zookeeperExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg

二 文件与目录权限要点

  • 配置与二进制文件:建议将 /opt/zookeeper/conf、安装目录及脚本的属主设为 zookeeper:zookeeper,仅对必要文件授予写权限,避免其他用户修改配置或二进制。
  • 数据与日志目录:将 dataDir(如 /data/zookeeper)及其子目录属主设为 zookeeper:zookeeper,权限设置为仅属主可读写执行(如 700/750),防止其他系统用户访问敏感数据。
  • 运行与日志文件:确保 Zookeeper 进程对日志输出目录与 PID 文件所在目录具备写权限,避免因权限不足导致启动失败或无法写入日志。

三 Zookeeper ACL 访问控制

  • 启用基于 Digest 的身份认证与 ACL:
    • 在服务器端创建 JAAS 配置(如 /opt/zookeeper/conf/zookeeper_jaas.conf),示例:
      • Server { org.apache.zookeeper.server.auth.DigestLoginModule required user_super="SuperSecret" user_admin="AdminPass"; };
    • zoo.cfg 中启用 SASL/Digest 认证提供者:
      • authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
      • jaasLoginRenew=3600000
    • 重启服务使配置生效。
  • 客户端连接与登录:
    • 连接时携带身份:/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181 -auth digest:super:SuperSecret
    • 或在 zkCli 内先登录:addauth digest super:SuperSecret
  • 设置与查看 ACL:
    • 设置节点 ACL(示例对 /app 授予管理员完全权限,其他用户只读):
      • setAcl /app digest:admin:Base64(SHA1(admin:AdminPass)):cdrwa,digest:anyone:R
    • 查看 ACL:getAcl /app
    • 常用权限位:c(create)、r(read)、d(delete)、w(write)、a(admin)。
  • 安全建议:
    • 避免使用 world:anyone 授予写或管理权限,生产环境仅授予最小必要权限。
    • 统一使用 digest 认证,密钥按运维规范保管,必要时结合网络层限制(如防火墙/安全组)。

四 快速验证与常见问题

  • 验证步骤:
    • 以管理员身份连接并检查:/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181 -auth digest:super:SuperSecret
    • 创建测试节点:create /test "hello";读取:get /test;删除:delete /test
    • 使用非授权用户或匿名连接尝试相同操作,确认被拒绝。
  • 常见问题与处理:
    • 启动失败且提示无法写入数据目录:检查 dataDir 属主与权限是否为 zookeeper:zookeeper,目录是否存在。
    • 客户端无权访问:确认已通过 -authaddauth 登录,且节点的 ACL 已正确授予相应用户相应权限位。
    • 修改 zoo.cfg 或 JAAS 后未生效:重启 Zookeeper 服务,确保新配置被加载。

0