首页 > 其他分享 >hdfs中acl权限管理的简单实用

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

时间:2023-06-05 12:56:43浏览次数:38  
标签:hdfs hadoopdeploy hadoop01 projectA dfs acl 权限 root

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>

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

使用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的一些简单命令

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

移除某个用户的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

标签:hdfs,hadoopdeploy,hadoop01,projectA,dfs,acl,权限,root
From: https://www.cnblogs.com/huan1993/p/17450295.html

相关文章

  • ORACLE 入门系列(3)
     pl/sql提供了可编辑数据的功能,需要在select语句后加个forupdate,执行后点击锁图标就可以开始编辑数据了。数据库字符串操作,oracle和mysql独有一个相同的字符串函数INSTR,如图。这个函数还是很有作用的。......
  • 完整支持Oracle PL/SQL,星环科技KunDB高兼容性实现低成本国产化替代
    从中兴、华为等一系列高新科技企业被美国制裁,到俄乌冲突事件爆发后,西方各国相继宣布制裁俄罗斯,以Oracle、IBM、微软、SAP为代表的科技巨头暂停在俄服务,这一系列动作给我们敲响了加速国产化替代的警钟。数据库作为提供数据存储与处理能力的基础软件,是信息系统的基础、信息安全的基石......
  • Mysql && Oracle case when用法
    CASEWHEN1.对值判断2.条件判断--方式一:对值判断SELECTCASE 指定字段 WHEN条件值1THEN 结果1 WHEN条件值2THEN 结果2 WHEN条件值3THEN 结果3 ELSE默认值 END字段别名FROM 表名SELECTCASE STATUS WHEN0THEN '等待' WHEN1THEN ......
  • Mysql如何新建一个用户并赋予视图权限
    Mysql如何新建一个用户并赋予视图权限 --新建用户CREATEUSER'viewUser'@'%'IDENTIFIEDBY'password'; -- 赋予视图权限GRANTSELECT,SHOWVIEWON`views`TO'viewUser'@'%' -- 并把视图内容关系到的表权限赋予新用户GRANTSELECTON`tableName`......
  • Hibernate处理Oracle的分页,是用rownum。
    代码如下:Java代码publicStringgetLimitString(Stringsql,booleanhasOffset);{StringBufferpagingSelect=newStringBuffer(sql.length();+100);;if(hasOffset);{pagingSelect.append("select*from(selectrow_.*,rown......
  • Oracle统计信息之NO_INVALIDATE参数
    文档课题:Oracle统计信息之NO_INVALIDATE参数.1、理论知识Oracle统计信息对于CBO至关重要.RBO建立在数据结构的基础上,DDL结构、约束会将SQL语句分为不同的成本结构等级.而CBO是在数据结构的基础上加入数据表细粒度信息,将成本结构细化为成本cost值.相对于数据表的DDL结构,统计信息反......
  • oracle一个不可不懂的数据库,来一波视频
    Spring常用注解redis视频集合,看完这些别说不会redis第0讲.开山.wmv第1讲.oracle基础介绍.wmv第2讲.oralce安装.wmv第3讲.oracle的基本使用.wmv第4讲.oracle用户管理(1).wmv第5讲.oracle用户管理(2).wmv第6讲.oracle表的管理(1).wmv第7讲.oracle表的管理(2).wmv第8讲.oracle表查询(1......
  • HDFS Federation
    HDFSFederationHDFSFederationBackgroundMultipleNamenodes/NamespacesKeyBenefitsFederationConfigurationConfiguration:FormattingNamenodesUpgradingfromanolderreleaseandconfiguringfederationAddinganewNamenodetoanexistingHDFSclusterManaging......
  • Oracle分页查询语句
    Oracle分页查询语句(一)作者:yangtingkun     Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。分页查询格式:SELECT*......
  • 网安--用户权限管理
    用户组group组ID--GID1.root用户组:GID=0(反之也成立)2.程序用户组(系统用户组):1-9993.普通用户组:1000-65535相关操作:cat/etc/group                       查看所有用户useradd-g组名用户                  在组中添加用户use......