加入sentry后普通用户访问hdfs文件权限问题

问题:

        加入LDAP和sentry控制权限后,在每台服务器中添加了普通用户,例如hadoopuser,在hadoopuser下执行su - u hadooouser hdfs dfs -ls /user/hive/warehouse报错,报错信息如下。

ls: Permission denied: user=hadoopuser, access=READ_EXECUTE, inode="/user/hive/warehouse":hive:hive:drwxrwx--x

分析思路:

        由于增加了sentry权限管控,像平时的chmod去修改文件权限都是不会生效的。

通过   -getfacl    查看hadoopuser根本不在管控的权限中。通过如下命令添加权限一样不生效

hdfs dfs -setfacl -m user:hadoopuser:rwx  /user/hive/warehouse

[root@hadoopap ~]# hadoop fs -getfacl /user/hive/warehouse
# file: /user/hive/warehouse
# owner: hive
# group: hive
user::rwx
group::---
user:hive:rwx
group:hive:rwx
mask::rwx
other::--x

于是想着把hadoopuser 添加到hive组中应该就可以了吧

在一台服务器上把普通用户添加到hive组,让其拥有hive一样的权限。

usermod  -G hive hadoopuser

再次执行su - u hadooouser hdfs dfs -ls /user/hive/warehouse 仍然权限不足。

其实加入sentry,只能通过添加用户到用户组,再belline中授权的方式实现;以上思路没有问题,最后才发现,需要把每台服务器hadoopuser用户都要添加到hive组中才会有效

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java Sentry是一个用于数据访问权限控制的Java库,它基于Apache Sentry项目,可以在Hadoop、Hive等大数据组件中实现细粒度的数据权限控制。以下是Java Sentry的使用教程: 1. 安装Sentry服务器:首先需要安装Sentry服务器,可以参考官方文档进行安装。 2. 配置Sentry权限:在Sentry服务器上设置角色和权限,以控制数据访问。 3. 集成Java Sentry:将Java Sentry库添加到项目中,并在代码中引入Java Sentry相关类和方法。 4. 配置Java Sentry:在代码中设置Java Sentry相关配置,如Sentry服务器地址、用户名、密码等。 5. 实现数据访问控制:在代码中使用Java Sentry提供的API来实现数据访问控制,如检查用户是否具有数据访问权限、添加用户到指定角色等。 以下是一个示例代码: ```java // 设置Java Sentry配置 SentryConfig sentryConfig = new SentryConfig(); sentryConfig.setSentryServer("sentry-server:8080"); sentryConfig.setUsername("user1"); sentryConfig.setPassword("pwd1"); // 创建Java Sentry客户端 SentryClient sentryClient = SentryClientFactory.create(sentryConfig); // 检查用户是否有访问数据权限 if (sentryClient.hasAccess("user1", "database1.table1", ActionType.SELECT)) { // 用户访问权限,执行数据访问操作 Connection conn = DriverManager.getConnection("jdbc:hive2://hive-server:10000/default"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM database1.table1"); // 处理查询结果 } else { // 用户访问权限,返回错误信息 throw new Exception("User does not have access to database1.table1"); } ``` 通过以上步骤,就可以使用Java Sentry实现数据访问权限控制了。需要注意的是,Java Sentry的具体使用方法和API可能会因版本而异,可以参考官方文档或示例代码进行使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值