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/rootless/rootless_linux.go | |
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/rootless/rootless_linux.go')
-rw-r--r-- | pkg/rootless/rootless_linux.go | 32 |
1 files changed, 31 insertions, 1 deletions
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) { |