hdfs中acl权限管理的简单实用

1、背景

在我们开发的过程中有这么一种场景, /projectA 目录是 hadoopdeploy用户创建的,他对这个目录有wrx权限,同时这个目录属于supergroup,在这个组中的用户也具有这个目录的wrx权限,对于其他人,不可访问这个目录。现在有这么一个特殊的用户root我想root用户可以访问这个目录,在不修改root用户组和其他人的权限的情况下,还有什么方式可以实现这个功能呢?hdfs中acl权限管理的简单实用由上图可以,root用户想访问/projectA目录,在hdfs中可以通过acl来实现。

2、环境准备

# 创建目录
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -mkdir /projectA
# 列出根目录下的文件夹
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - hadoopdeploy supergroup          0 2023-05-24 20:35 /projectA
# 将 /projectA 目录的权限修改成 770, 即其他人没有这个目录的访问权限
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -chmod 770 /projectA
# 再次查看发现修改成功
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -ls /
Found 1 items
drwxrwx---   - hadoopdeploy supergroup          0 2023-05-24 20:35 /projectA
[hadoopdeploy@hadoop01 ~]$

hdfs中acl权限管理的简单实用从上述代码中可知,我们创建了一个/projecetA的目录,且给这个目录的权限为770,那么其他人 对这个目录应该是没有访问权限的。通过上述图片可知,我们用root用户上传文件,发现没有权限。

3、开启acl权限

3.1 修改hdfs-site.xml

<!-- 开启acl访问控制权限,默认就开启了 -->
<property>
    <name>dfs.namenode.acls.enabled</name>
    <value>true</value>
</property>

hdfs中acl权限管理的简单实用注意: 在低版本的hadoop上默认是禁用的,高版本默认是开启的。

3.2 重启hdfs集群

[hadoopdeploy@hadoop01 ~]$ stop-dfs.sh
Stopping namenodes on [hadoop01]
Stopping datanodes
Stopping secondary namenodes [hadoop03]
[hadoopdeploy@hadoop01 ~]$ start-dfs.sh
Starting namenodes on [hadoop01]
Starting datanodes
Starting secondary namenodes [hadoop03]
[hadoopdeploy@hadoop03 ~]$

3.3 使用acl给root用户授权

[hadoopdeploy@hadoop01 ~]$ hdfs dfs -setfacl -m user:root:rwx /projectA
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
user:root:rwx
group::rwx
mask::rwx
other::---

[hadoopdeploy@hadoop01 ~]$
hdfs中acl权限管理的简单实用
使用acl给root用户授权

3.4 使用 root 用户测试文件上传

[root@hadoop01 ~]# hdfs dfs -put anaconda-ks.cfg /projectA
[root@hadoop01 ~]# hdfs dfs -ls /projectA
Found 1 items
-rw-r--r--   2 root supergroup       1151 2023-05-24 21:10 /projectA/anaconda-ks.cfg
[root@hadoop01 ~]#

可以看到文件上传成功了。

4、acl的一些简单命令

hdfs中acl权限管理的简单实用hdfs dfs -setfacl -m user:root:rwx /projectAroot用户设置hdfs dfs -setfacl -m group:root:rwx /projectAroot组设置

4.1 设置acl

hdfs dfs -setfacl -m user:root:rwx /projectA

/projectA这个目录授予root用户rwx权限。

4.2 查看acl

[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
user:root:rwx
group::rwx
mask::rwx
other::---

[hadoopdeploy@hadoop01 ~]$ hdfs dfs -ls /
Found 1 items
drwxrwx---+  - hadoopdeploy supergroup          0 2023-05-24 21:10 /projectA
[hadoopdeploy@hadoop01 ~]$

drwxrwx---+ 这个+表示有acl权限

4.3 移除某个用户的acl

[hadoopdeploy@hadoop01 ~]$ hdfs dfs -setfacl -x user:root /projectA
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
group::rwx
mask::rwx
other::---

[hadoopdeploy@hadoop01 ~]$
hdfs中acl权限管理的简单实用
移除某个用户的acl

4.4 删除该目录所有的acl权限

[hadoopdeploy@hadoop01 ~]$ hdfs dfs -setfacl -b /projectA
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
group::rwx
other::---

[hadoopdeploy@hadoop01 ~]$

5、参考链接

1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#setfacl


原文始发于微信公众号(huan1993的编程coding):hdfs中acl权限管理的简单实用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/207290.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!