在 Linux 上配置 HDFS 权限,通常包含 HDFS 自身权限模型 和 与 Linux 用户/组的映射 两部分。下面按常见使用场景系统说明。
HDFS 权限模型类似 Linux:
r(读)、w(写)、x(目录进入)drwxr-xr-x - hadoop supergroup 0 2024-01-01 /user/hadoop
hdfs-site.xml)<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
true:启用权限检查(生产环境推荐)false:关闭(测试环境常用)默认超级用户是 启动 NameNode 的 Linux 用户(如 hdfs)
可额外指定:
<property>
<name>dfs.permissions.superusergroup</name>
<value>supergroup</value>
</property>
⚠️ HDFS 不管理密码,只认用户名
示例:
useradd hadoop
hdfs dfs -ls /user
hdfs dfs -chown hadoop:supergroup /user/hadoop
hdfs dfs -chmod 755 /user/hadoop
hdfs dfs -chmod -R 700 /data/private
hdfs dfs -chgrp supergroup /user/hadoop
su - hadoop
hdfs dfs -put file.txt /user/hadoop/
export HADOOP_USER_NAME=hadoop
hdfs dfs -ls /user/hadoop
⚠️ 仅在没有 Kerberos 时有效
hdfs-site.xml)<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
hdfs dfs -setfacl -m user:alice:rwx /data/share
hdfs dfs -getfacl /data/share
如果是 安全集群:
示例:
kinit hadoop@EXAMPLE.COM
hdfs dfs -ls /
原因:
解决:
hdfs dfs -chown user:group /path
hdfs dfs -chmod 775 /path
✅ 启用 dfs.permissions.enabled=true
✅ 使用统一 Linux 用户体系
✅ 敏感数据用 ACL
✅ 安全集群启用 Kerberos
如果你有 具体场景(如:多用户共享目录、Yarn 提交任务、Hive 权限、某报错),可以告诉我,我给你针对性配置示例。