在 Linux 上运行 HDFS 时报“权限错误(Permission denied)”,通常不是 Linux 文件权限本身,而是 HDFS 自身的权限模型 与 运行用户 不匹配导致的。下面按常见原因逐一说明。
HDFS 默认开启 用户身份校验(Simple / Kerberos):
Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
root 执行 hdfs dfs -put/user 属于 hdfs:supergroup✅ 用正确用户执行
sudo -u hdfs hdfs dfs -ls /
或
export HADOOP_USER_NAME=hdfs
hdfs dfs -ls /
HDFS 权限和 Linux 类似:
drwxr-xr-x hdfs supergroup
/user/xxx 写数据,但目录不存在或不属于你w 权限hdfs dfs -mkdir -p /user/yourname
hdfs dfs -chown yourname:yourgroup /user/yourname
HDFS 在启动或异常后会进入 安全模式,只允许读。
Permission denied. Name node is in safe mode.
hdfs dfsadmin -safemode leave
如果是 测试/学习环境,可以关闭权限检查:
hdfs-site.xml<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
重启 NameNode 后生效。
⚠️ 生产环境不推荐
如果集群启用了 Kerberos:
Permission denied (client ticket missing)
kinit youruser@REALM
如果报错的是 本地路径(如 /tmp、/data):
ls -ld /path
chmod 755 /path
chown youruser:yourgroup /path
whoami
hdfs dfs -whoami
hdfs dfs -ls -d /user
hdfs dfsadmin -safemode get
如果你愿意,可以把 完整报错信息 或 执行命令 贴出来,我可以直接帮你定位是哪一类权限问题。