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

最新文章

  1. iOS学习之代码块(Block)
  2. 高德地图API编译警告
  3. 免费打造自己的个人网站,免费域名、免费空间、FTP、数据库什么的,一个不能少,没钱,也可以这么任性
  4. AngularJS快速入门指南16:Bootstrap
  5. 交换两个数-c++实现
  6. Java 集合介绍
  7. 将DataTable导出为Excel C#
  8. SpringMVC+Apache Shiro+JPA(hibernate)
  9. 论山寨手机与Android联姻 【1】MTK亮相的历史背景
  10. iOS App 性能优化总结
  11. JS算法之快排&amp;冒泡
  12. eclipse 启动tomcat后 页面无法访问tomcat首页
  13. 九章lintcode作业题
  14. 友元(友元函数、友元类和友元成员函数) C++
  15. vscode 开发.net core 从安装到部署 教程详解
  16. Mac下MySQL无my-default.cnf
  17. (python)编程小练习
  18. mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)
  19. 用memset设置无穷大无穷小
  20. tomcat的systemctl启动脚本

热门文章

  1. iOS开发基础知识
  2. Openjudge-2815-城堡问题
  3. ES5的数组方法
  4. windows下安装rabbitmq以及php扩展amqp
  5. 基于selenium爬取拉勾网职位信息
  6. 阿里云服务器ecs配置之安装mysql
  7. 【HDU 6000】Wash(贪心)
  8. Poj 2337 Catenyms(有向图DFS求欧拉通路)
  9. pycharm配置git--图文教程
  10. Kubernetes集群中修复状态为NotReady的节点