hadoop - 是否有用于递归修改子目录 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:假}
解决方案
推荐阅读
- html - CSS - 仅在元素之间换行,而不是字符(不能使用空格)
- python - 如何从 Python 运行 Windows PowerShell 命令?
- go - 如何反序列化 prpBytes(描述中的链接 src)(ProposalResponsePayload protobuf 消息)到对象原始
- javascript - 将数据表从视图传递到控制器时,Laravel 错误未验证
- node.js - node + requirejs:模块未定义
- laravel - Laravel 5 - 用户在会话生命周期后不注销
- node.js - 值被最新的人覆盖以请求机器人?
- c++ - 具有最低 cpp 标准的 cmake add_library
- node.js - -bash ng 命令未找到 Mojave
- python - 熊猫合并匹配不同的行