首页 > 解决方案 > 是否有用于递归修改子目录 acl 的 org.apache.hadoop.fs.modifyAclEntries 功能

问题描述

我正在使用 CDH 版本 CDH 5.13.3、hadoop-2.6.0、spark-2.3.0。Spark作业由A用户创建一个带有子目录的目录,然后我想修改目录和子目录的acl,以便B用户可以访问它们。但是现在B用户只能访问父目录,不能访问子目录

def modifyAcl(fs: FileSystem, pathStr: String, aclSpec: String, 
              includePermission: Boolean) = {
    try {
      val path = new Path(pathStr)

      println(s"acl print: ${fs.getAclStatus(path)}")

      fs.modifyAclEntries(path, AclEntry.parseAclSpec(aclSpec, includePermission))

      println(s"new acl print: ${fs.getAclStatus(path)}")
    } catch {
      case ex: UnsupportedOperationException =>
        ex.printStackTrace()
      case e: IOException =>
        e.printStackTrace()
    } finally {
      fs.close()
    }
  }

日志输出:acl print: owner: infinivision_kylo_user, group: supergroup, acl: {entries: [], stickyBit: false}

新的 acl 打印:所有者:infinivision_kylo_user,组:超级组,acl:{条目:[默认:用户::rwx,默认:用户:hongtaozhang:rwx,默认:组::rx,默认:掩码::rwx,默认:其他::---],stickyBit:假}

标签: hadoophdfs

解决方案


推荐阅读