Hadoop从2.4.0版本号開始支持hdfs的ACL,在CDH5.0其中也集成了该特性,以下对其进行一些測试:

unnamed user (file owner)
文件的拥有者
unnamed group (file group)
文件的所属组
named user
除了文件的拥有者和拥有组之外,的其他用户
named group
除了文件的拥有者和拥有组之外,的其他用户
mask 
权限掩码。用于过滤named user和named
group的权限

一、启用ACL:

<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>

二、測试ACL:

[hadoop@master ~]$ groups
hadoop
创建文件夹并上传文件:
[hadoop@master ~]$ hadoop fs -mkdir /input/acl
[hadoop@master hadoop]$ hadoop fs -put conf/yarn-site.xml /input/acl
[hadoop@master hadoop]$ hadoop fs -ls /input/acl
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml
[hadoop@master ~]$ hadoop fs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x
other::r-x

同一组的成员有读权限。没有写权限:
[mapred@master ~]$ groups
hadoop
[mapred@master ~]$ hadoop fs -ls /input/acl
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml
[mapred@master hadoop]$ hadoop fs -put conf/capacity-scheduler.xml /input/acl
put: Permission denied: user=mapred, access=WRITE, inode="/input/acl":hadoop:supergroup:drwxr-xr-x

设置mapred用户仅仅读:
[hadoop@master ~]$ hdfs dfs -setfacl -m user:mapred:r-- /input/acl
[hadoop@master ~]$ hdfs dfs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
user:mapred:r--
group::r-x
mask::r-x
other::r-x

运行权限被拒绝:
[hadoop@master ~]$ logout
[root@master ~]# su - mapred
[mapred@master ~]$ hadoop fs -ls /input/acl
ls: Permission denied: user=mapred, access=READ_EXECUTE, inode="/input/acl":hadoop:supergroup:drwxr-xr-x:user:mapred:r--,group::r-x

移除acl:
[hadoop@master ~]$ hdfs dfs -setfacl -x user:mapred /input/acl
[hadoop@master ~]$ hdfs dfs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x
mask::r-x
other::r-x

又一次拥有运行权限。由于mapred是hadoop用户组中的:
[mapred@master ~]$ hadoop fs -ls /input/acl/yarn-site.xml
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml

定义在owner、other里的权限一直都是有效的,其他权限可能用效或者被隐蔽。

named user与named group的值是否生效。还要看其值与mask的“与”值。即mask也要有该权限,才干生效。

mask是用于过滤named user与named group的权限的。能够通过chmod改变。

如:在给同组的其他用户。其他组的用户或组加入acl时,假设给的权限比当前mask大。则mask会随之更新:

[hadoop@master ~]$ hdfs dfs -getfacl /input/acl        【初始权限】
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x
mask::r-x
other::r-x
[hadoop@master ~]$ hdfs dfs -setfacl -m user:mapred:rwx /input/acl
[hadoop@master ~]$ hdfs dfs -getfacl /input/acl 【mapred用户拥有rwx权限,但mask为r-x,则mask自己主动改为rwx】
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
user:mapred:rwx
group::r-x
mask::rwx
other::r-x

但所属组的用户权限不受影响:

[hadoop@master ~]$ hadoop fs -chmod g-x /input/acl        【取消同一用户组的可运行权限。并更新mask的值】
[hadoop@master ~]$ hdfs dfs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x #effective:r--
group:apache:rwx #effective:rw-
mask::rw-
other::r-x
[hadoop@master ~]$ logout
[root@master ~]# su - mapred
[mapred@master ~]$ hadoop fs -ls /input/acl 【上一步取消同一用户组的可运行权限,但没有生效,由于mapred和hadoop属于同一组】
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml

Hdfs的ACL測试的更多相关文章

  1. hadoop环境搭建与測试

    搭建參看: http://blog.csdn.net/w13770269691/article/details/16883663/ 查看集群状态: [root@master bin]# hdfs df ...

  2. spark0.9.1集群模式执行graphx測试程序(LiveJournalPageRank,新增Connected Components)

    spark最新版公布了.之前的版本号就已经集成了graphx,这个版本号还改了一些bug. 我做了简单測试,只是网上关于集群模式执行spark资料太少了,仅仅有关于EC2(见參考资料1)的.可是还非常 ...

  3. mahout測试朴素贝叶斯分类样例

    对于这个測试建议大家先理解原理,这里我画了例如以下的示意图 接下来就依照例如以下的细节来输入指令測试: 首先前提是Hadoop安装并启动,mahout已经安装了. <strong>< ...

  4. hadoop2.7全然分布式集群搭建以及任务測试

    要想深入的学习hadoop数据分析技术,首要的任务是必需要将hadoop集群环境搭建起来,本文主要讲述怎样搭建一套hadoop全然分布式集群环境. 环境配置:2台64位的redhat6.5 +  1台 ...

  5. Android自己主动化測试解决方式

    如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...

  6. java 搭建webservice服务+testclient測试

    整理别人的日志: 一.什么是webservice 一种构建应用程序的普遍模型,能够在不论什么支持网络通信的操作系统中执行.一种新的web应用程序分支,能够公布.定位通过web调用.它是一个应用组件,为 ...

  7. 玩转Bash脚本:test測试语句

    总第1篇test就是測试的意思,经常使用在流程控制语句中作为条件.以下做一下介绍. 关于真值 与其它语言不同,Bash(包含其它Shell)中,是用0表示真,非0表示假的.之所以用0表示成功,而不是1 ...

  8. MYSQL BLOB 字段大小以及个数的限制測试。

    測试结论 mysql版本号 5.1     表类型: innodb, row_format=compact (这是默认的行格式)     插入超过10个blob, blob的数据量非常小(<76 ...

  9. python第三方库系列之十九--python測试使用的mock库

    一.为什么须要mock         在写unittest的时候,假设系统中有非常多外部依赖,我们不须要也不希望把全部的部件都执行一遍.比方,要验证分享到微博的功能,假设每次測试的时候都要真实地把接 ...

随机推荐

  1. mysql系列安装

    Mysql的5种安装方法:1.yum/rpm安装(适合要求不高,并发不大,公司内部,企业内部一些应用场景)2.编译安装(在线高并发业务)3.二进制安装(编译安装后,使用自带工具打包,然后拷贝到相同平台 ...

  2. tomcat域名配置

    修改tomcat目录下的web配置文件 vim conf/server.xml 在host标签内添加 <Context path="bbs" docBase="/a ...

  3. python计算圆面积

    #coding=gbk #coding=utf-8 #-*- coding: UTF-8 -*- #调用math包处理相关的运算 import math #圆半径 r = 2 #计算圆面积π*r*r与 ...

  4. python基础知识09-继承,多继承和魔术方法

    1.继承 class Father: def init(self,age,sex): self.age = age self.sex = sex class Son(Father): 类名后面写括号, ...

  5. Spring Boot 返回Html界面

    @Controller public class HelloController { @RequestMapping("/") public String index(){ ret ...

  6. python-001 第一个Python3.x程序 hello world

    我们可以使用以下命令来查看我们使用的Python版本: (d:\ProgramData\Anaconda3) C:\Users\Administrator.2016-20160920ET>pyt ...

  7. zoj 2109 FatMouse' Trade

    FatMouse' Trade Time Limit: 2 Seconds      Memory Limit: 65536 KB FatMouse prepared M pounds of cat ...

  8. 【java 理论篇 2】J2EE的13种规范

    导读:看完了J2EE的视频,没有什么技术实践,现在就从理论上说明一下J2EE的13种规范,以及现在的自己对它的一个理解.可能会有偏差,但是,算是做为目前的一个记录. 一.13种规范 1.1.JDBC( ...

  9. 关于NSArray的去重

    提到去重,第一反应就是for或while循环来遍历处理. 然后有了几种思路: 1) 两个循环嵌套 对比 然后去重: 但是这种方法会数据丢失, arr为要去重的数组 ; i<arr.count; ...

  10. 【POJ3294】Life Forms(后缀数组,二分)

    题意: n<=100 len[i]<=1000 思路:这是一道论文题 ..]of longint; ch:..]of ansistring; n,n1,l,r,mid,last,i,j,m ...