kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006)

这篇具有很好参考价值的文章主要介绍了kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[INFO] 2022-12-29 16:24:26.021  - [taskAppId=TASK-678-305576-2357578]:[127] -  -> workspace /data/DATA_DIR/share/dw_ia_portraitsearch
    kinit -kt /data/DATA_DIR/share/keytab/hive.keytab hive@CDP.COM
    kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006) while getting initial credentials

脚本在执行kinit的过程中 报错,注意 这个错是随即错,也就是有时候会出现,有时候不会出现。

出现原因也很简单,就是多个任务同时执行kinit。。。

网上看到的大多文章都是起源这篇

Parallel kinit calls lead to a corrupted Kerberos cache - Stack Overflow

当时出了这个问题后,我看小组里的用到了这个办法

export KRB5CCNAME=tmp/krb5cc_`date +%m%d%H%M%S%N`

指定了一个环境变量有什么用吗? 我暂时是感觉不到,但是别人说有用,也许有点,开始研究下,见到了这篇文章。

Kerberos kinit crontab定时任务不生效的问题解决 - 一杯半盏 - 博客园

我们linux常规认证kerberos 一般都是

kinit -kt /data/DATA_DIR/share/keytab/hive.keytab hive@CDH.COM

kinit -kt /data/DATA_DIR/share/keytab/hive.keytab hive-- 可以省略后面的realm

那么我们认证了这个会发生那些物理变化?

kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006),个人总结,hive,kinit

 通过klist可以看到生成了一个cache  /tmp/krb5cc_1000,其中后缀1000也就是devuser的uid ,我们在tmp目录下就看到了这个。

先不讨论上面的问题。我们来测试一下。

同时开两个窗口a b 登录用户都是devuser

然后窗口a,kinit 认证,b能否直接hdfs dfs -ls /

kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006),个人总结,hive,kinit

kinit -kt /data/DATA_DIR/share/keytab/hive.keytab hive 

可以看到左边显示kdestroy了,右边klist 确实没了,然后左边认证,右边可以hdfs dfs -ls/ 成功。

这个说明什么问题? 当我们devuser认证了,那么其他用户在使用devuser的时候都是有权限的,即使我现在再重新开一个窗口。

这样好吗?不好!!!但是无所谓,没人会在意这细节,能够认证已经花费我们的大部分精力了,还想要我咋样???但是今天没事就研究下。

比如现在有这种要求,生产环境只给大家一个devuser的用户去登录,并且按照良好习惯要求大家kinit认证使用完了之后即使kdestroy。

那么会出现 a 登录后 kinit  开始做xxxxxx ,

这时b也登录devuser ,但是b发现klist有人已经认证了,那b怎么办,(b现在也可以hdfs dfs -ls )

但是呢 万一我工作了一半,此时a工作完了kdestroy了 我怎么办?

kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006),个人总结,hive,kinit 

kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006),个人总结,hive,kinit 上一秒我还可以好好干活 下一秒我就不能干活了。 有人又说了你重新认证下步就好了吗?

确实是,但是我重新认证的过程中,万一又来了个c,和我同样的遭遇呢?

又有人说不destroy不就好了?一般认证可以管一天 续期7天,七天认证下,不也可以么?问题的关键是 你这样一直认证确实可以解决,但是我们使用kerberos的目的就是安全,你这样一直认证,等于说别人只要知道了你devuser的密码就可以(等你认证或有效期内)在hdfs上为所欲为 ,而之前他需要kinit,他需要知道keytab的位置和principal。

所以其实最好的办法是一人一个账号 一个keytab

或者就是 每个人使用不同的缓存去认证,你destroy是去掉自己的缓存而我不受影响。

kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006),个人总结,hive,kinit

左边还是认证的krb5cc_1000, 右边认证的krb5cc_devuser 我们自己搞得一个cache。两者互不干扰,左边destroy了右边还是可以的。

所以同事的那种export KRB5CCNAME=tmp/krb5cc_`date +%m%d%H%M%S%N` 是可行的。

但是真的需要这个么?

我们的脚本都是通过dolphin去调用shell,dolphin的用户对应的租户都是producer,就是说只有一个用户,但是有成千上万个任务,真的需要全部都kinit一遍吗?

 文章来源地址https://www.toymoban.com/news/detail-539848.html

 

到了这里,关于kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1006)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包