diff options
author | Giuseppe Scrivano <gscrivan@redhat.com> | 2019-03-08 12:06:16 +0100 |
---|---|---|
committer | Giuseppe Scrivano <gscrivan@redhat.com> | 2019-03-11 11:48:28 +0100 |
commit | 231129e4dc083d9f63cf1876cc1695f7f8c03f25 (patch) | |
tree | 4113cdca5717e8d7a1e0cc97694f03fa1e903410 /cmd/podman/pod_rm.go | |
parent | 35432ecaae4a8372a6f40a6cac476f0140094c7c (diff) | |
download | podman-231129e4dc083d9f63cf1876cc1695f7f8c03f25.tar.gz podman-231129e4dc083d9f63cf1876cc1695f7f8c03f25.tar.bz2 podman-231129e4dc083d9f63cf1876cc1695f7f8c03f25.zip |
rootless: fix pod stop|rm if uid in the container != 0
join the user namespace where the pod is running, so that we can both
manage the storage and correctly send the kill signal to a process
which is not running as root in the namespace.
Closes: https://github.com/containers/libpod/issues/2577
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Diffstat (limited to 'cmd/podman/pod_rm.go')
-rw-r--r-- | cmd/podman/pod_rm.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cmd/podman/pod_rm.go b/cmd/podman/pod_rm.go index a40992818..735676f8a 100644 --- a/cmd/podman/pod_rm.go +++ b/cmd/podman/pod_rm.go @@ -2,9 +2,11 @@ package main import ( "fmt" + "os" "github.com/containers/libpod/cmd/podman/cliconfig" "github.com/containers/libpod/pkg/adapter" + "github.com/containers/libpod/pkg/rootless" "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -46,11 +48,23 @@ func init() { // podRmCmd deletes pods func podRmCmd(c *cliconfig.PodRmValues) error { + if os.Geteuid() != 0 { + rootless.SetSkipStorageSetup(true) + } runtime, err := adapter.GetRuntime(&c.PodmanCommand) if err != nil { return errors.Wrapf(err, "could not get runtime") } defer runtime.Shutdown(false) + + if rootless.IsRootless() { + var err error + c.InputArgs, c.All, c.Latest, err = joinPodNS(runtime, c.All, c.Latest, c.InputArgs) + if err != nil { + return err + } + } + podRmIds, podRmErrors := runtime.RemovePods(getContext(), c) for _, p := range podRmIds { fmt.Println(p) |