From: sgf Date: Thu, 12 Oct 2023 17:32:01 +0000 (+0300) Subject: save X-Git-Url: https://gitweb.sgf-dma.tk/?a=commitdiff_plain;h=00defc6c21dbe5bfd25f4afd30c6fd9a789225c0;p=go.git save --- diff --git a/containers_from_scratch/main.go b/containers_from_scratch/main.go index d715f90..31efd2f 100644 --- a/containers_from_scratch/main.go +++ b/containers_from_scratch/main.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "os/exec" + "syscall" ) func main() { @@ -16,6 +17,7 @@ func main() { } } +// FIXME: Can i pre-create namespace and preserve it using mount bind? func run() { fmt.Printf("Running %v\n", os.Args[2:]) @@ -24,9 +26,15 @@ func run() { cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr + cmd.SysProcAttr = &syscall.SysProcAttr { + Cloneflags: syscall.CLONE_NEWUTS|syscall.CLONE_NEWUSER|syscall.CLONE_NEWNS, + UidMappings: []syscall.SysProcIDMap{{0, 1000, 1}}, + GidMappings: []syscall.SysProcIDMap{{0, 1000, 1}}, + } - fmt.Printf("SHLVL=%v\n", os.Getenv("SHLVL")) - err := cmd.Run() + err := cmd.Start() fmt.Println(err) + fmt.Printf("Created pid %v\n", cmd.Process.Pid) + cmd.Wait() }