Page MenuHomeVyOS Platform

container: tmpfs on an existing non-root image directory is no longer writable since T9024 (crun → runc 1.1.5)
Open, NormalPublicBUG

Description

Hi,

Since vyos-build 201b8e0b1c (T9024: Podman 4.9.5 → 5.8.4, crun replaced by Debian Bookworm's runc 1.1.5), set container name <n> tmpfs <t> no longer works for containers running as a non-root user when the destination already exists in the image (typical:
/run/<service> owned by the service user). The tmpfs is mounted root:root 0755 and the service cannot create its pid file or control socket, so it fails to start. The same configuration worked on 2026.05.08-rolling.

Reproduction
FROM alpine
RUN mkdir -p /run/foo && chown 1000:1000 /run/foo
USER 1000:1000
podman run --rm --mount type=tmpfs,destination=/run/foo <image> sh -c 'stat -c "%U:%G %a" /run/foo; touch /run/foo/x'

Stackplain tmpfstmpfs-mode=1777U
Podman 4.9 + crun 1.8.1 (2026.05)1777, write OK1777 OKOK
Podman 5.8.4 + runc 1.1.5 (2026.10)root 755, write deniedignored, deniedOK
Podman 5.8.4 + runc 1.5.2root 755, denied1777 OKOK

Same with --read-only. Podman alone behaves the same from 4.9 to 5.8. The difference comes from the OCI runtime.

Suggested fixes (either one)

  1. Add an option to container name <n> tmpfs <t>, e.g. chown (maps to the U mount option), and/or mode (tmpfs-mode). U is the only one that works with runc 1.1.5.
  2. Ship a newer runc, so that a mode option would be honoured.

Workaround
Use a volume on a host directory owned by the service user. Downside: pid files survive restarts.

Best,

Details

Version
2026.10.01-0035-rolling
Is it a breaking change?
Behavior change
Issue type
Bug (incorrect behavior)