【问题标题】:Change owner of volume mounted secret in Kubernetes在 Kubernetes 中更改卷挂载密钥的所有者
【发布时间】:2018-08-30 10:57:13
【问题描述】:

我的 ssh 私钥 (/home/user/.ssh/id_rsa) 作为我的容器中的卷安装密钥。 Kubernetes 似乎使用 uid 0 挂载它。但是,我的应用程序以特定用户身份运行,因此无法访问权限必须至少为 600 的 ssh 私钥。如何更改我的私钥的所有权以反映特定用户的所有权?

谢谢。

【问题讨论】:

  • 我的回答对你有帮助吗?有什么遗漏吗?

标签: kubernetes


【解决方案1】:

在 Linux 中,用户名被映射到一个用户 ID,可以通过命令 id -u someusername 看到。

在许多情况下,SSH 默认要求您的 SSH 密钥归运行 SSH 的用户所有,并且对其他人隐藏600

因此,我强烈建议您复制您的密钥而不是挂载它,除非您的容器用户具有与您相同的用户 ID。


如果您使用的是 linux 容器,则可以在容器内运行命令以获取确切的用户 ID,然后使用用户 ID 而不是用户名来 chown 文件。

kubectl exec -it mypod bashsh 如果 bash 不起作用 $ id -u someuser

kubectl exec -it mypod id -u 如果你的容器有一个用户启动了主进程

那么

复制你的 id 文件,这样你就可以在不影响你的 ssh 能力的情况下对其进行 chown。

mkdir -p /data/secrets/myapp
cp /home/user/.ssh/id_rsa /data/secrets/myapp/id_rsa
chown $MYAPPUSERID:$MYAPPUSERID /data/secrets/myapp/id_rsa
chmod 600 /data/secrets/myapp/id_rsa

由于主机操作系统可能已经映射了此用户 ID,因此您的文件可能似乎归另一个任意用户所有,但最终重要的是所有者/组的用户 ID。

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2020-08-07
    • 1970-01-01
    • 2019-08-24
    • 2021-10-26
    相关资源
    最近更新 更多