关于hadoop:hdfs中acl权限管理的简单实用

55次阅读

共计 2702 个字符,预计需要花费 7 分钟才能阅读完成。

1、背景

在咱们开发的过程中有这么一种场景,/projectA 目录是 hadoopdeploy用户创立的,他对这个目录有 wrx 权限,同时这个目录属于 supergroup,在这个组中的用户也具备这个目录的wrx 权限,对于其他人, 不可拜访这个目录。当初有这么一个非凡的用户 root 我想 root 用户能够拜访这个目录,在不批改 root 用户组和其他人的权限的状况下,还有什么形式能够实现这个性能呢?

由上图能够,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 ~]$

从上述代码中可知,咱们创立了一个 /projecetA 的目录,且给这个目录的权限为 770,那么 其他人 对这个目录应该是没有拜访权限的。通过上述图片可知,咱们用root 用户上传文件,发现没有权限。

3、开启 acl 权限

3.1 批改 hdfs-site.xml

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

留神: 在低版本的 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 ~]$

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 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 ~]$

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

正文完
 0