1、背景
在我们开发的过程中有这么一种场景,/projectA目录是hadoopdeploy用户创建的,他对这个目录有wrx权限,同时这个目录属于supergroup,在这个组中的用户也具有这个目录的wrx权限,对于其他人,不可访问这个目录。现在有这么一个特殊的用户root,我想root用户可以访问这个目录,在不修改root用户组和其他人的权限的情况下,还有什么方式可以实现这个功能呢?
背景
由上图可以,root用户想访问/projectA目录,在hdfs中可以通过acl来实现。
2、环境准备
环境准备
从上述代码中可知,我们创建了一个/projecetA的目录,且给这个目录的权限为770,那么其他人对这个目录应该是没有访问权限的。 通过上述图片可知,我们用root用户上传文件,发现没有权限。
3、开启acl权限
3.1 修改hdfs-site.xml
开启acl
注意:在低版本的hadoop上默认是禁用的,高版本默认是开启的。
3.2 重启hdfs集群
3.3 使用acl给root用户授权
使用acl给root用户授权
3.4 使用 root 用户测试文件上传
可以看到文件上传成功了。
4、acl的一些简单命令
acl语法
hdfs dfs -setfacl -m user:root:rwx /projectA对root用户设置hdfs dfs -setfacl -m group:root:rwx /projectA对root组设置
4.1 设置acl
将/projectA这个目录授予root用户rwx权限。
4.2 查看acl
drwxrwx---+ 这个+表示有acl权限
4.3 移除某个用户的acl
移除某个用户的acl
4.4 删除该目录所有的acl权限
5、参考链接
1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#setfacl