在 Linux 上使用 HDFS(Hadoop 分布式文件系统) 设置权限,主要通过 HDFS 自带的权限模型 和 hdfs dfs / hadoop fs 命令 来完成。下面按常见场景给你说明。
HDFS 权限和 Linux 类似:
r 读w 写x 执行(对目录表示可进入)示例:
drwxr-xr-- user1 group1 /user/user1
表示:
hdfs dfs -ls /path
或
hadoop fs -ls /path
hdfs dfs -chmod 755 /user/test
hdfs dfs -chmod u+rwx,g+rx,o+rx /user/test
递归修改:
hdfs dfs -chmod -R 700 /user/test
hdfs dfs -chown user1:group1 /user/test
递归:
hdfs dfs -chown -R user1:group1 /user/test
⚠️ 只有 HDFS 超级用户(通常是
hdfs)才能改 owner
hdfs dfs -chgrp group1 /user/test
递归:
hdfs dfs -chgrp -R group1 /user/test
HDFS 支持 ACL(访问控制列表)
hdfs-site.xml:
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
hdfs dfs -setfacl -m user:alice:rwx /user/test
hdfs dfs -getfacl /user/test
hdfs dfs -setfacl -x user:alice /user/test
hdfs dfs -chmod 1777 /tmp
只有文件 owner 才能删自己的文件
在 hdfs-site.xml 或用户环境中:
hdfs dfs -mkdir /test
默认权限受 umask 影响(类似 Linux)
⚠️ 重要:
示例:
whoami
# user1
hdfs dfs -put file /user/user1
如果是安全集群:
kinit user1
hdfs dfs -ls /
❌ Permission denied
解决:
sudo -u hdfs hdfs dfs -chmod 777 /path
如果你愿意,可以告诉我:
我可以直接给你可复制的命令。