HDFS ACLs
HDFS支持POSIXAccess Control Lists(ACL),也就是传统的POSIX权限控制。通过提供一种方式来设置特定用户或用户组指定为不同权限的HDFS文件ACL访问控制,类似于Linux文件系统权限。
开启ACLs
默认情况下ACLs是关闭的,想要开启此功能需要在hdfs-site.xml的配置项里找到
dfs.namenode.acls.enabled把
属性设为
true才可以。
重要:Namenode节点必须要设定的用户或用户组
<property> <name>dfs.namenode.acls.enabled</name> <value>true</value> </property>
命令
使用shell来设置和获取文件的访问控制列表(ACL)。
getfacl
hdfs dfs -getfacl [-R] <path> <!-- COMMAND OPTIONS <path>: 文件或目录路径 -R: 使用此选项可以递归地列出所有文件和目录的ACL。 -->
例:
<!-- 获取/user/hdfs/file路径下的文件ACL列表 --> hdfs dfs -getfacl /user/hdfs/file <!-- 遍历获取/user/hdfs/file路径下所有文件ACL列表 --> hdfs dfs -getfacl -R /user/hdfs/file
setfacl
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将不再适用。 -->
例:
<!-- 赋予user:ben用户和组读写/user/hdfs/file路径的权限 --> hdfs dfs -setfacl -m user:ben:rw- /user/hdfs/file <!-- 撤销user用户及alice用户组对/user/hdfs/file路径的ACL --> hdfs dfs -setfacl -x user:alice /user/hdfs/file <!-- 赋予用户user及hadoop组读写权限,给group和others只读权限 --> hdfs dfs -setfacl --set user::rw-,user:hadoop:rw-,group::r--,other::r-- /user/hdfs/file
ref:http://www.cloudera.com/documentation/enterprise/latest/topics/cdh_sg_hdfs_ext_acls.html