Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 使用webhdfs的GETFACL中未显示掩码值_Hadoop_Acl_Webhdfs - Fatal编程技术网

Hadoop 使用webhdfs的GETFACL中未显示掩码值

Hadoop 使用webhdfs的GETFACL中未显示掩码值,hadoop,acl,webhdfs,Hadoop,Acl,Webhdfs,在Hadoop中,我启用了授权。我为一个目录设置了几个acl 当我在hadoop bin中执行getfacl命令时,我可以看到其中的掩码值 hadoop fs -getfacl /Kumar # file: /Kumar # owner: Kumar # group: Hadoop user::rwx user:Babu:rwx group::r-x mask::rwx other::r-x 如果我使用webhdfs运行相同的命令,则不会显示掩码值 http://localhost:5007

在Hadoop中,我启用了授权。我为一个目录设置了几个acl

当我在hadoop bin中执行getfacl命令时,我可以看到其中的掩码值

hadoop fs -getfacl /Kumar

# file: /Kumar
# owner: Kumar
# group: Hadoop
user::rwx
user:Babu:rwx
group::r-x
mask::rwx
other::r-x
如果我使用webhdfs运行相同的命令,则不会显示掩码值

http://localhost:50070/webhdfs/v1/Kumar?op=GETACLSTATUS

{
  "AclStatus": {
    "entries": [
      "user:Babu:rwx",
      "group::r-x"
    ],
    "group": "Hadoop",
    "owner": "Kumar",
    "permission": "775",
    "stickyBit": false
  }
}
在webhdfs for GETFACL命令中不显示掩码值的原因是什么

帮我弄清楚

HDFS实现了该模型。链接文档解释了掩码条目被持久化到经典POSIX权限模型的组权限位中。这样做是为了支持POSIX ACL的要求,还支持与现有工具(如chmod)的向后兼容性,这些工具不知道扩展ACL条目。引用该文件:

在最小ACL中,组类权限与 拥有组权限。在扩展ACL中,组类可以 包含其他用户或组的条目。这导致了 问题:其中一些附加条目可能包含以下权限: 不包含在所有者组条目中,因此所有者组条目 权限可能不同于组类权限

此问题通过掩码条目解决。最少 ACL,组类权限映射到所属组条目 权限。使用扩展ACL时,组类权限映射到 掩码条目权限,而所属组条目仍 定义拥有的组权限

当应用程序更改任何所有者、组或其他类时 权限(例如,通过chmod命令)、相应的ACL条目 变化也是如此。同样,当应用程序更改权限时 对于映射到其中一个用户类的ACL条目,权限 这是阶级变革的结果

这与您的问题有关,因为这意味着掩码实际上没有作为扩展ACL条目持久化。相反,它在许可位。查询WebHDFS时,您已经进行了一个“原始”API调用来检索有关ACL的信息。当运行
getfacl
时,您已经运行了一个应用程序,该应用程序在该API调用之上分层了额外的显示逻辑
getfacl
知道,对于具有ACL的文件,组权限位被解释为掩码,因此它会相应地显示

这不是WebHDFS特有的。如果应用程序要通过NameNode的RPC协议调用
getAclStatus
,那么它将看到与WebHDFS响应相当的响应。另外,如果要在
webhdfs://
URI上使用
getfacl
命令,那么该命令仍将显示掩码,因为应用程序知道应用该逻辑,而不管文件系统实现如何