fix podman-remote save -f oci-dir/docker-dir

With podman-remote we do not enter a our user namespace like we do with
local podman so we keep running with the real user id.

So if we then try to use chrootarchive as normal user it fails with:
creating mount namespace before pivot: operation not permitted

So simply revert back to the normal archive code.

Now the more interesting thing is we do have a test
"podman save to directory with oci format" but it never runs
rootless+remote in our CI system with our current matrix as we wanted to
reduce jobs.
So rethink the matrix and add one such job as this shows it is needed.

Fixes: 25aee24cbd ("use chrootarchive over plain archive package")

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
Paul Holzinger 2026-06-10 16:02:40 +02:00
parent 0454af479f
commit fd07b9c6ec
No known key found for this signature in database
GPG key ID: EB145DD938A3CAF2
2 changed files with 10 additions and 4 deletions

View file

@ -339,8 +339,15 @@ jobs:
priv: [rootless, root]
mode: [local, remote]
exclude:
# try to keep the task somewhat sane and not run remote test rootless
- priv: rootless
# try to keep the task somewhat sane and exclude all but one rootless+remote combination
- distro: fedora-prior
priv: rootless
mode: remote
- distro: fedora-rawhide
priv: rootless
mode: remote
- distro: debian-sid
priv: rootless
mode: remote
include:
# Add buildah bud tests, only runs as root for now.

View file

@ -24,7 +24,6 @@ import (
"go.podman.io/podman/v6/pkg/domain/utils"
"go.podman.io/podman/v6/pkg/errorhandling"
"go.podman.io/storage/pkg/archive"
"go.podman.io/storage/pkg/chrootarchive"
)
func (ir *ImageEngine) Exists(_ context.Context, nameOrID string) (*entities.BoolReport, error) {
@ -368,7 +367,7 @@ func (ir *ImageEngine) Save(_ context.Context, nameOrID string, tags []string, o
return err
}
return chrootarchive.Untar(f, opts.Output, &archive.TarOptions{NoLchown: true})
return archive.Untar(f, opts.Output, &archive.TarOptions{NoLchown: true})
}
func (ir *ImageEngine) Search(_ context.Context, term string, opts entities.ImageSearchOptions) ([]entities.ImageSearchReport, error) {