在 CentOS 上设置 HDFS 权限,通常分为 HDFS 自身权限模型 和 CentOS 系统/用户层面 两部分。下面按常见场景给你说明。
HDFS 权限和 Linux 类似:
hdfs dfs -ls /user
示例:
drwxr-xr-x - hadoop supergroup 0 2024-01-01 /user/hadoop
hdfs dfs -chown user:group /path
例:
hdfs dfs -chown hadoop:hadoop /user/hadoop
hdfs dfs -chmod 755 /path
或:
hdfs dfs -chmod -R 777 /user/test
常用权限说明:
755:owner 可读写执行,其他只读执行700:仅 owner 可用777:所有用户可读写(⚠️ 不推荐生产)hdfs dfs -chgrp hadoop /user/test
⚠️ 关键点:
HDFS 认为的“用户”是 提交命令的 Linux 用户
例如:
whoami
如果是 root,HDFS 就认为你是 root
hadoop)useradd hadoop
su - hadoop
hdfs dfs -put file /user/hadoop/
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
⚠️ 测试环境可临时关闭(不推荐生产):
<value>false</value>
默认是 启动 NameNode 的 Linux 用户
例如用 hadoop 启动 HDFS,则:
hdfs dfs -chmod 000 /test
只有 hadoop 能改回来
hdfs dfs -mkdir /data/share
hdfs dfs -chown hadoop:teamA /data/share
hdfs dfs -chmod 770 /data/share
hdfs dfs -chmod 755 /public
通常是:
解决:
hdfs dfs -chmod -R 777 /user/spark
或正确设置 owner
hdfs dfs -ls /
hdfs dfs -getfacl /path
查看 ACL(如果开启):
hdfs dfs -setfacl -m user:alice:rwx /data
如果你愿意,可以告诉我:
我可以直接帮你给一套可复制的命令。