赞
踩
Fayson的github: https://github.com/fayson/cdhproject
推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f
HDFS支持POSIX访问控制列表(ACLs),以及已支持的传统POSIX权限模型。ACL通过给特定命名的user和group设置不同的权限的方法来控制HDFS文件的访问。ACL的方式增强了传统权限模型,因为它可以让你给任意组合的user和group来定义访问控制,而不是为单个owner/user或单个group。本文Fayson主要介绍如何使用Cloudera Manager开启HDFS的ACL,以及如何在HDFS中使用ACL。
1.通过Cloudera Manager进入HDFS服务的配置页面,并搜索acl。
2.勾选“启用访问控制列表”,并保存。
3.保存配置修改后,回到CM主页按照提示部署客户端配置以及重启相关服务。
重启过程略,重启完成后,HDFS ACL开启完毕。
要设置和获取文件的访问控制列表(ACLs),可以使用文件系统的shell命令,setfacl和getfacl。
hdfs dfs -getfacl [-R] <path>
<!-- COMMAND OPTIONS
<path>: 需要列出ACLs的文件或者目录的路径。
-R: 使用递归的方式列出所有文件和目录的ACLs。
-->
例子:
1.列出目录/fayson/fayson1的ACLs
[root@ip-172-31-6-83 ~]# hadoop fs -getfacl /fayson/fayson1
2.以递归的方式列出/fayson/fayson1目录及其子目录和文件的所有ACLs。
[root@ip-172-31-6-83 ~]# hadoop fs -getfacl -R /fayson/fayson1
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目录有所有权限。
[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条目
[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有只读权限。
[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
此示例演示了用户(“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
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
3.创建一个子目录
hdfs dfs -mkdir /project/dev
4.检查新的子目录的ACL,以验证是否已经继承了父目录ACL的default的值。
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。