在 CentOS 上落地 HDFS 权限管理
一 核心概念与前置准备
二 启用与配置权限检查
<configuration>
<property>
<name>fs.permissions.umask-mode</name>
<value>022</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
</configuration>
<property>
<name>hadoop.proxyuser.hdfs.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hdfs.groups</name>
<value>*</value>
</property>
# 重启示例(按你的实际服务名调整)
sudo systemctl restart hadoop-hdfs-namenode
sudo systemctl restart hadoop-hdfs-datanode
# 刷新用户-组映射缓存
hdfs dfsadmin -refreshUserToGroupsMappings
jps # 应看到 NameNode、DataNode 等进程
hdfs dfs -ls / # 基本连通性验证
上述配置分别用于启用权限检查、ACL、默认 umask 与代理用户白名单,并给出重启与验证方式。
三 常用权限操作命令
hdfs dfs -chmod 755 /user/hadoop/data.txt
hdfs dfs -chown hadoop:hadoop /user/hadoop/data.txt
hdfs dfs -chgrp analytics /user/hadoop/data.txt
# 为用户 alice 授予 /data 读写执行;-R 递归
hdfs dfs -setfacl -R -m user:alice:rwx /data
# 为组 sales 授予读执行,并保留最小 ACL 项
hdfs dfs -setfacl -m group:sales:r-x /data
# 查看 ACL
hdfs dfs -getfacl /data
# 删除某个 ACL 项
hdfs dfs -setfacl -x user:alice /data
# 删除所有 ACL(回到仅 POSIX 权限)
hdfs dfs -setfacl -b /data
# 设置默认 ACL(对 /data 下新建文件/目录自动继承)
hdfs dfs -setfacl -m default:user:alice:rwx /data
四 安全加固与运维要点
<!-- core-site.xml -->
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
获取票据示例:
kinit hdfs@YOUR.REALM
hdfs dfs -chmod 1777 /user
<!-- hdfs-site.xml -->
<property>
<name>dfs.namenode.name.dir.perm</name>
<value>700</value>
</property>
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
hdfs dfsadmin -refreshUserToGroupsMappings 刷新组映射。hdfs dfsadmin -safemode leave
hdfs dfs -getfacl 复核实际生效的 ACL 与 mask。