使用apache ranger控制hdfs权限,对组设置访问权限不起作用的解决

问题:

     在ranger中的hdfs控制策略中对组mygroup授权访问/my目录可读、可写、可执行。并将/my目录的用户组已经改为mygroup。但是以mygroup组的用户test用户使用hadoop fs -mkdir /mygroup/test1命令创建目录,还是提示无权限。ramger审计日志显示被hadoop-acl权限执行器拒绝。后查看ranger的hdfs插件日志发现。是由于获取不到test用户的组信息,看下面日志中的userGroups为空

2019-02-15 17:37:13,008 DEBUG org.apache.ranger.plugin.policyengine.RangerPolicyEngineImpl: ==> RangerPolicyEngineImpl.evaluatePolicies(RangerAccessRequestImpl={resource={RangerResourceImpl={ownerUser={root} elements={path=/my; } }} accessType={execute} user={test} userGroups={} accessTime={Fri Feb 15 17:37:13 CST 2019} clientIPAddress={10.70.24.143} forwardedAddresses={} remoteIPAddress={null} clientType={null} action={EXECUTE} requestData={null} sessionId={null} resourceMatchingScope={SELF} clusterName={} context={token:USER={test} } }, policyType=0)

后查看源码发现这个值来自于hadoop框架的org.apache.hadoop.hdfs.server.namenode.INodeAttributeProvider中的checkPermission方法的ugi参数。

解决:在namenode节点上创建用户test和用户组mygroup。恢复正常。

注意:如果haoop开启了acl认证。必须在客户机和namenode节点上都要创建相应的用户和组

猜你喜欢

转载自blog.csdn.net/join_null/article/details/87374789
今日推荐