Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 不允许创建命名空间操作?_Go_Namespaces - Fatal编程技术网

Go 不允许创建命名空间操作?

Go 不允许创建命名空间操作?,go,namespaces,Go,Namespaces,我正在学习Linux名称空间,并试图通过golang创建一个UTS名称空间。这是我的密码 func main() { cmd := exec.Command("sh") cmd.SysProcAttr = &syscall.SysProcAttr{ Cloneflags: syscall.CLONE_NEWUTS, } cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stder

我正在学习Linux名称空间,并试图通过golang创建一个UTS名称空间。这是我的密码

func main() {
    cmd := exec.Command("sh")
    cmd.SysProcAttr = &syscall.SysProcAttr{
        Cloneflags: syscall.CLONE_NEWUTS,
    }
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
}
当我执行
go run uts.go
时,我得到了错误
fork/exec/bin/sh:operation not allowed
。我的操作系统是
Ubuntu 18.04.3
,Linux Kerenl版本是
5.0.0-32-generic
克隆新用户(从Linux 2.6.19开始)
联塞特派团(2);其中,域名和主机名可以是
分别由setdomainname(2)和sethostname(2)修改。
对UTS命名空间中的标识符所做的更改是可见的
指向同一命名空间中的所有其他进程,但不是
对其他UTS命名空间中的进程可见

只有特权进程(CAP\u SYS\u ADMIN)可以使用
克隆NEWUTS。

改为构建程序,然后以sudo的形式运行可执行文件

加油,加油


sudo./uts

来自文档:“只有特权进程(CAP\u SYS\u ADMIN)才能使用CLONE\u NEWUTS”。您的流程是否有
CAP\u SYS\u ADMIN
?@JimB不,thks,我知道原因。