问题:
加入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组中才会有效 。