ITPub博客

首页 > 大数据 > Hadoop > Hdfs的ACL测试

Hdfs的ACL测试

Hadoop 作者:破棉袄 时间:2014-08-27 12:03:25 0 删除 编辑

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:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <property>  
  2. <name>dfs.permissions.enabledname>  
  3. <value>truevalue>  
  4. property>  
  5. <property>  
  6. <name>dfs.namenode.acls.enabledname>  
  7. <value>truevalue>  
  8. property>  

二、测试ACL:


①

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [hadoop@master ~]$ groups  
  2. hadoop  
创建目录并上传文件:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [hadoop@master ~]$ hadoop fs -mkdir /input/acl  
  2. [hadoop@master hadoop]$ hadoop fs -put conf/yarn-site.xml /input/acl  
  3. [hadoop@master hadoop]$ hadoop fs -ls /input/acl  
  4. Found 1 items  
  5. -rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml  
  6. [hadoop@master ~]$ hadoop fs -getfacl /input/acl  
  7. # file: /input/acl  
  8. # owner: hadoop  
  9. # group: supergroup  
  10. user::rwx  
  11. group::r-x  
  12. other::r-x  

同一组的成员有读权限,没有写权限:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [mapred@master ~]$ groups  
  2. hadoop  
  3. [mapred@master ~]$ hadoop fs -ls /input/acl  
  4. Found 1 items  
  5. -rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml  
  6. [mapred@master hadoop]$ hadoop fs -put conf/capacity-scheduler.xml /input/acl  
  7. put: Permission denied: user=mapred, access=WRITE, inode="/input/acl":hadoop:supergroup:drwxr-xr-x  

设置mapred用户只读:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [hadoop@master ~]$ hdfs dfs -setfacl -m user:mapred:r-- /input/acl  
  2. [hadoop@master ~]$ hdfs dfs -getfacl /input/acl  
  3. # file: /input/acl  
  4. # owner: hadoop  
  5. # group: supergroup  
  6. user::rwx  
  7. user:mapred:r--  
  8. group::r-x  
  9. mask::r-x  
  10. other::r-x  


执行权限被拒绝:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [hadoop@master ~]$ logout  
  2. [root@master ~]# su - mapred  
  3. [mapred@master ~]$ hadoop fs -ls /input/acl  
  4. ls: Permission denied: user=mapred, access=READ_EXECUTE, inode="/input/acl":hadoop:supergroup:drwxr-xr-x:user:mapred:r--,group::r-x  

移除acl:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [hadoop@master ~]$ hdfs dfs -setfacl -x user:mapred /input/acl  
  2. [hadoop@master ~]$ hdfs dfs -getfacl /input/acl  
  3. # file: /input/acl  
  4. # owner: hadoop  
  5. # group: supergroup  
  6. user::rwx  
  7. group::r-x  
  8. mask::r-x  
  9. other::r-x  

重新拥有执行权限,因为mapred是hadoop用户组中的:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [mapred@master ~]$ hadoop fs -ls /input/acl/yarn-site.xml  
  2. Found 1 items  
  3. -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会随之更新:


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [hadoop@master ~]$ hdfs dfs -getfacl /input/acl        【初始权限】  
  2. # file: /input/acl  
  3. # owner: hadoop  
  4. # group: supergroup  
  5. user::rwx  
  6. group::r-x  
  7. mask::r-x  
  8. other::r-x  
  9. [hadoop@master ~]$ hdfs dfs -setfacl -m user:mapred:rwx /input/acl  
  10. [hadoop@master ~]$ hdfs dfs -getfacl /input/acl            【mapred用户拥有rwx权限,但mask为r-x,则mask自动改为rwx】  
  11. # file: /input/acl  
  12. # owner: hadoop  
  13. # group: supergroup  
  14. user::rwx  
  15. user:mapred:rwx  
  16. group::r-x  
  17. mask::rwx  
  18. other::r-x  

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



[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [hadoop@master ~]$ hadoop fs -chmod g-x /input/acl        【取消同一用户组的可执行权限,并更新mask的值】  
  2. [hadoop@master ~]$ hdfs dfs -getfacl /input/acl  
  3. # file: /input/acl  
  4. # owner: hadoop  
  5. # group: supergroup  
  6. user::rwx  
  7. group::r-x  #effective:r--  
  8. group:apache:rwx    #effective:rw-  
  9. mask::rw-  
  10. other::r-x  
  11. [hadoop@master ~]$ logout  
  12. [root@master ~]# su - mapred  
  13. [mapred@master ~]$ hadoop fs -ls /input/acl                【上一步取消同一用户组的可执行权限,但没有生效,因为mapred和hadoop属于同一组】  
  14. Found 1 items  
  15. -rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml  

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29754888/viewspace-1258738/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-07-16

  • 博文量
    180
  • 访问量
    1158165