HDFS守护程序与Kerberos Principal和Unix帐户之间的映射

时间:2016-03-03 05:22:47

标签: unix hadoop hdfs kerberos account

在我的组织中,要访问hadoop群集,我们在网关上执行以下操作:

sudo su -

cd /etc/username/

kinit some_string/instance -k -t some_string.keytab

hadoop fs -ls

这完全正常,但我想了解究竟发生了什么。

当我做'whoami'显然它显示'root'。但是在HDFS上以上述方式创建的任何文件都将所有者设置为“some_string”,将组设置为“hdfs”。我既不能像任何其他用户那样开玩笑也不能访问HDFS。为什么会这样?

这是因为:Hadoop的HDFS守护程序映射到kerberos主体(并且该主体的票证只能作为root用户访问?)并且该主体也映射到操作系统帐户some_string,这是我所看到的所有者HDFS上的文件?如果是这样,链接定义在哪里(hadoop守护进程到主体到os账户)

我尝试使用Google搜索,但无法找到解决问题的明确答案。即使我用自己的用户登录HUE,我也没有这些文件的写入权限,这也是我想要了解如何解决的问题。

感谢。

编辑:

$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal:     some_string/instance@CLOUDERA.xxxx.CORP

Valid starting     Expires            Service principal
03/02/16 21:06:19  03/03/16 21:06:19      krbtgt/CLOUDERA.xxxx.CORP@CLOUDERA.xxxx.CORP
renew until 03/02/16 21:06:19

1 个答案:

答案 0 :(得分:0)

所以当你执行下面的命令

kinit some_string/instance -k -t some_string.keytab

您正在请求存储在 some_string.keytab 文件中的主体票据,您可以使用以下命令查看该文件

klist -k some_string.keytab

它将显示主要名称和版本的输出。 Keytab文件也包含密码,因此不需要密码。

第二个问题将来自 klist 命令,它会显示像user / _host @ realm这样的主体,所以在你的情况下用户是some_string,当你得到some_string的票时用户你是kerberos的some_string,你的命令将作为some_string用户执行,因此创建的文件的所有者将是some_string。

此外,您可以使用 klist 命令列出已有的票证,请参阅下面的输出:

[root@myhostname ~]# klist -k some_Name.keytab
Keytab name: FILE:some_Name.keytab
KVNO Principal
---- --------------------------------------------------------------------------
1 myuser/myhostname@MYREAL.COM

此处我的keytab是myuser用户,host是myhostname host。