hdfs 权限管理和acl机制

简介

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

ACL(Access Control Lists)

基本命令操作:

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

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

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

配置信息

hdfs 权限管理和acl机制_第1张图片

机制和测试

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

你可能感兴趣的:(hdfs 权限管理和acl机制)