Debian 上部署 Hadoop HDFS 的权限设置要点
一 身份与用户映射
- 在 Debian 主机上先建立与业务一致的 Linux 用户/用户组(如用 useradd/groupadd),并确保集群各节点一致,避免权限错配。HDFS 的权限校验依赖“用户名/组名”而非本地 UID/GID,跨节点需保持名称一致。
- 执行 HDFS 管理操作(如 chown/chgrp/chmod)通常需要 HDFS 超级用户(默认 hdfs) 或文件所有者;普通用户只能改自己拥有的对象。
- 需要以某业务用户身份操作时,使用 sudo -u <用户名> 执行 Hadoop 命令,例如:sudo -u hdfs hdfs dfs -mkdir /data/finance。
- 高安全场景建议启用 Kerberos,先完成主体与 keytab 配置,再开启服务与客户端侧的认证,避免“权限在、身份空”的误判。
二 核心开关与默认权限
- 在 core-site.xml 开启服务级授权:将 hadoop.security.authorization 设为 true,限制未授权用户访问 HDFS、YARN 等服务。
- 在 hdfs-site.xml 开启 HDFS 权限校验:将 dfs.permissions.enabled 设为 true;通过 fs.permissions.umask-mode 设置新建文件/目录的默认权限掩码(如 022/027),统一“默认收紧、按需放开”的策略。
- 在 mapred-site.xml 启用队列 ACL:将 mapred.acls.enabled 设为 true,控制作业提交、查看、终止等操作的队列级权限。
- 在 YARN 侧配合 队列 ACL 与容量/公平策略,实现“资源隔离 + 访问控制”的组合防护。
三 权限模型与常用命令
- HDFS 采用类 POSIX 权限模型:对象包含 owner/group/others 三类主体与 r/w/x 三种权限;目录的 x 权限决定能否进入与列目录。
- 常用 HDFS 命令:
- 查看与修改权限/属主:hdfs dfs -ls /path;hdfs dfs -chmod 755/770 /path;hdfs dfs -chown user:group /path;递归加 -R。
- 细粒度授权:hdfs dfs -setfacl -m u:<用户>:r-x,g:<组>:r-x /path;hdfs dfs -getfacl /path。
- 典型目录实践:
- 共享目录(如 /user)可设 1777(含 sticky bit),允许用户在该目录下创建文件,但仅文件拥有者可删除,避免误删他人数据。
- 业务数据目录(如 /data/finance)建议 750/770,仅属主与同组可读写执行,其他无权限。
四 队列与作业访问控制
- 开启 mapred.acls.enabled 后,可在 mapred-site.xml 或队列配置中为队列设置 提交作业、查看作业、杀死作业 等操作的访问控制,实现部门/项目间的资源与数据隔离。
- 结合 YARN 队列 ACL 与容量/公平调度,限制用户/组在特定队列的资源使用,防止资源抢占与越权访问。
五 安全加固与运维要点
- 启用 Kerberos 做强身份认证,再叠加 HDFS ACL 做细粒度授权,形成“认证 + 授权”的双层防护。
- 引入 Apache Ranger 做集中式策略管理与审计,统一管控 HDFS/YARN/Hive 等组件的访问策略与合规审计。
- 启用 审计日志 并接入监控告警,持续跟踪权限变更与敏感访问,便于事后追溯。
- 加固网络与接口:仅开放必要端口,启用 SSL/TLS 保护 Web UI 与 RPC 通信,降低嗅探与中间人风险。
- 可选启用 SELinux/AppArmor 对进程进行强制访问控制,缩小被攻破后的影响面。
- 变更流程:先在测试环境验证;对关键目录变更前做备份;变更窗口内评估对 NameNode/DataNode 与业务作业的影响;变更后复核 ACL/属主/权限 与作业运行状态。