$ crio --version
crio version 1.35.0
GitCommit: unknown
GitCommitDate: unknown
GitTreeState: clean
BuildDate: 2025-12-28T11:36:21Z
GoVersion: go1.25.5 X:nodwarf5
Compiler: gc
Platform: linux/amd64
Linkmode: dynamic
BuildTags:
containers_image_ostree_stub
apparmor
seccomp
LDFlags: -X github.com/cri-o/cri-o/internal/version.buildDate=2025-12-28T11:36:21Z -compressdwarf=false -linkmode external
SeccompEnabled: true
AppArmorEnabled: false
$ kubectl version --output=json
{
"clientVersion": {
"major": "1",
"minor": "35",
"gitVersion": "v1.35.2",
"gitCommit": "fdc9d74cbf2da6754ebf81d56f80ae2948cd6425",
"gitTreeState": "archive",
"buildDate": "1980-01-01T00:00:00Z",
"goVersion": "go1.25.7",
"compiler": "gc",
"platform": "linux/amd64"
},
"kustomizeVersion": "v5.7.1",
"serverVersion": {
"major": "1",
"minor": "35",
"emulationMajor": "1",
"emulationMinor": "35",
"minCompatibilityMajor": "1",
"minCompatibilityMinor": "34",
"gitVersion": "v1.35.1+k0s",
"gitCommit": "8fea90b45245ef5c8ba54e7ae044d3e777c22500",
"gitTreeState": "clean",
"buildDate": "2026-02-18T10:30:25Z",
"goVersion": "go1.25.7",
"compiler": "gc",
"platform": "linux/amd64"
}
}
What happened?
When running a pod with CRI-O and fuse-overlayfs as storage driver, and enable user namespaces for a pod ( by setting
hostUsers: false) the rootfs of the container will be mounted as owned by nobody:nobody and makes it completely unwritable.What did you expect to happen?
rootfs should be mounted as owned by the mapped inner root, making inner root able to write to the directory.
How can we reproduce it (as minimally and precisely as possible)?
Start CRI-O with following
/etc/containers/storage.conf:And running a pod with:
Then do
Showing / is owned by nobody:nobody
Anything else we need to know?
No response
CRI-O and Kubernetes version
Details
OS version
Details
Additional environment details (AWS, VirtualBox, physical, etc.)
Details
N/A