GRANT FACL '<permissions>' (1) ON TABLE <table> TO USER|GROUP <user_or_group_name>; (2)
复制
在ArgoDB中对HDFS目录的操作都是以hive用户来进行的,例如创建表在HDFS的warehouse目录下的目录、向该目录中写入数据等。其他用户对这些文件并没有读写权限。
在某些情况下,用户有对某张表的 SELECT 权限,并期望能够直接从该表在HDFS的目录中读取到对应表的数据,因此用户需要这些HDFS文件的权限(r, w, x),使得该用户能够直接获取HDFS上相应的数据。
ArgoDB中提供了通过SQL设置表对应的HDFS目录的FACL()。ArgoDB支持对用户组设置 ACL。
HDFS需要开启 AC L功能:参数 dfs.namenode.acls.enabled 的值应该为 true。您可以在 Manager 管理界面的 HDFS 服务配置页面查看和修改这个参数。 |
设置用户/组对某张表的FACL
1 | <permissions> 需要写作 rwx, rw-, r-x, -wx, r--, -w-, --x 或 ---,并且放在单引号或者双引号之间。 |
2 | 和授予TABLE/VIEW/DATABASE权限不同,HDFS目录的权限一次只能授予一个用户/组。 |
设置用户/组对某张表的FACL所需权限
-
ADMIN 和表owner可以将任意权限赋予任何人或者组。
-
对表有 SELECT 权限的用户可以赋予 r-x 给自己。
-
对表有 INSERT 权限的用户可以赋予 -w- 给自己。
-
既具有 SELECT 又具有 INSERT 权限的用户可以赋予 rwx 给自己。
GRANT FACL 'rwx' ON TABLE alice_t1 TO USER bob;
复制
取消用户/组对某张表的FACL
REVOKE FACL ON TABLE <table> FROM USER|GROUP <user_or_group_name>;
复制
取消用户/组对某张表的FACL所需权限
-
ADMIN 和表的Owner可以将任意用户/组对该表的FACL取消。
-
普通用户只能取消自己对该表的FACL。
取消用户组bob对表alice_t1的FACL
REVOKE FACL ON TABLE alice_t1 FROM USER bob;
复制
取消某张表上的全部FACL
REVOKE FACL ON TABLE <table_name>;
复制
取消某张表上的全部FACL所需权限
只有 ADMIN 或者表的owner可以执行该命令
查看用户/组对某张表的FACL
SHOW FACL USER|GROUP <user_or_group_name> ON TABLE <table_name>;
复制
查看用户/组对某张表的FACL所需权限
ADMIN、表的owner或者用户自己有权限执行该命令。
重新赋予bob对alice_t1的 rwx 权限,并查看。
GRANT FACL 'rwx' ON TABLE alice_t1 TO USER bob; SHOW FACL USER bob ON TABLE alice_t1;
复制
facl |
---|
user:bob:rwx |
default:user:bob:rwx |
该结果反映出以下两点信息:
用户bob对表alice_t1在HDFS上的目录有 rwx 权限。
用户bob对alice_t1的目录的权限可以向下传递到alice_t1目录的子目录。
查看某张表上的所有FACL
SHOW FACL ON TABLE <table_name>;
复制
查看某张表上的所有FACL所需权限
ADMIN 表owner有权限执行该命令。
GRANT FACL 'rwx' ON TABLE alice_t1 TO GROUP sales; SHOW FACL ON TABLE alice_t1;
复制
facl |
---|
user:bob:rwx |
group::r-x |
group:sales:rwx |
default:user::rwx |
default:user:bob:rwx |
default:group::r-x |
default:group:sales:rwx |
default:mask::rwx |
default:other::r-x |
该结果反映出以下两点信息:
用户组sales对表alice_t1在HDFS上的目录有 rwx 权限。
用户组sales对alice_t1的目录的权限可以向下传递到alice_t1目录的子目录。