首页 > 解决方案 > 授予所有表的累积用户权限

问题描述

我正在尝试向新创建的用户帐户授予读/写/批量导入表权限。我在 accumulo shell 中使用通配符一次授予所有表的权限没有任何成功。

我尝试了以下授权命令变体:

grant Table.READ -t * ...
grant Table.READ -t '*' ...
grant Table.READ -t \\* ...
grant Table.READ -p * ...
grant Table.READ -p so_* ...
grant Table.* ...

对于 -t/-p 通配符,我收到以下错误之一:
WARN : No tables found that match your criteria
ERROR: java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
ERROR: org.apache .accumulo.core.client.TableNotFoundException:表 * 不存在

对于 Table.*,我得到:
错误:java.lang.IllegalArgumentException:没有这样的表权限

我有很多表要授予权限,所以我真的希望通配符是一种选择。

标签: accumulo

解决方案


通配符目前不是一个选项。授予用户对表的权限应该是一个谨慎的操作。如果您必须授予用户对许多表的权限,您可以创建一个小型 Java 程序来列出这些表授予权限

如果事先知道很多表在同一个“安全域”,可以创建一个表“命名空间”,并授予该命名空间中所有表的权限

如果您必须使用 shell(它不是主要的 API,并且仅提供用于分类和琐碎的小操作),您可以通过创建一个小脚本并将其作为批处理执行来完成。-?使用or选项运行 shell--help以查看可以从文件或 STDIN 执行命令的可用方法。

如果您希望提交添加通配符功能的请求,您应该联系开发人员打开问题或创建新的拉取请求以提出更改


推荐阅读