wordpress - 来自 Kubernetes 中 pod 容器内进程的文件所有权和权限
问题描述
根据官方文档:
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: false
由于指定了 fsGroup 字段,容器的所有进程也是补充组 ID 2000 的一部分。卷 /data/demo 的所有者以及在该卷中创建的任何文件都将是组 ID 2000。
但是,该文件似乎不够准确。我发现了很多关于不同工具和框架的错误报告,以及SO 的一些答案,这表明它不是那么简单。
现在,我自己也有类似的情况。我在 GKE 中部署了 Wordpress,并将其wp-content
目录安装为 Persistent Volume。我fsGroup
65534
为整个 Pod 设置,根据文档应该对所有容器内的所有进程强制执行补充组。但我不认为无论进程如何产生都可以强制执行。它甚至可能与 Unix 安全架构相矛盾。
回到我的示例:我无法将 Wordpress UI 中的新文件存储到 wp-content 文件夹中,因为权限被拒绝。我进入了 Wordpress 容器,这是我看到的:
131111 drwxr-sr-x 4 65533 65533 4096 Dec 9 22:28 rev-f2380fe737e72b1749f98b69fca3e5a739502313
(rev
dir 符号链接到 by wp-content
。我使用git-sync
它)。现在,我检查流程:
root@my-wp-deployment-64647c8bcb-9hv7j:/var/www/html# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 238516 34392 ? Ss Dec09 0:03 apache2 -DFOREGROUND
root 118 0.0 0.0 3868 3276 pts/0 Ss+ Dec09 0:00 /bin/bash
www-data 843 0.0 2.8 342704 114056 ? S 09:39 0:01 apache2 -DFOREGROUND
www-data 855 0.0 2.4 334936 98624 ? S 09:39 0:01 apache2 -DFOREGROUND
www-data 857 0.0 2.6 342484 108112 ? S 09:39 0:02 apache2 -DFOREGROUND
www-data 859 0.0 2.6 335032 106760 ? S 09:39 0:02 apache2 -DFOREGROUND
www-data 932 0.0 2.4 334888 98976 ? S 10:33 0:01 apache2 -DFOREGROUND
www-data 934 0.0 2.8 345308 116380 ? S 10:33 0:01 apache2 -DFOREGROUND
www-data 938 0.0 2.4 337084 99040 ? S 10:33 0:01 apache2 -DFOREGROUND
www-data 940 0.0 2.5 339356 104144 ? S 10:33 0:02 apache2 -DFOREGROUND
www-data 946 0.0 2.1 328920 87932 ? S 10:33 0:00 apache2 -DFOREGROUND
www-data 966 0.0 2.1 326644 84796 ? S 10:56 0:00 apache2 -DFOREGROUND
root 975 0.0 0.0 3868 3180 pts/1 Ss 11:06 0:00 /bin/bash
root 989 0.0 0.0 7640 2708 pts/1 R+ 11:14 0:00 ps aux
现在我还检查用户的组从属关系:
root@my-wp-deployment-64647c8bcb-9hv7j:/var/www/html# groups root
root : root
root@my-wp-deployment-deployment-64647c8bcb-9hv7j:/var/www/html# groups www-data
www-data : www-data
正如我所看到的,一些用户没有关联,65534
他们是启动新流程的人。
问题在哪里?我错过了什么还是 Kubernetes 文档不准确?或两者?:)