在 Linux 环境下使用 HDFS(Hadoop Distributed File System) 设置权限,通常是通过 HDFS 命令(hdfs dfs / hadoop fs) 来完成的,而不是 Linux 的 chmod、chown 直接在本地文件系统上操作(那只是针对本地文件)。
下面按常见场景说明。
HDFS 权限与 Linux 类似:
r(读)、w(写)、x(执行,对目录表示可进入)示例:
drwxr-xr-x - user1 group1
表示:
hdfs dfs -ls /path
或
hadoop fs -ls /path
hdfs dfs -chmod 755 /user/hadoop/test
hdfs dfs -chmod u+x /user/hadoop/test
hdfs dfs -chmod g-w /user/hadoop/test
hdfs dfs -chmod -R 777 /user/hadoop/data
hdfs dfs -chown user1 /user/hadoop/test
hdfs dfs -chown user1:group1 /user/hadoop/test
hdfs dfs -chown -R user1:group1 /user/hadoop/data
hdfs dfs -chgrp group1 /user/hadoop/test
递归:
hdfs dfs -chgrp -R group1 /user/hadoop/data
如果集群开启了 ACL:
hdfs dfs -getfacl /user/hadoop/test
hdfs dfs -setfacl -m user:alice:rwx /user/hadoop/test
hdfs dfs -setfacl -m group:team:r-x /user/hadoop/test
hdfs dfs -setfacl -x user:alice /user/hadoop/test
sudo -u hdfs hdfs dfs -chmod 777 /path
原因:
解决:
检查:
hdfs dfs -getfacl /path
若报错,需在 hdfs-site.xml 中开启:
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
如果你有具体场景(比如:给某个用户只读、给 Spark 写权限、Kerberos 环境),可以告诉我,我可以给你更精确的命令。