diff options
author | W. Trevor King <wking@tremily.us> | 2018-06-30 15:52:01 -0700 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-07-06 00:48:39 +0000 |
commit | 83968de28c37117d5e2ae6d713b30535fa6a163c (patch) | |
tree | 1e5d848e8ee2419104af65f744935d05076a08dd /pkg | |
parent | 4b54a471a49cfae617c65b2027ae1e7cc1671cfc (diff) | |
download | podman-83968de28c37117d5e2ae6d713b30535fa6a163c.tar.gz podman-83968de28c37117d5e2ae6d713b30535fa6a163c.tar.bz2 podman-83968de28c37117d5e2ae6d713b30535fa6a163c.zip |
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 <wking@tremily.us>
Closes: #1034
Approved by: baude
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/rootless/rootless.go | 43 | ||||
-rw-r--r-- | pkg/rootless/rootless_linux.go | 32 |
2 files changed, 31 insertions, 44 deletions
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) { |