暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

HDFS文件系统权限

michaelliu 2024-09-10
168

HDFS权限

HDFS分布式文件系统,也和linux和unix系统类似,有用户概念和权限概念,但是其没有相关命令和接口去创建用户,而是默认情况下使用操作系统提供的用户。可以通过扩展kerberos,LDAP,集成第三方用户认证系统

在HDFS中也有超级用户的概念,在linux中超级用户为root,在hdfs中为namenode启动用户。当前状况下hadoop的安装部署程序超级用户为root,数据存放目录的权限拥有者也为root。


有关大数据学习从0到1的系列,可以参考如下文章:


添加用户

赋予目录权限

接下来我们给god用户赋予hadoop的目录权限。

chown -R god /opt/bigdata/hadoop-2.6.5/

同时修改数据存储目录拥有者

chown -R god /var/bigdata/hadoop/

用户免密

接下来切换用户,给新用户做ssh免密操作。同时修改免密文件权限,否则发现免密失效。

su god

ssh-keygen -t rsa 

chmod 600 authorized_keys 

免密配置完成,god用户可以毫无阻碍登录二,三,四节点了。

然后同时配置node2节点进行免密登录1的操作。

修改配置文件

在hdfs-site.xml配置文件中,我们需要更改一下免密登录的配置。改为新用户密钥存放地址。

然后分发到其他三个节点。

启动Hadoop集群

接下来,我们使用god用户启动hadoop集群

查看进程详情,会发现我们使用god用户启动了namenode进程。

创建目录

接下来我们用god用户创建目录,会发现在HDFS文件系统中,该目录的拥有者为god。

hdfs dfs -mkdir -p /user/god

切换用户

此时我们切换用户到root,再次启动hdfs,然后使用root用户创建hdfs目录。发现目录拥有者为root。

权限检测

此时我们使用root用户去god用户下创建目录,我们会发现可以创建成功,因为此时的启动用户为root所以,root为超级用户。

如果此时切换到god用户,使用god用户在root用户下创建目录,会发现,访问被拒绝。

但是god用户仍然可以使用自己的目录。

此时我们停止集群,改用god用户启动namenode,再使用root用户去god目录下创建目录,即使是root一样会被拒绝,因为此时启动集群的是god用户,god才是集群的超级管理员

用户组

hdfs不能够创建用户,但是有用户组和权限的api操作。我们使用god用户创建一个目录,并把该目录归属给某个特定的组。如下

hdfs dfs -mkdir -p /temp

hdfs dfs -chown god:devGroup /temp

权限标识符

此时组的权限是没有写的。

rwx分别代表 r (read) 读取 w (write)写 x (exe)执行。分别用三个二进制位表示状态位。然后将全线分成三组,前三个位代表文件所有者权限,中间三个位代表持有组权限,后边三个位代表其他人的权限。因此我们平时使用的命令chmod后边会跟 数字来标识我们要改写的文件访问权限

二进制      十进制
001           1
010           2
100           4

如果是读写权限,不是执行,那就是如下
二进制               十进制
110 000 000           600
rw- --- ---

如果rwx权限都打开,那就是
二进制               十进制
111 000 000            700
rwx --- ---

如果我们要把用户组的权限也打开,那就是
二进制               十进制
111 111 000            770
rwx rwx ---

如果我们要把其他人权限也打开,让所有人都拥有文件的各种操作权限,那就是
二进制               十进制
111 111 111            770
rwx rwx rwx            777

我们使用如下命令,就可以让temp目录,能够让devGroup用户组进行读写执行的操作。

hdfs dfs -chmod 770 /temp

添加用户到组

接下来我们添加一个good用户到组devGroup。此时我们需要回到linux系统的root用户下才能够拥有添加本地操作系统用户的权限。

useradd good

groupadd devGroup

usermod -a -G devGroup good

此时我们切换good用户,查看用户组信息。发现已经同步到hdfs系统中了。

hdfs groups

此时我们使用good用户在此目录下创建一个文件。系统显示创建成功,但是由于其他用户没有读取权限,我们无法打开这个目录。此时根据上述权限知识的学习,我们只需要修改temp目录的后三位权限,应该就可以访问了。

修改其他人权限

hdfs dfs -chmod 775 /temp

然后发现web页面可以访问了。大功告成!!!!!!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论