package main
import (
"fmt"
"os"
"runtime"
"
golang.org/x/sys/unix"
)
func main() {
targetPid := "2356795"
runtime.LockOSThread()
defer runtime.UnlockOSThread()
userNsPath := fmt.Sprintf("/proc/%s/ns/user", targetPid)
fd, err := os.Open(userNsPath)
if err != nil {
fmt.Printf("Failed to open user namespace: %v\n", err)
return
}
defer fd.Close()
if err := unix.Setns(int(fd.Fd()), unix.CLONE_NEWUSER); err != nil {
fmt.Printf("Failed to setns: %v\n", err)
return
}
fmt.Println("Successfully entered user namespace")
ns, err := os.Readlink("/proc/self/ns/user")
if err != nil {
fmt.Printf("Failed to read /proc/self/ns/user: %v\n", err)
return
}
fmt.Println("Current /proc/self/ns/user:", ns)
}