前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0630-6.2-什么是HDFS ACL

0630-6.2-什么是HDFS ACL

作者头像
Fayson
发布2019-05-17 15:55:25
1.3K0
发布2019-05-17 15:55:25
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

文档编写目的

HDFS支持POSIX访问控制列表(ACLs),以及已支持的传统POSIX权限模型。ACL通过给特定命名的user和group设置不同的权限的方法来控制HDFS文件的访问。ACL的方式增强了传统权限模型,因为它可以让你给任意组合的user和group来定义访问控制,而不是为单个owner/user或单个group。本文Fayson主要介绍如何使用Cloudera Manager开启HDFS的ACL,以及如何在HDFS中使用ACL。

  • 测试环境:

1.CDH6.2

2.集群已开启Kerberos

3.RedHat7.4

2

如何开启HDFS ACL

1.通过Cloudera Manager进入HDFS服务的配置页面,并搜索acl。

2.勾选“启用访问控制列表”,并保存。

3.保存配置修改后,回到CM主页按照提示部署客户端配置以及重启相关服务。

重启过程略,重启完成后,HDFS ACL开启完毕。

3

命令

要设置和获取文件的访问控制列表(ACLs),可以使用文件系统的shell命令,setfacl和getfacl。

3.1

getfacl

代码语言:javascript
复制
hdfs dfs -getfacl [-R] <path>

<!-- COMMAND OPTIONS
<path>: 需要列出ACLs的文件或者目录的路径。
-R: 使用递归的方式列出所有文件和目录的ACLs。
-->

例子:

1.列出目录/fayson/fayson1的ACLs

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# hadoop fs -getfacl /fayson/fayson1

2.以递归的方式列出/fayson/fayson1目录及其子目录和文件的所有ACLs。

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# hadoop fs -getfacl -R /fayson/fayson1

3.2

setfacl

代码语言:javascript
复制
hdfs dfs -setfacl [-R] [-b|-k -m|-x <acl_spec> <path>]|[--set <acl_spec> <path>]

<!-- COMMAND OPTIONS
<path>: 需要设置ACLs的文件或者目录的路径。
-R:以递归方式将操作应用于所有文件和目录。
-b: 撤回基本ACL条目以外的所有条目。保留用户,组和其他条目以与权限位兼容。
-k: 移除default ACL。
-m: 修改ACL。新条目将添加到ACL,并保留现有条目。不会影响已有的权限。
-x: 仅移除指定的ACL。
<acl_spec>: 逗号分隔的ACL权限。
--set: 完全替换ACL,丢弃所有现有条目。 acl_spec必须包含用户,组和其他条目,以便与权限位兼容。
-->

例子:

1.赋予用户ben对/fayson/fayson1目录有read&write权限,赋予group fayson1对/fayson/fayson1目录有所有权限。

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# hdfs dfs -setfacl -m user:ben:rw- /fayson/fayson1                  
[root@ip-172-31-6-83 ~]# hdfs dfs -setfacl -m group:fayson1:rwx /fayson/fayson1             
[root@ip-172-31-6-83 ~]# hdfs dfs -getfacl /fayson/fayson1

2.从目录/fayson/fayson1中移除用户ben的ACL条目

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# hdfs dfs -setfacl -x user:ben /fayson/fayson1
[root@ip-172-31-6-83 ~]# hdfs dfs -getfacl /fayson/fayson1

3.赋予hadoop对/fayson/fayson1目录有读写权限,group或者others有只读权限。

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# hdfs dfs -setfacl --set user::rwx,group::r--,other::r--,user:fayson1:rw- /fayson/fayson1
[root@ip-172-31-6-83 ~]# hdfs dfs -getfacl /fayson/fayson1

4

HDFS ACL示例

此示例演示了用户(“fayson”)如何与另一个团队的同事(“hadoopdev”)共享文件夹访问权限,以便hadoopdev团队可以协作处理该文件夹的内容; 这是通过更新该目录的ACL来完成的:

1.使团队“hadoopdev”可以读取目录中创建的文件和子目录:

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# hadoop fs -mkdir /project
[root@ip-172-31-6-83 ~]# hdfs dfs -setfacl -m group:hadoopdev:r-x /project
[root@ip-172-31-6-83 ~]# hdfs dfs -getfacl /project

2.为父目录设置default的ACL

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# hdfs dfs -setfacl -m default:group:hadoopdev:r-x /project
[root@ip-172-31-6-83 ~]# hdfs dfs -getfacl /project

3.创建一个子目录

代码语言:javascript
复制
hdfs dfs -mkdir /project/dev

4.检查新的子目录的ACL,以验证是否已经继承了父目录ACL的default的值。

代码语言:javascript
复制
hdfs dfs -getfacl -R /project

注意:

1.在创建子目录时,default的ACL会从父目录复制到子目录。对父目录默认ACL的后续更改不会影响现有子目录的ACL。

2.对于目录的创建者也叫owner可以直接设置该目录的ACL,否则你需要切换到hdfs用户后才能灵活的给各个目录设置ACL。

自此HDFS ACL的安装使用介绍完毕。

参考:

https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_sg_hdfs_ext_acls.html

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档