hdfs 中的权限组(默认情况下)如何工作?为什么所有用户文件都属于超级组?
How permission groups (by default) in hdfs work?? Why all users files belong to supergroup?
我对 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 用户 "group" 命令,这对我的用户来说显然不显示超级组(它甚至不存在)。
任何人都可以向我解释一下这种行为吗?并告诉如何防止它(即我想让这个盒子上的用户被允许访问 hdfs,但不能在那里写任何东西)。
好吧,长话短说,看起来安全性毕竟被禁用了。我只是不知道服务器端服务不使用 /etc/hadoop/conf,但每个服务在 /var/run/cloudera-scm-agent/process/_process-name/
中都有自己的配置。这些也可以在 CM UI 中看到,例如CM ->HDFS -> 实例 -> NameNode -> 进程 -> hdfs-site.xml.
我对 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 用户 "group" 命令,这对我的用户来说显然不显示超级组(它甚至不存在)。
任何人都可以向我解释一下这种行为吗?并告诉如何防止它(即我想让这个盒子上的用户被允许访问 hdfs,但不能在那里写任何东西)。
好吧,长话短说,看起来安全性毕竟被禁用了。我只是不知道服务器端服务不使用 /etc/hadoop/conf,但每个服务在 /var/run/cloudera-scm-agent/process/_process-name/
中都有自己的配置。这些也可以在 CM UI 中看到,例如CM ->HDFS -> 实例 -> NameNode -> 进程 -> hdfs-site.xml.