我正在将k8s机密作为卷装入,并且吊舱中的文件具有错误的权限。
在我的Deployment
中,我在volumes
数组中有此条目:
- name: ssh-host-keys
secret:
secretName: ftp-ssh-host-keys
defaultMode: 0600
然后像这样安装:
- mountPath: /etc/ssh/ssh_host_rsa_key
name: ssh-host-keys
subPath: ssh_host_rsa_key
readOnly: true
但是,当我查看Pod
中的文件时,文件权限不正确:
rw-r--r-- 1 root root 553122 Aug 21 2018 moduli
-rw-r--r-- 1 root root 1723 Aug 21 2018 ssh_config
-rw-r----- 1 root 1337 410 May 11 10:33 ssh_host_ed25519_key
-rw-r----- 1 root 1337 3242 May 11 10:33 ssh_host_rsa_key
-rw-r--r-- 1 root 1337 465 May 11 10:33 sshd_config
即键的权限为0644,而不是0600。
我不知道为什么会这样。
答案 0 :(得分:1)
我认为常见的混淆是文件是链接的,因此ls
将默认显示链接权限。查看更多详细信息here。
只需添加-L:ls -laL /path/to/directory/
即可取消引用链接
如果这不能解决问题,则可能您正面临this bug。
答案 1 :(得分:0)
根据documentation,由于JSON的限制,您必须以十进制表示法指定模式。
请参阅文档中提供的示例:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mypod
image: redis
volumeMounts:
- name: foo
mountPath: "/etc/foo"
volumes:
- name: foo
secret:
secretName: mysecret
defaultMode: 256
256个十进制等于八进制的0400。在您的特定情况下,您应该使用defaultMode: 384
来获得0600以获得所需的权限。
您可以转换八进制权限here。