hdfs 权限管理和acl机制

简介

Hadoop从2.4.0版本开始支持hdfs的ACL

ACL(Access Control Lists)

基本命令操作:

hdfs dfs -getfacl [-R] <path>  获取目录和文件的ACL 信息

hdfs dfs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]  设置文件和目录的ACL信息

hdfs dfs -ls <args>   当ls的权限位输出以+结束时,那么该文件或目录正在启用一个ACL。

配置信息

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

机制和测试

hdfs 默认是开启文件访问权限的,按照rwx 来进行判断是否有读写执行权限。然后根据用户拥有者, 同组用户, 非同组用户 来进行权限管理

我们可以通过bash -c users  和 bash -c groups 获取用户 和 组

(1) 创建文件

     echo "hell" > 1.txt

     hadoop fs -mkdir /acl; hadoop fs -put 1.txt /acl

(2) 更改用户组 和 权限

     创建文件和目录的时候默认组为supergroup, 文件夹的权限是755 ,文件的权限是644.

     hadoop fs -chmod -R 750  /acl

     hadoop fs -chown -R bfd_hz:bfd_hz /acl

(3) 用户拥有者,同组用户, 非同组用户测试。

      用户和组的创建省略, 测试的过程中三个用户 bfd_hz   baseline   wenting ,   bfd_hz 和 wenting 是同组用户,

      baseline 单独一个组, 文件的由bfd_hz 创建,权限如下:

     

   

(4) ACL让非同组的用户也能访问此文件



注意点: 用户名和组 要和 hadoop 上面的组对应, 比如默认创建的文件组是supergroup,

               如果不设置成bfd_hz, wenting此时操作文件也不能执行,user -c groups 是bfd_hz, 和 supergroup不相等。 此时就导致不属于同组用户

关于一个文件的组关系: 如果根目录,没有继承来源,默认supergroup, 如果是子目录,继承父目录的组

其他话题-->hive 中创建表的时候权限和组问题https://cwiki.apache.org/confluence/display/Hive/Permission+Inheritance+in+Hive

参考资料:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值