首先ACL (access control list) 中文 “权限访问控制列表”, 简单来说,就是记录 HDFS 的文件或者文件夹 针对 owner,group, others 三个角色的权限是什么(xrw)
类似于,我们常常查看文件的权限 ll 命令, 有九位 比如:xrw--x-r
hdfs 默认是开启文件访问权限的,就是按照rwx 来进行判断是否有读写执行权限。然后根据用户拥有者, 同组用户, 非同组用户 来进行权限管理
然而ACL 是一个对于HDFS 的可选启动项, 目的: 制定 “除文件owner, group,ohther" 这固定的三类之外的 角色权限;
比如 用户A (默认组也叫A)创建了一个文件 test.txt;
那么不使用ACL 的情况下, hdfs 可以判断3 种情况
1 访问者是否是A?
2. 访问者是否在 A组?
3.如果都不是,那要看 other 那部分的权限是什么。
那么问题就来了, 把访问者 “非A, 又非A组的” (以下称为 用户X)全 划分到other 类型是不是有点 过分, 有点太鲁莽;
为了继续访问 目标文件
解决办法, 把 追加到 A组里, 这样就可以解决了;前提是A 组 的权限是否 适合 用户X
假设:如果 遇到 读写分离 的情况下:
A 组本来 是 -r- (只读权限的),用户X 现在是需要打开 -w- 写权限;
那么把 用户X 加到 A组就不合适了
于是可以使用 ACL
再不改变本身owner+group 那些权限以外;再允许这个文件 被 用户X (或者X 这个组) w(write) 的权限;
命令:
hdfs fs -setfacl -user:(username):(w/r/x) /目标文件
hdfs fs -setfacl -group:(username):(w/r/x) /目标文件
hsdf dfs -getfacl /目标文件 #用来查看目前这个文件的权限有哪些
总结: ACL 丰富了hdfs 默认的权限控制机制下的 更多可能。
Hadoop从2.4.0版本开始支持hdfs的ACL