0786-5.16.2-HDFS Default ACL继承与umask冲突问题分析及解决
?问题描述
通过HDFS命令为目录设置用户和组的default acl权限 , 在该目录下创建的子目录时用户和组的权限与设置的default acl权限不一致 , 提示“#effective:r-x”
本文插图
- 测试环境
2.采用root用户操作
3.CM和CDH版本为5.16.2
4.HDFS启用ACL权限控制
问题复现
1.使用cdhadmin用户创建一个HDFS目录
[root@cdh2 ~]# kinit cdhadmin [root@cdh2 ~]# hadoop fs -mkdir /tmp/testacl [root@cdh2 ~]# hadoop fs -getfacl /tmp/testacl
本文插图
2.为huet用户和test组设置/tmp/testacl目录default acl权限为rwx
[root@cdh2 ~]# hadoop fs -setfacl -m default:user:huet:rwx /tmp/testacl [root@cdh2 ~]# hadoop fs -setfacl -m default:group:test:rwx /tmp/testacl [root@cdh2 ~]# hadoop fs -getfacl /tmp/testacl
本文插图
通过user::rwx , group::r-x , other::r-x可以看到与umask-mode定义的022一致(即777 && 022=755 , 刚好对应user、group、other的权限)
3.在/tmp/testacl目录下创建一个子目录tt , 并查看acl权限
[root@cdh2 ~]# hadoop fs -mkdir /tmp/testacl/tt [root@cdh2 ~]# hadoop fs -getfacl /tmp/testacl/tt
本文插图
通过上图可以看到父目录设置的huet用户和test组的default acl权限为rwx , 但是新建的子目录权限显示为user:huet:rwx #effective:r-x用户和组的写权限丢失 。
问题分析
HDFS服务dfs.umaskmode, fs.permissions.umask-mode默认配置为022
本文插图
rwx权限说明:
r(read)可读权限 , 对应数字为4
w(write)可写权限 , 对应数字为2
x(execute)可执行权限 , 对应数字为1
HDFS文件或目录的权限位是由9个权限位来控制 , 每三位为一组 , 他们分别是文件属主(Owner)的读、写、执行 , 用户组(Group)的读、写、执行以及(Other)其它用户的读、写、执行 。 由于HDFS默认的umask为022 , 因此我们在HDFS上创建目录时目录的权限为755(即777 && 022 为 755) , 即test用户创建一个目录/tmp/test
1)owner对目录拥有rwx权限(7-0)
2)group对该目录只有r-x权限(7-2)
3)other user对该目录只有r-x权限(7-2)
因此这也就说明了为什么在我们为指定目录设置了default acl权限后 , 子目录会出现继承的权限与实际的设置的权限不一致问题 , 接下来主要介绍两种不同的方式修复问题 。
问题解决
该问题在HDFS的JIRA中也有相应的记录具体链接如下:
https://issues.apache.org/jira/browse/HDFS-6962
4.1方法一
通过指定HDFS的umask配置参数方式解决问题 , 该方式可以通过CM界面配置全局的 , 也可以在自己当前命令操作节点修改hdfs-site.xml配置文件来实现 。
1.把默认值022改成000
本文插图
2.保存配置并回到CM主页重启过时服务
- InfoQ去Oracle实录:如何在线更换金融核心场景中的数据库?
- 浪子归家|Oracle数据盘扩展-ASM
- Array|Oracle生态与播萝集团达成深度战略合作,线下实体应用正式来临
- 行业互联网Oracle生态与播萝集团达成深度战略合作,线下实体应用正式来临
- 技术编程ACL 2020 | MobileBERT:一种与任务无关的模型压缩方法
- 爱云资讯 亮相ACL 2020:11篇论文被录取 举办首届同传研讨会,百度AI
- 专访ACL2020最佳论文二作:全新NLP模型评测方法论,思路也适用于CV
- 中年ACL 2020:微软最佳论文,Bengio论文获时间检验奖,大陆论文量第二