What is ACL

Hadoop中的ACL与Linux中的ACL机制基本相同,都是用于为文件系统提供更精细化的权限控制。

参考 HDFS ACLs: Fine-Grained Permission for HDFS Files in Hadoop

开启ACLs

默认情况下ACLs是关闭的,想要开启此功能需要在hdfs-site.xml的配置项里找到dfs.namenode.acls.enabled把属性设为true才可以。重要:Namenode节点必须要设定的用户或用户组
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>

getfacl

getfacl用于查看一个文件/目录的ACL状态,例如:

 [root@ecs1 tao]# hadoop dfs -getfacl /user/tao
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it. # file: /user/tao
# owner: tao
# group: supergroup
user::rwx
group::rwx
other::rwx

setfacl

基本用法

假设,我们有一个HDFS目录/user/tao/xt-data,它目前的权限为drwxrwxr-x tao supergroup。我希望让另一个用户Hbase(不属于任何group)对该目录有rwx的权限,那么可以如下操作:

hdfs dfs -setfacl [-R] [-b|-k -m|-x <acl_spec> <path>]|[--set <acl_spec> <path>]
<!-- COMMAND OPTIONS
<path>: 路径
-R: 遍历路径里的所有文件。
-b: 撤销除了基本用户和组权限以外的所有权限。
-k: 撤销默认的ACL设置。
-m: 添加新的权限来使用此ACL。不影响现有权限。
-x: 只撤销指定的ACL。
<acl_spec>: 逗号分隔的ACL权限列表。
--set: 使用该选项指定的路径完全取代现有的ACL。
之前的ACL将不再适用。
-->

  

[tao@ecs3 ~]$ hadoop dfs -setfacl -m user:hbase:rwx /user/tao/xt-data

[tao@ecs3 ~]$ hadoop dfs -getfacl /user/tao/xt-data
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it. # file: /user/tao/xt-data
# owner: tao
# group: supergroup
user::rwx
user:hbase:rwx
group::r-x
mask::rwx
other::r-x [tao@ecs3 ~]$ su [root@ecs3 tao]# sudo -u hbase hadoop dfs -mkdir /user/tao/xt-data/testDir [root@ecs3 tao]# sudo -u hbase hadoop dfs -ls /user/tao/xt-data
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it. Found 1 items
drwxr-xr-x - hbase supergroup 0 2015-05-22 16:33 /user/tao/xt-data/testDir
[root@ecs3 tao]#

可以看到,现在用户hbase可以在/user/tao/xt-data中新建一个目录testDir了。那么,这个新建的目录的权限是什么呢?

 [root@ecs3 tao]# hadoop dfs -getfacl /user/tao/xt-data/testDir
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it. # file: /user/tao/xt-data/testDir
# owner: hbase
# group: supergroup
user::rwx
group::r-x
other::r-x
 

可以看到,这个新建的目录与其他普通的目录在权限是一样的。如果想使得新建的目录/文件的ACL也满足我们的要求,可以使用default acl来实现。

关于权限标志位的顺序: 在命令hadoop dfs -setfacl -m user:hbase:rwx /user/tao/xt-data中,权限标志位rwx的顺序不能改变,否则会报错:-setfacl: Invalid permission in
正确的写法有: rwx, r-x, -r-, -rx等;
错误的写法有:wrxw-x等。

Default ACL

可以为某个目录设置一个默认的ACL权限,使得以后在该目录中新建文件或者子目录时,新建的文件/目录的ACL权限都是之前设置的default ACLs。

例如,现在已经有了一个HDFS目录/user/tao,其当前的ACL状态为:

[root@ecs1 tao]# hadoop dfs -getfacl /user/tao
# file: /user/tao
# owner: tao
# group: supergroup
user::rwx
group::rwx
other::rwx

我们想将其default acl权限设置为user:hbase:rwx,用命令:

[root@ecs1 tao]# sudo -u tao hadoop dfs -setfacl -m default:user:hbase:rwx /user/tao

[root@ecs1 tao]# hadoop dfs -getfacl /user/tao
# file: /user/tao
# owner: tao
# group: supergroup
user::rwx
group::rwx
other::rwx
default:user::rwx
default:user:hbase:rwx
default:group::rwx
default:mask::rwx
default:other::rwx

检查是否生效:

 [root@ecs1 tao]# sudo -u tao hadoop dfs -mkdir /user/tao/testDir

 [root@ecs1 tao]# hadoop dfs -getfacl /user/tao/testDir
# file: /user/tao/testDir
# owner: tao
# group: supergroup
user::rwx
user:hbase:rwx #effective:r-x
group::rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:hbase:rwx
default:group::rwx
default:mask::rwx
default:other::rwx

HDFS涉及ACLs的命令的更多相关文章

  1. 与HDFS交互-By shell命令

    Shell命令的开头有三种: hadoop fs hadoop dfs hdfs dfs 关于具体命令之前写过 可查看:https://www.cnblogs.com/floakss/p/970344 ...

  2. Hadoop学习笔记(2)-HDFS的基本操作(Shell命令)

    在这里我给大家继续分享一些关于HDFS分布式文件的经验哈,其中包括一些hdfs的基本的shell命令的操作,再加上hdfs java程序设计.在前面我已经写了关于如何去搭建hadoop这样一个大数据平 ...

  3. HDFS文件系统基本文件命令、编程读写HDFS

    基本文件命令: 格式为:hadoop fs -cmd <args> cmd的命名通常与unix对应的命令名相同.例如,文件列表命令: hadoop fs -ls 1.添加目录和文件 HDF ...

  4. Hadoop HDFS分布式文件系统 常用命令汇总

    引言:我们维护hadoop系统的时候,必不可少需要对HDFS分布式文件系统做操作,例如拷贝一个文件/目录,查看HDFS文件系统目录下的内容,删除HDFS文件系统中的内容(文件/目录),还有HDFS管理 ...

  5. hdfs的特性、命令、安全模式、基准测试

    1.第一点:如何理解hdfs分布式文件系统,每台机器出一块磁盘,凑成一个大的硬盘,大的硬盘的容量来自各个服务器的硬盘容量之和. 你出5毛,我出5毛,大家凑成1块. 2. HDFS 是 Hadoop D ...

  6. HDFS中的fsck命令(检查数据块是否健康)

    在HDFS中,提供了fsck命令,用于检查HDFS上文件和目录的健康状态.获取文件的block信息和位置信息等. 我们在master机器上执行hdfs fsck就可以看到这个命令的用法. [hadoo ...

  7. 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令

    实验目的 了解bin/hadoop脚本的原理 学会使用fs shell脚本进行基本操作 学习使用hadoop shell进行简单的统计计算 实验原理 1.hadoop的shell脚本 当hadoop集 ...

  8. hadoop(十一)HDFS简介和常用命令介绍

    HDFS背景 随着数据量的增大,在一个操作系统中内存不了了,就需要分配到操作系统的的管理磁盘中,但是不方便管理者维护,迫切需要一种系统来管理多态机器上的文件,这就是分布式文件管理系统. HDFS的概念 ...

  9. 软件测试工作中涉及的Linux命令整理

    Linux文件系统命令 1. 安装火狐浏览器,首先得知道Linux系统是64位的还是32位的 uname -a 2. 将下载的火狐浏览器压缩包移动到指定目录(/user/local)下 sudo mv ...

随机推荐

  1. WCF RIA Services使用详解(转载)

    理解领域服务和领域操作 本文目录: 3.1 WCF Ria Services简介 3.1.1 什么是WCF Ria Services 3.1.2 WCF Ria Services如何生成客户端代码 3 ...

  2. memcached 命令行举例

    1.启动Memcache  常用参数
memcached 1.4.3 
 -p <num> 设置端口号(默认不设置为: 11211) 
 -U <num> UDP监听端口 (默 ...

  3. oracle数据库性能优化方案精髓整理收集回想

    oracle数据库性能优化整体法则: 一.降低数据訪问(降低硬盘房訪问次数) 二.返回更少的数据(降低网络传输或磁盘訪问) 三.降低交互次数(降低网络传输) 四.降低server开销(降低cpu及内存 ...

  4. Creating Icon Overlay Handlers / 创建图标标记 Handlers (续) / VC++, Windows, DLL, ATL, COM

    创建图标标记 Handlers (续) 1.新建一个ATL Project. 2.建议将 Project Property 中 Linker – General - “Register Output” ...

  5. DataUml Design 教程7 - 数据库生成模型

    DataUml Design支持数据库生成模型,并支持外键关系,能够根据外键自动生成类与类之间的关系. 目前DataUML Design支持MS Server.MY SQL.Oracle和Access ...

  6. Javascript模块规范

    因为有了模块,就可以更方便地使用别人的代码,想要什么功能,就加载什么模块.但是有一个前提,就是大家必须以同样的方式编写模块. 目前,通行的Javascript模块规范共有两种:CommonJS和AMD ...

  7. keypad代码分析

    keypad作为input设备注册到内核,与platform总线驱动match. 1.描述一个输入设备对象 static struct input_dev *kpd_input_dev; 告知输入子系 ...

  8. Photoshop脚本之调试

    系统:mac 创建test.scpt和test.jsx command+空格,打开 脚本编辑器(applescript) 脚本编辑器打开test.scpt 输入: tell application & ...

  9. snap方式nextcloud安装笔记

    官方安装文档:https://docs.nextcloud.com/server/12/admin_manual/installation/source_installation.html#examp ...

  10. MySQL运算符总结

    注解:常常用于where条件判断中