hdfs守护进程与kerberos主体和unix帐户之间的Map

tyu7yeag  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(298)

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

sudo su -

cd /etc/username/

kinit some_string/instance -k -t some_string.keytab

hadoop fs -ls

这是非常好的工作,但我试图了解到底是怎么回事。
当我做“whoami”时,很明显它显示“root”。但是在hdfs上以上述方式创建的任何文件的所有者都是'some_string',组是'hdfs'。我既不能像其他用户那样kinit也不能访问hdfs。为什么会这样?
这是因为:hadoop的hdfs守护进程被Map到kerberos主体(主体的票证只能作为根用户访问?),并且主体还被Map到os帐户某个字符串,这是我所看到的hdfs上文件的所有者?如果是这样的话,链接定义在哪里(hadoop守护进程到主体到os帐户)
我试着在谷歌上搜索了很多,但找不到一个明确的答案来解决我的困惑。即使我用自己的用户登录到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
ujv3wf0j

ujv3wf0j1#

所以当你执行下面的命令

kinit some_string/instance -k -t some_string.keytab

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

klist -k some_string.keytab

它将显示主体名称和版本的输出。keytab文件也包含密码,所以它不需要密码。
第二个问题是klist命令的答案,它将向您显示与用户类似的主体/_host@realm 因此,在您的情况下,用户是某个\u字符串,当您获得某个\u字符串用户的票证时,您是kerberos的某个\u字符串,您的命令将作为某个\u字符串用户执行,因此创建的文件的所有者将是某个\u字符串。
您还可以使用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。

相关问题