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.enabledname>
-
<value>truevalue>
-
property>
-
<property>
-
<name>dfs.namenode.acls.enabledname>
-
<value>truevalue>
-
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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29754888/viewspace-1258738/
,如需转载,请注明出处,否则将追究法律责任。