当前位置:   article > 正文

0630-6.2-什么是HDFS ACL_hadoop hdfs acl更新

hadoop hdfs acl更新

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

推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f

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

hdfs dfs -getfacl [-R] <path>

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

例子:

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

[root@ip-172-31-6-83 ~]# hadoop fs -getfacl /fayson/fayson1
  • 1

在这里插入图片描述

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

[root@ip-172-31-6-83 ~]# hadoop fs -getfacl -R /fayson/fayson1
  • 1

在这里插入图片描述

3.2 setfacl

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

例子:

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

[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
  • 1
  • 2
  • 3

在这里插入图片描述
2.从目录/fayson/fayson1中移除用户ben的ACL条目

[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
  • 1
  • 2

在这里插入图片描述
3.赋予hadoop对/fayson/fayson1目录有读写权限,group或者others有只读权限。

[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
  • 1
  • 2

在这里插入图片描述

4 HDFS ACL示例

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

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

[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
  • 1
  • 2
  • 3

在这里插入图片描述
2.为父目录设置default的ACL

[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
  • 1
  • 2

在这里插入图片描述
3.创建一个子目录

hdfs dfs -mkdir /project/dev
  • 1

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

hdfs dfs -getfacl -R /project
  • 1

在这里插入图片描述

注意:

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号