Skip to content

Commit

Permalink
HBASE-24176 user_permission '.*' command failed to show all table per…
Browse files Browse the repository at this point in the history
…missions (apache#1499)

* user_permission failed when show table permissions with '.*' argument

Signed-off-by: Guangxu Cheng <gxcheng@apache.org>
  • Loading branch information
songxincun authored and guangxuCheng committed Apr 14, 2020
1 parent 5dbd5a4 commit 653fb90
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
6 changes: 5 additions & 1 deletion hbase-shell/src/main/ruby/hbase/security.rb
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def user_permission(table_regex = nil)
if !table_regex.nil? && isNamespace?(table_regex)
nsPerm = permission.to_java(org.apache.hadoop.hbase.security.access.NamespacePermission)
namespace = nsPerm.getNamespace
elsif !table_regex.nil?
elsif !table_regex.nil? && isTablePermission?(permission)
tblPerm = permission.to_java(org.apache.hadoop.hbase.security.access.TablePermission)
namespace = tblPerm.getNamespace
table = !tblPerm.getTableName.nil? ? tblPerm.getTableName.getNameAsString : ''
Expand Down Expand Up @@ -183,6 +183,10 @@ def isNamespace?(table_name)
table_name.start_with?('@')
end

def isTablePermission?(permission)
permission.java_kind_of?(org.apache.hadoop.hbase.security.access.TablePermission)
end

# Does Namespace exist
def namespace_exists?(namespace_name)
return !@admin.getNamespaceDescriptor(namespace_name).nil?
Expand Down
9 changes: 9 additions & 0 deletions hbase-shell/src/test/ruby/hbase/security_admin_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,15 @@ def teardown
end
assert(found_permission, 'Permission for user ' + global_user_name + ' was not found.')

found_permission = false
security_admin.user_permission('.*') do |user, permission|
if user == global_user_name
assert_match(/WRITE/, permission.to_s)
found_permission = true
end
end
assert(found_permission, 'Permission for user ' + global_user_name + ' was not found.')

found_permission = false
security_admin.revoke(global_user_name)
security_admin.user_permission do |user, _|
Expand Down

0 comments on commit 653fb90

Please sign in to comment.