golang使用os.Mkdir / fs.Mkdir创建文件夹失败

golang使用os.Mkdir / fs.Mkdir创建文件夹失败
ubuntu操作系统: 我现在需要在/etc/目录下创建一个文件夹viper,于是我编写了下面的代码
func TestViperInit(t *testing.T) {

    err := os.Mkdir("/etc/viper", 0700)
    if err != nil {
        log.Fatalln("err=", err)
    }
}

最后报错err= mkdir /etc/viper: permission denied.
于是我尝试用afero库提供的Mkdir接口,代码如下:

func TestViperInit(t *testing.T) {
    fs := afero.NewMemMapFs()

    err := fs.Mkdir("/etc/viper", 0700)
    if err != nil {
        log.Fatalln("err=", err)
    }
}

最终结果没有报错,但是在/etc目录下,并没有成功创建viper文件夹.
请问上面的现象是什么原因导致的?该怎么解决?

  • 第二个参数用 0777 或者 os.ModePerm, 先试试 os.Mkdir 行不行
  • 另外 Mkdir 只能创建一级目录, MkdirAll可以创建一级目录,也可以创建多级目录