温馨提示×

Ubuntu HDFS如何进行权限控制

小樊
36
2025-12-24 17:15:12
栏目: 智能运维

Ubuntu 上 HDFS 权限控制实践

一 核心模型与关键概念

  • UGO 权限模型:每个文件/目录关联所有者(user)所属组(group)其他(other),权限为r/w/x。对文件:r 读取、w 写入/追加;对目录:r 列目录、w 创建/删除子项、x 进入子目录。权限检查沿路径的所有组件执行,访问任意中间目录都需要EXECUTE权限。支持粘滞位(Sticky Bit)用于共享目录(如 /tmp),仅所有者/目录所有者/超级用户可删除他人文件。HDFS 的超级用户是启动 NameNode 的进程用户;可通过 dfs.permissions.superusergroup 指定超级用户组。默认开启权限校验(dfs.permissions.enabled=true)。

二 启用与配置

  • 开启/关闭权限校验(hdfs-site.xml):
    • 开启:<property><name>dfs.permissions.enabled</name><value>true</value></property>
    • 关闭(仅测试):<property><name>dfs.permissions.enabled</name><value>false</value></property>
  • 指定超级用户组(可选,hdfs-site.xml):
    • <property><name>dfs.permissions.superusergroup</name><value>supergroup</value></property>
  • 新建文件/目录的默认权限由 umask 决定(core-site.xml):
    • 默认值:022。新文件权限为 0666 & ^umask(通常为 644),新目录为 0777 & ^umask(通常为 755)。可按需调整(如设为 027 以收紧组与其他权限)。

三 常用权限操作命令

  • 查看权限与属主/属组:
    • hdfs dfs -ls /path
  • 修改权限(八进制或符号):
    • hdfs dfs -chmod 750 /pathhdfs dfs -chmod u=rwx,g=rx,o= /path
  • 修改属主/属组:
    • hdfs dfs -chown alice:data /path
    • hdfs dfs -chgrp analytics /path
  • 递归与默认 ACL:
    • hdfs dfs -chmod -R 750 /data
    • hdfs dfs -setfacl -m default:user:alice:rwx /data(对 /data 下新建子项生效)
  • 粘滞位(共享目录防误删):
    • hdfs dfs -chmod +t /tmp
  • 组校验与身份查看:
    • hdfs groups alice(查看 alice 在 HDFS 侧的组映射)

四 细粒度授权与 ACL

  • 启用 ACL(hdfs-site.xml):
    • <property><name>dfs.namenode.acls.enabled</name><value>true</value></property>
  • 典型场景与命令示例:
    • 项目目录 /data 仅对 leaderdev 组开放读写,其他无权限:
      • hdfs dfs -setfacl -m user:leader:rwx /data
      • hdfs dfs -setfacl -m group:dev:rwx /data
      • hdfs dfs -setfacl -m other::--- /data
    • 为后续在该目录下新建的文件/子目录自动继承 ACL:
      • hdfs dfs -setfacl -m default:user:leader:rwx /data
      • hdfs dfs -setfacl -m default:group:dev:rwx /data
      • hdfs dfs -setfacl -m default:other::--- /data
  • 重要说明:
    • 在含 ACL 的文件上执行 chmod 实际修改的是 掩码(mask),会过滤命名用户/组的有效权限;如需保持扩展 ACL 效果,请同时调整 mask。
    • 权限检查顺序为:所有者 → 所属组 → 其他;对路径中所有现有目录组件需具备 EXECUTE 才能继续访问。

五 认证与组映射及安全加固

  • 身份认证模式(core-site.xml):
    • 简单模式:hadoop.security.authentication=simple(基于操作系统用户,便捷但不安全,适合测试)。
    • Kerberos:hadoop.security.authentication=kerberos(强认证,生产推荐;客户端需 kinit 获取票据)。
  • 组映射(hadoop.security.group.mapping):
    • 默认基于 NameNode 主机的本地系统组;也可接入 LDAP 等外部服务实现集中用户/组管理(如 LdapGroupsMapping)。
  • 审计与网络边界:
    • 启用 审计日志 记录访问与变更,便于合规与追踪。
    • Ubuntu 上使用 ufw 限制访问、仅放通必要端口,并配合 SSH 加固、及时补丁与最小权限原则,降低攻击面。

0