run: ignore PODMAN_USERNS with --pod
the combination --pod and --userns is already blocked. Ignore the PODMAN_USERNS variable when a pod is used, since it would cause to create a new user namespace for the container. Ideally a container should be able to do that, but its user namespace must be a child of the pod user namespace, not a sibling. Since nested user namespaces are not allowed in the OCI runtime specs, disallow this case, since the end result is just confusing for the user. Closes: https://github.com/containers/podman/issues/18580 Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
parent
a1201843fd
commit
192ad70e98
|
|
@ -4,7 +4,7 @@
|
|||
####> are applicable to all of those.
|
||||
#### **--userns**=*mode*
|
||||
|
||||
Set the user namespace mode for the container. It defaults to the **PODMAN_USERNS** environment variable. An empty value ("") means user namespaces are disabled unless an explicit mapping is set with the **--uidmap** and **--gidmap** options.
|
||||
Set the user namespace mode for the container. It defaults to the **PODMAN_USERNS** environment variable unless `--pod` is specified. An empty value ("") means user namespaces are disabled unless an explicit mapping is set with the **--uidmap** and **--gidmap** options.
|
||||
|
||||
This option is incompatible with **--gidmap**, **--uidmap**, **--subuidname** and **--subgidname**.
|
||||
|
||||
|
|
|
|||
|
|
@ -220,9 +220,9 @@ func setNamespaces(s *specgen.SpecGenerator, c *entities.ContainerCreateOptions)
|
|||
return err
|
||||
}
|
||||
}
|
||||
userns := os.Getenv("PODMAN_USERNS")
|
||||
if c.UserNS != "" {
|
||||
userns = c.UserNS
|
||||
userns := c.UserNS
|
||||
if userns == "" && c.Pod == "" {
|
||||
userns = os.Getenv("PODMAN_USERNS")
|
||||
}
|
||||
// userns must be treated differently
|
||||
if userns != "" {
|
||||
|
|
|
|||
|
|
@ -395,6 +395,11 @@ var _ = Describe("Podman UserNS support", func() {
|
|||
inspect.WaitWithDefaultTimeout()
|
||||
Expect(inspect.OutputToString()).To(Not(Equal("<nil>")))
|
||||
|
||||
// --pod should work.
|
||||
result = podmanTest.Podman([]string{"create", "--pod=new:new-pod", ALPINE, "true"})
|
||||
result.WaitWithDefaultTimeout()
|
||||
Expect(result).Should(Exit(0))
|
||||
|
||||
if IsRemote() {
|
||||
podmanTest.RestartRemoteService()
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue