linux user namespace 笔记

映射当前用户用户成子进程的root,用来隔离user namespace

子user namespace 在父 user namespace中是普通用户,在子user namespace中是超级用户(超级用户只相对于子user namespace所拥有的资源,无法访问其他user namespace中需要超级用户才能访问资源)。

通过id查看

package main

import (

"log"

"os"

"os/exec"

"syscall"

)

func main() {

cmd := exec.Command("/bin/bash")

cmd.Stdout = os.Stdout

cmd.Stderr = os.Stderr

cmd.Stdin = os.Stdin

cmd.SysProcAttr = &syscall.SysProcAttr{}

cmd.SysProcAttr.Cloneflags = syscall.CLONE_NEWUSER

cmd.SysProcAttr.UidMappings = []syscall.SysProcIDMap{

{ContainerID: 0, HostID: syscall.Getuid(), Size: 1},

}

cmd.SysProcAttr.GidMappings = []syscall.SysProcIDMap{

{ContainerID: 0, HostID: syscall.Getgid(), Size: 1},

}

if err := cmd.Run(); err != nil {

log.Fatal(err)

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。