Estou tentando executar um podman
quadlet definido por um arquivo YML do kubernetes. Quero que ele seja executado sem root em systemd
um web
usuário no host: systemctl --user status pod-web
.
Dentro do container, o processo PHP está rodando sob o 33:33
usuário. Quero que o /home/web/data
diretório no host seja de propriedade do web
usuário, mas ao mesmo tempo seja legível e gravável pelo 33:33
usuário dentro do container, onde ele é montado em /var/www/html
.
Nos comentários, você pode ver algumas coisas que tentei. Infelizmente, não entendo os namespaces de usuário e subuid/subgid o suficiente para conseguir fazer funcionar com a documentação e o Copilot continua alucinando, então qualquer ajuda de pessoas reais será apreciada.
Meu problema é semelhante a este , mas quero usar um podman kube
quadlet definido em um arquivo YML.
Ambiente:
AlmaLinux release 9.4 (Seafoam Ocelot)
podman version 4.9.4-rhel
systemd 252 (252-32.el9_4.7)
- SELinux habilitou a aplicação
chown -R web:web /home/web
usermod --add-subuids 100000-165535 --add-subgids 100000-165535 web
/home/web/pod-web.yml
:
apiVersion: v1
kind: Pod
metadata:
name: pod-web
# annotations:
# io.podman.annotations.userns: "keep-id"
spec:
containers:
- name: pod-web
image: docker.io/library/php:8.3-apache
# securityContext:
# runAsUser: 33
# runAsGroup: 33
# supplementalGroups: [65536]
# ports:
# - containerPort: 80
# hostPort: 8000
volumeMounts:
- mountPath: /var/www/html
name: web-data
volumes:
- name: web-data
hostPath:
path: /home/web/data
restartPolicy: Always
Com runAsUser: 33
o container estava logando:
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
Com runAsUser: 0
o contêiner parece funcionar, mas é uma prática ruim, pois concede muitos privilégios, se entendi corretamente.
/home/web/.config/containers/systemd/pod-web.kube
:
[Unit]
Description=Podman Quadlet: %p
[Service]
# ExecStartPre=/usr/bin/podman unshare -- /bin/bash -c 'chown -R 33:33 /home/web/data'
[Kube]
Yaml=/home/web/%p.yml
LogDriver=journald
#UserNS=keep-id:uid=33,gid=33
#UserNS=auto
[Install]
WantedBy=multi-user.target default.target