我对hdfs中的权限组如何工作感到非常困惑,至少在我的集群中是这样。假设我有 unix 用户 kranach,它属于 bla 组。我有来自CDH5的hadoop2集群设置,有Unix组hadoop,用户hdfs,yarn和mapred belogns(但不是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"命令,这显然对于我的用户没有显示supergroup(它甚至不存在)。
谁能解释一下我的这种行为?并告诉如何防止它(即我想在这个盒子上拥有允许访问hdfs但不能在那里写入任何内容的用户)。
好吧,长话短说,看起来安全性毕竟被禁用了。我只是不知道服务器端服务不使用/etc/hadoop/conf,但每个服务在 /var/run/cloudera-scm-agent/process/_process-name/
中都有自己的配置。这些也可以在CM UI中看到,例如CM ->HDFS -> Instances -> NameNode -> Processes-> hdfs-site.xml。
http://community.cloudera.com/t5/Storage-Random-Access-HDFS/HDFS-default-permissioning-workes-weird-CDH5-1/m-p/24137#U24137