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~bd104
useradd bduser
passwd bduser
3.将资源与用户绑定
# bd101~bd104
# 安装部署程序路径
chown -R bduser /opt/bigdata/hadoop-2.10.1/
# 数据存储路径
chown -R bduser /var/bigdata/hadoop/
4.添加bduser用户免密
# bd101~bd104
# 切换用户到 bduser
su bduser
# 创建 .ssh目录
cd
ssh localhost
# bd101~bd102
# 生成密钥
cd /home/bduser/.ssh
ssh-keygen -t dsa -P '' -f ./id_dsa
# 分发公钥
ssh-copy-id -i id_dsa bd101
ssh-copy-id -i id_dsa bd102
ssh-copy-id -i id_dsa bd103
ssh-copy-id -i id_dsa bd104
# 在bd104查看公钥
cat /home/bduser/.ssh/authorized_keys
5.修改免密配置
# bd101
cd /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
# bd101
start-dfs.sh
三.权限验证
1.用户权限
# 第一步:在bd101 用户root
hdfs dfs -mkdir -p /user/root
# 第二步:在bd101 用户bduser
hdfs dfs -mkdir -p /user/bduser
hdfs dfs -mkdir /temp
# 第三步:在bd101 用户root
hdfs dfs -mkdir /temp/abc
最外层目录
user目录下
root用户在temp目录下创建文件夹
# 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
创建新用户并绑定用户组
# bd101 root用户
useradd good
passwd good
# 查看用户
id good
# 测试用户权限
bduser:hdfs dfs -mkdir /temp/bduser 创建成功
good:hdfs dfs -mkdir /temp/good 创建失败
# bd101、bd104 root用户
# 创建一个组
groupadd group01
# 给用户good追加一个组
usermod -a -G group01 good
# 查看good所在组
[root@bd101 ~]# id good
uid=1002(good) gid=1002(good) groups=1002(good),1003(group01)
# bd101 bduser用户
# hdfs已经启动,用户和新加组在通过命令更新到hdfs
hdfs 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权限管理的主要内容,如果未能解决你的问题,请参考以下文章