温馨提示×

linux hdfs配置怎样授权

小樊
49
2026-09-25 19:18:04
栏目: 智能运维

在 Linux 上配置 HDFS 授权(Authorization),通常包含 权限模型配置 和 鉴权方式(如 Kerberos / ACL / Ranger)。下面按常见场景从易到难说明。


一、HDFS 基础权限授权(最常用)

1. 开启 HDFS 文件权限

在 hdfs-site.xml 中确认:

<property>
  <name>dfs.permissions.enabled</name>
  <value>true</value>
</property>

默认就是 true,如果为 false,HDFS 不做任何权限控制。


2. Linux 用户与 HDFS 用户对应

HDFS 权限模型类似 Linux:

  • 用户(owner)
  • 用户组(group)
  • 其他(others)

确保 Linux 用户存在:

useradd hadoopuser
groupadd hadoopgroup
usermod -aG hadoopgroup hadoopuser

HDFS 会直接使用 Linux 用户名和组。


3. 修改 HDFS 目录权限

hdfs dfs -mkdir /data
hdfs dfs -chown hadoopuser:hadoopgroup /data
hdfs dfs -chmod 750 /data

权限说明:

  • 7 = rwx(owner)
  • 5 = r-x(group)
  • 0 = —(others)

4. 切换用户测试

su hadoopuser
hdfs dfs -put file.txt /data

二、HDFS ACL 授权(更细粒度)

1. 开启 ACL

hdfs-site.xml:

<property>
  <name>dfs.namenode.acls.enabled</name>
  <value>true</value>
</property>

重启 NameNode。


2. 设置 ACL

hdfs dfs -setfacl -m user:alice:rwx /data
hdfs dfs -setfacl -m group:team:r-x /data

查看:

hdfs dfs -getfacl /data

三、HDFS 超级用户配置

默认超级用户是启动 NameNode 的用户(如 hdfs)。

可配置额外超级用户:

<property>
  <name>dfs.permissions.superusergroup</name>
  <value>supergroup</value>
</property>

将用户加入该组即可拥有管理员权限。


四、Kerberos 安全授权(生产环境)

1. 开启安全模式

core-site.xml:

<property>
  <name>hadoop.security.authentication</name>
  <value>kerberos</value>
</property>

hdfs-site.xml:

<property>
  <name>dfs.permissions.enabled</name>
  <value>true</value>
</property>

2. 配置 Kerberos 主体

<property>
  <name>dfs.namenode.kerberos.principal</name>
  <value>nn/_HOST@REALM.COM</value>
</property>

用户访问:

kinit user@REALM.COM
hdfs dfs -ls /

五、使用 Apache Ranger(企业级)

Ranger 可集中管理 HDFS 授权:

  • 用户 / 组 / IP 控制
  • 细粒度到目录、操作
  • 审计日志

一般流程:

  1. 安装 Ranger Admin
  2. 安装 Ranger HDFS Plugin
  3. 在 Web 界面配置策略

六、常见问题排查

权限拒绝

Permission denied: user=xxx, access=WRITE, inode="/data"

检查:

hdfs dfs -ls / 
hdfs dfs -getfacl /data
id xxx

用户不一致

HDFS 使用的是 客户端 Linux 用户,不是远程服务器用户。


七、总结建议

场景 推荐方式
测试环境 基础权限
多团队 ACL
生产环境 Kerberos + Ranger
简单隔离 Linux 用户 + chmod

如果你能说明:

  • 是否是 CDH / HDP / 原生 Hadoop
  • 是否启用 Kerberos
  • 使用场景(开发 / 生产)

我可以给你一份可直接用的配置示例。

0 踩