mirror of https://github.com/containers/podman.git
Merge pull request #22245 from giuseppe/do-not-chown-again-with-U
container: do not chown to dest target with U
This commit is contained in:
commit
0106e5929d
|
@ -2882,8 +2882,13 @@ func (c *Container) fixVolumePermissions(v *ContainerNamedVolume) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the new volume matches the permissions of the target directory.
|
// Make sure the new volume matches the permissions of the target directory unless 'U' is
|
||||||
|
// provided (since the volume was already chowned in this case).
|
||||||
// https://github.com/containers/podman/issues/10188
|
// https://github.com/containers/podman/issues/10188
|
||||||
|
if slices.Contains(v.Options, "U") {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
st, err := os.Lstat(filepath.Join(c.state.Mountpoint, v.Dest))
|
st, err := os.Lstat(filepath.Join(c.state.Mountpoint, v.Dest))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if stat, ok := st.Sys().(*syscall.Stat_t); ok {
|
if stat, ok := st.Sys().(*syscall.Stat_t); ok {
|
||||||
|
|
|
@ -740,15 +740,6 @@ VOLUME /test/`, ALPINE)
|
||||||
Skip("cannot find mappings for the current user")
|
Skip("cannot find mappings for the current user")
|
||||||
}
|
}
|
||||||
|
|
||||||
if os.Getenv("container") != "" {
|
|
||||||
Skip("Overlay mounts not supported when running in a container")
|
|
||||||
}
|
|
||||||
if isRootless() {
|
|
||||||
if _, err := exec.LookPath("fuse_overlay"); err != nil {
|
|
||||||
Skip("Fuse-Overlayfs required for rootless overlay mount test")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mountPath := filepath.Join(podmanTest.TempDir, "secrets")
|
mountPath := filepath.Join(podmanTest.TempDir, "secrets")
|
||||||
err = os.Mkdir(mountPath, 0755)
|
err = os.Mkdir(mountPath, 0755)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -759,6 +750,12 @@ VOLUME /test/`, ALPINE)
|
||||||
Expect(session).Should(ExitCleanly())
|
Expect(session).Should(ExitCleanly())
|
||||||
Expect(session.OutputToString()).To(ContainSubstring("888:888"))
|
Expect(session.OutputToString()).To(ContainSubstring("888:888"))
|
||||||
|
|
||||||
|
// test with an existing directory in the image
|
||||||
|
session = podmanTest.Podman([]string{"run", "--rm", "--user", "881:882", "-v", "NAMED-VOLUME:/mnt:U", ALPINE, "stat", "-c", "%u:%g", "/mnt"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session).Should(ExitCleanly())
|
||||||
|
Expect(session.OutputToString()).To(ContainSubstring("881:882"))
|
||||||
|
|
||||||
session = podmanTest.Podman([]string{"run", "--rm", "--user", "888:888", "--userns", "auto", "-v", vol, ALPINE, "stat", "-c", "%u:%g", dest})
|
session = podmanTest.Podman([]string{"run", "--rm", "--user", "888:888", "--userns", "auto", "-v", vol, ALPINE, "stat", "-c", "%u:%g", dest})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session).Should(ExitCleanly())
|
Expect(session).Should(ExitCleanly())
|
||||||
|
|
Loading…
Reference in New Issue