在 CentOS 下配置 HDFS 权限,通常分为 Linux 系统层权限 和 HDFS 自身权限模型 两部分。下面按常见场景给你一个清晰、可操作的说明。
HDFS 权限模型和 Linux 类似:
r(读)、w(写)、x(目录访问)示例:
drwxr-xr-x - hadoop supergroup 0 2024-01-01 /user/hadoop
groupadd hadoop
useradd -g hadoop hdfs
useradd -g hadoop yarn
useradd -g hadoop mapred
HDFS 服务一般使用
hdfs用户运行
HDFS 数据目录(如 /data/hadoop):
mkdir -p /data/hadoop/dfs/name
mkdir -p /data/hadoop/dfs/data
chown -R hdfs:hadoop /data/hadoop
chmod -R 750 /data/hadoop
hdfs-site.xml
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
关闭(测试环境):
<value>false</value>
生产环境 必须开启
hdfs-site.xml
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
属于 hadoop 组的用户 = HDFS 超级用户
hdfs dfs -ls /user
hdfs dfs -chown hdfs:hadoop /user/hdfs
hdfs dfs -chmod 755 /user/hdfs
hdfs dfs -chgrp hadoop /user/hdfs
HDFS 判断用户身份 = Linux 当前用户
例如:
su - hdfs
hdfs dfs -put a.txt /user/hdfs/
如果是普通用户:
su - testuser
hdfs dfs -ls /user/hdfs
必须满足:
hdfs dfs -mkdir /user/testuser
hdfs dfs -chown testuser:hadoop /user/testuser
hdfs dfs -chmod 700 /user/testuser
hdfs dfs -mkdir /share
hdfs dfs -chown hdfs:datateam /share
hdfs dfs -chmod 770 /share
只有 datateam 组的人能访问
如果是 安全集群:
| 问题 | 原因 |
|---|---|
| Permission denied | 用户或组不对 |
| 无法写入 | 目录无 w 权限 |
| 无法进入目录 | 无 x 权限 |
| root 被拒绝 | HDFS 不认 root |
如果你能告诉我:
我可以给你更精确的配置方案。