HDFS如何实现权限管理

发布时间:2021-12-09 09:50:01 作者:小新
来源:亿速云 阅读:307

这篇文章给大家分享的是有关HDFS如何实现权限管理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1 HDFS的权限管理介绍

HDFS的权限管理分成2大部分:

2种方式具体见下图

HDFS如何实现权限管理

基本的权限方式如同linux中目录或文件的权限管理方式,它是一种粗粒度的,不能控制到某一个用户如t1。ACL的权限管理方式就可以,如下

user:t1:r-x

表示用户t1具有读和可执行的权限(在HDFS中没有可执行的概念,暂且这么叫吧,这里的x权限就是进入目录和列出目录下的文件或内容的权限)

2 HDFS基本权限管理

创建一个文件或目录,初始的基本权限是多少呢?经历如下2过程:

2.1 默认的文件或目录权限

创建文件或目录的时候可以指定权限,没有指定的话,就使用默认的权限,如下

目录:777

文件:666

2.2 应用客户端配置的uMask

注意:这个配置是客户端可以配置的,即客户端自己主宰创建文件或目录的权限。

umask的作用:

就是对HDFS基本权限的限制,如022分别表示:0表示对owner没有限制,2表示对group不允许有写权限,2表示对other不允许有写权限。

应用客户端配置的umask其实就是拿用户设置的权限减去上述umask权限,就得到文件或目录的最终权限了。如创建目录,默认777权限,然后减去umask权限022就等于755,即默认情况下owner拥有读写和可执行权限,owner所在group拥有读和可执行权限,other拥有读和可执行的权限

下面重点来说下umask的获取过程:

至此,在没有ACL设置的情况下创建文件或目录的权限即上述过程了。

3 HDFS ACL权限管理

3.1 ACL权限管理模型

AclEntry对象,如

user:t1:r-x、group:g1:rwx、other::--x、mask::r-x

default:user:t1:r-x、default:group:g1:r-x、default:other::r-x、default:mask::r-x

包含4部分内容:

public class AclEntry {
  private final AclEntryType type;
  private final String name;
  private final FsAction permission;
  private final AclEntryScope scope;
}

基本权限也可以转化成ACL权限,例子如基本权限如drwxr-xr-x,对应的ACL权限如

user::rwx 对应user权限

(group::r-x)对应group权限

mask::r-x 对应group权限

other::r-x 对应other权限

上述修改基本权限或者修改对应的ACL权限都会相互影响。有一个例外:上述的group::r-x在创建的时候依据基本权限中的group权限,但是直接修改ACL中的group::r-x权限,并不直接影响基本权限中的group权限,这也是比较坑的地方,即group::r-x权限被造出来之后就像被遗弃了。

3.2 ACCESS scope中的mask

3.2.1 mask值的主动修改

ACCESS scope中的mask对应的权限就是HDFS基本权限中的group权限。如下所示:

HDFS如何实现权限管理

所以如下2种方式都可以更改基本权限中的group权限:

3.2.2 mask值的被动重新计算

当acl新添加或者删除的时候,都会触发mask的重新计算,计算方式就是:

所有name不为null的user类型的acl和所有的group类型的acl的权限取并集

例子如下:

HDFS如何实现权限管理

这时候基本权限中的group权限也会随着mask的改变而改变。

目前到这里总结下mask:

主要设计成对其他user和group类型的权限过滤,你主动去设置mask,此时会起到一定的过滤作用,

但是一旦重新添加或者删除acl的时候,mask的值就被重新计算了,也就是说你之前设置的没啥用了,这个就意味着mask没啥鸟用,当你无意间执行chmod修改权限,就可能会造成别人如t1用户突然少了某些权限,一旦新增一个t2用户的acl权限,t1用户的权限又突然回来了,这个也算是个坑吧,不知道为啥这样设计,欢迎来讨论。

3.3 DEFAULT scope中的mask

DEFAULT scope中的mask和ACCESS scope中的mask基本类似,都是用于过滤权限。

3.3.1 mask值主动修改

上述ACCESS scope中mask值有2种方式,而DEFAULT scope中只有一种方式,就是

直接修改mask acl中的权限值

如hdfs dfs -setfacl -m default:mask::--x /user/lg/acl

HDFS如何实现权限管理

修改之后上述default:user:t1:r-x 的实际权限就只是 --x了,即与default mask执行and操作的结果

3.3.2 mask值被重新计算

当acl新添加或者删除的时候,都会触发mask的重新计算,计算方式就是:

所有name不为null的user类型的acl和所有的group类型的acl的权限取并集。这里不再说明了,见ACCESS scope中的mask重新计算。

3.4 过程分析

前面介绍的是一些基本概念和理论,现在来看看下面几个过程具体会发生什么操作

3.4.1 权限验证过程

例子: 验证用户u1是否对路径/user/lg/acl有读权限

3.4.2 创建文件或目录

3.4.3 修改ACL

新增或删除或修改ACL操作的时候都会重新计算mask的值

ACCESS scope中的ACL变动会重新计算ACCESS scope中的mask

DEFAULT scope中的ACL变动会重新计算DEFAULT scope中的mask

mask的计算方式上面就说明了。

感谢各位的阅读!关于“HDFS如何实现权限管理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. HDFS命令及管理HDFS
  2. 如何实现vue权限管理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hdfs

上一篇:如何进行Oracel存储过程写报表

下一篇:怎么使用N1QLMap从Couchbase数据库中提取数据

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》