HDFS权限管理

Posted JVTS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS权限管理相关的知识,希望对你有一定的参考价值。

一.权限概述

    在Hadoop分布式文件系统中,每个文件和目录有一个所有者(owner)和一个组(group),文件或目录对其所有者、同组的其他用户以及所有其他用户分别有着不同的权限。当新建一个文件或目录,它的所有者即客户进程的用户,它的所属组是父目录的组。

    每个访问HDFS的用户进程的标识分为两个部分,分别是用户名和组名列表。每次用户进程访问一个文件或目录foo,HDFS都要对其进行权限检查,

  • 如果用户即foo的所有者,则检查所有者的访问权限;

  • 如果foo关联的组在组名列表中出现,则检查组用户的访问权限;

  • 否则检查foo其他用户的访问权限。

如果权限检查失败,则客户的操作会失败。

    HDFS没有相关命令和接口去创建用户,默认情况使用的是操作系统提供的用户,linux系统中超级用户是root,HDFS系统中超级用户是NN进程的启动用户,HDFS的权限是自己控制的,来自于HDFS的超级用户.

二.切换HDFS启动用户

1.停止HDFS服务

# bd101 如果服务已启动,先停止服务 ZK集群不需要停止stop-dfs.sh

2.添加用户bduser,密码123456

# bd101~bd104useradd bduserpasswd bduser

3.将资源与用户绑定

# bd101~bd104# 安装部署程序路径chown -R bduser /opt/bigdata/hadoop-2.10.1/# 数据存储路径chown -R bduser /var/bigdata/hadoop/

4.添加bduser用户免密

# bd101~bd104# 切换用户到 bdusersu bduser# 创建 .ssh目录cd ssh localhost

# bd101~bd102# 生成密钥cd /home/bduser/.sshssh-keygen -t dsa -P '' -f  ./id_dsa# 分发公钥ssh-copy-id -i id_dsa bd101ssh-copy-id -i id_dsa bd102ssh-copy-id -i id_dsa bd103ssh-copy-id -i id_dsa bd104# 在bd104查看公钥cat /home/bduser/.ssh/authorized_keys

HDFS权限管理

5.修改免密配置

# bd101cd /opt/bigdata/hadoop-2.10.1/etc/hadoop/vim hdfs-site.xml<property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/bduser/.ssh/id_dsa</value></property># 分发配置scp hdfs-site.xml bd102:`pwd`scp hdfs-site.xml bd103:`pwd`scp hdfs-site.xml bd104:`pwd`

6.使用bduser用户启动HDFS

# bd101start-dfs.sh

三.权限验证

1.用户权限

# 第一步:在bd101 用户roothdfs dfs -mkdir  -p  /user/root# 第二步:在bd101 用户bduserhdfs dfs -mkdir -p /user/bduserhdfs dfs -mkdir /temp# 第三步:在bd101 用户roothdfs dfs -mkdir /temp/abc

最外层目录

HDFS权限管理

user目录下

HDFS权限管理

root用户在temp目录下创建文件夹

HDFS权限管理

# bduser是超级用户,由bduser启动的NN,不受权限限制# root用户是linux系统的超级用户,在此处是普通用户,受权限限制1.user目录的所有者是root,使用bduser用户可以在user目录下创建文件夹2.temp目录的所有者是bduser,使用root用户在temp目录下创建文件夹失败

2.用户组权限

# 修改 temp 的用户组为 group01 hdfs dfs -chown bduser:group01  /temp 或者hdfs dfs -chgrp group01 /temp# 修改权限 拥有者跟组用户拥有全部权限hdfs dfs -chmod 770 /temp

HDFS权限管理

创建新用户并绑定用户组

# bd101 root用户useradd goodpasswd good# 查看用户id good# 测试用户权限bduser:hdfs dfs -mkdir /temp/bduser 创建成功good:hdfs dfs -mkdir /temp/good 创建失败

HDFS权限管理

# bd101、bd104 root用户# 创建一个组groupadd group01# 给用户good追加一个组usermod -a -G group01 good# 查看good所在组[root@bd101 ~]# id gooduid=1002(good) gid=1002(good) groups=1002(good),1003(group01)# bd101 bduser用户# hdfs已经启动,用户和新加组在通过命令更新到hdfshdfs dfsadmin -refreshUserToGroupsMappings# bd104 good用户hdfs dfs -mkdir /temp/good 创建成功

3.http访问权限

地址:http://bd101:50070/explorer.html#/由于temp目录权限被修改,访问temp目录被拒绝,可以通过修改temp权限解决,也可以通过以下方法解决

用户dr.who其实是hadoop中http访问的静态用户名,并没有啥特殊含义

修改core-site.xml即可解决

<property>       <name>hadoop.http.staticuser.user</name>       <value>bduser</value></property>


以上是关于HDFS权限管理的主要内容,如果未能解决你的问题,请参考以下文章

HDFS ACL权限管理 初解

gitlab 权限说明

HDFS权限

ranger-hdfs 插件组权限测试

Oracle-常用数据库对象笔记(片段)

大数据平台之权限管理组件 - Aapche Ranger