hdfs 中的权限组(默认情况下)如何工作?为啥所有用户文件都属于超级组?

Posted

技术标签:

【中文标题】hdfs 中的权限组(默认情况下)如何工作?为啥所有用户文件都属于超级组?【英文标题】:How permission groups (by default) in hdfs work?? Why all users files belong to supergroup?hdfs 中的权限组(默认情况下)如何工作?为什么所有用户文件都属于超级组? 【发布时间】:2015-01-27 23:33:37 【问题描述】:

我对 hdfs 中的权限组如何工作感到非常困惑,至少在我的集群中是这样。假设我有属于 bla 组的 unix 用户 kranach。我从 CDH5 设置了 hadoop2 集群,有一个 unix 组 hadoop 用户 hdfs、yarn 和 mapred 属于该组(但不是 kranach,他与 hadoop 无关)。

现在,我在 hdfs 中的根目录具有如下权限

drwxr-xr-x - hdfs supergroup 0 2015-01-27 23:08 /

所以,我假设既然我,kranach,不属于超级组,我不应该被允许在 / 下创建目录。但是,当我这样做时: kranach@czarnobog:~$ hdfs dfs -mkdir /bla kranach@czarnobog:~$ hdfs dfs -ls / Found 6 items drwxr-xr-x - kranach supergroup 0 2015-01-27 23:27 /bla

所以我刚刚创建了属于我和组超级组的目录。但是我不在超级组中,首先不应该允许在那里创建目录!根据 hadoop 文档(http://hadoop.apache.org/docs/r1.2.1/hdfs_permissions_guide.html#Configuration+Parameters),默认情况下,hadoop 只检查 linux 用户“组”命令,这对于我的用户来说显然没有显示超级组(它甚至不存在)。

谁能解释一下这种行为?并告诉如何防止它(即我想在这个盒子上有用户,允许访问 hdfs,但不能在那里写任何东西)。

【问题讨论】:

【参考方案1】:

嗯,长话短说,看起来安全性毕竟被禁用了。我只是不知道服务器端服务不使用/etc/hadoop/conf,但每个服务在/var/run/cloudera-scm-agent/process/_process-name/ 中都有自己的配置。这些也可以在 CM UI 中看到,例如CM -> HDFS -> 实例 -> NameNode -> 进程 -> hdfs-site.xml。

http://community.cloudera.com/t5/Storage-Random-Access-HDFS/HDFS-default-permissioning-workes-weird-CDH5-1/m-p/24137#U24137

【讨论】:

以上是关于hdfs 中的权限组(默认情况下)如何工作?为啥所有用户文件都属于超级组?的主要内容,如果未能解决你的问题,请参考以下文章

为啥默认情况下不需要 mongoose 中的所有字段?

ranger-hdfs 插件组权限测试

hdfs集群默认权限

覆盖用户/产品权限所需的最少组数

修修改hdfs上的文件所属用户、所属组等读写执行控制权限

在不知道架构名称的情况下向组角色添加权限