summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pkg/rootless/rootless.go43
-rw-r--r--pkg/rootless/rootless_linux.go32
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) {