在 Linux 上配置 HDFS 权限,通常涉及 HDFS 自身权限模型、Linux 用户/用户组映射 以及 核心配置文件。下面按常见场景说明。
HDFS 权限模型类似 Linux 文件系统:
rwx(读 / 写 / 执行)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>
设为
false会关闭权限检查(不推荐生产环境)
core-site.xml(用户身份模拟)<property>
<name>hadoop.proxyuser.hdfs.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hdfs.groups</name>
<value>*</value>
</property>
HDFS 不直接存密码,而是依赖:
id 命令解析useradd hdfs
useradd hadoop
groupadd supergroup
usermod -aG supergroup hadoop
HDFS 默认超级组:
supergroup
hdfs dfs -chown hadoop:supergroup /user/hadoop
hdfs dfs -chmod 755 /user/hadoop
hdfs dfs -chmod 700 /user/private
hdfs dfs -chgrp dev /data/logs
hdfs dfs -setfacl -m user:alice:rwx /data/share
hdfs dfs -getfacl /data/share
原因:
解决:
id hadoop
hdfs dfs -ls /user/hadoop
HDFS 不认 root(除非特别配置)
解决:
sudo -u hdfs hdfs dfs -ls /
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
✅ 开启权限
✅ 使用统一 UID/GID
✅ 使用 ACL 精细控制
❌ 不要 dfs.permissions.enabled=false
如果你愿意,可以告诉我:
我可以给你更针对性的配置示例。