From 83968de28c37117d5e2ae6d713b30535fa6a163c Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Sat, 30 Jun 2018 15:52:01 -0700 Subject: rootless: Merge rootless.go back into rootless_linux.go The files were split apart by b96be3af (changes to allow for darwin compilation, 2018-06-20, #1015), but the C import and two functions left in rootless.go are all Linux-specific as well. This commit moves all of the pre-b96be3af rootless.go into rootless_linux.go, just adding the '// +build linux' header (b96be3af also scrambled the + in that header) and keeping the new GetRootlessUID from a1545fe6 (rootless: add function to retrieve the original UID, 2018-07-05, #1048). Signed-off-by: W. Trevor King Closes: #1034 Approved by: baude --- pkg/rootless/rootless.go | 43 ------------------------------------------ pkg/rootless/rootless_linux.go | 32 ++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 44 deletions(-) delete mode 100644 pkg/rootless/rootless.go diff --git a/pkg/rootless/rootless.go b/pkg/rootless/rootless.go deleted file mode 100644 index ca851f9bc..000000000 --- a/pkg/rootless/rootless.go +++ /dev/null @@ -1,43 +0,0 @@ -package rootless - -import ( - "fmt" - "github.com/containers/storage/pkg/idtools" - "os" - "os/exec" -) - -/* -extern int reexec_in_user_namespace(int ready); -extern int reexec_in_user_namespace_wait(int pid); -*/ -import "C" - -func runInUser() error { - os.Setenv("_LIBPOD_USERNS_CONFIGURED", "done") - return nil -} - -func tryMappingTool(tool string, pid int, hostID int, mappings []idtools.IDMap) error { - path, err := exec.LookPath(tool) - if err != nil { - return err - } - - appendTriplet := func(l []string, a, b, c int) []string { - return append(l, fmt.Sprintf("%d", a), fmt.Sprintf("%d", b), fmt.Sprintf("%d", c)) - } - - args := []string{path, fmt.Sprintf("%d", pid)} - args = appendTriplet(args, 0, hostID, 1) - if mappings != nil { - for _, i := range mappings { - args = appendTriplet(args, i.ContainerID+1, i.HostID, i.Size) - } - } - cmd := exec.Cmd{ - Path: path, - Args: args, - } - return cmd.Run() -} diff --git a/pkg/rootless/rootless_linux.go b/pkg/rootless/rootless_linux.go index 70fa6b152..55a55bbc6 100644 --- a/pkg/rootless/rootless_linux.go +++ b/pkg/rootless/rootless_linux.go @@ -1,4 +1,4 @@ -// build +linux +// +build linux package rootless @@ -6,6 +6,7 @@ import ( "fmt" "io/ioutil" "os" + "os/exec" gosignal "os/signal" "runtime" "strconv" @@ -22,6 +23,11 @@ extern int reexec_in_user_namespace_wait(int pid); */ import "C" +func runInUser() error { + os.Setenv("_LIBPOD_USERNS_CONFIGURED", "done") + return nil +} + // IsRootless tells us if we are running in rootless mode func IsRootless() bool { return os.Getuid() != 0 || os.Getenv("_LIBPOD_USERNS_CONFIGURED") != "" @@ -37,6 +43,30 @@ func GetRootlessUID() int { return os.Getuid() } +func tryMappingTool(tool string, pid int, hostID int, mappings []idtools.IDMap) error { + path, err := exec.LookPath(tool) + if err != nil { + return err + } + + appendTriplet := func(l []string, a, b, c int) []string { + return append(l, fmt.Sprintf("%d", a), fmt.Sprintf("%d", b), fmt.Sprintf("%d", c)) + } + + args := []string{path, fmt.Sprintf("%d", pid)} + args = appendTriplet(args, 0, hostID, 1) + if mappings != nil { + for _, i := range mappings { + args = appendTriplet(args, i.ContainerID+1, i.HostID, i.Size) + } + } + cmd := exec.Cmd{ + Path: path, + Args: args, + } + return cmd.Run() +} + // BecomeRootInUserNS re-exec podman in a new userNS func BecomeRootInUserNS() (bool, error) { -- cgit v1.2.3-54-g00ecf