猿问

尝试在新创建的目录中创建文件时出现“权限被拒绝”?

我正在尝试使用创建一个目录os.Mkdir(),然后在其中创建文件,类似于此脚本:


package main


import (

    "log"

    "os"

    "path"

)


func main() {

    dir := "test_dir"


    os.Mkdir(dir, os.ModeDir)


    fileName := path.Join(dir, "file.txt")


    _, err := os.Create(fileName)

    if err != nil {

        log.Fatalf("create file: %v", err)

    }

}

但是,如果我运行这个,我会得到


> go run fileperms.go

2019/10/15 14:44:02 create file: open test_dir/file.txt: permission denied

exit status 1

从https://golang.org/pkg/os/#FileMode我并不清楚如何指定FileMode以允许相同的脚本在新创建的目录中创建文件。我怎样才能实现这个目标?


料青山看我应如是
浏览 129回答 2
2回答

繁星点点滴滴

0777我发现如果我将权限设置为:我可以在目录中创建文件package mainimport (    "io/ioutil"    "os"    "path")func main() {    dir := "test_dir"    os.Mkdir(dir, 0777)    fileName := path.Join(dir, "file.txt")    ioutil.WriteFile(fileName, []byte("foobar"), 0666)}现在已使用预期内容创建了文件:> cat test_dir/file.txt foobar⏎ 

天涯尽头无女友

在这里,Go 尝试在 AUR 包安装期间在 /tmp 目录内创建。所以我更改了 /tmp 中的权限:chmod 0777 -R /tmp但这还不够,所以我必须更改 /tmp 所有权(它是 root 的):sudo chown -R "$USER":wheel /tmp
随时随地看视频慕课网APP

相关分类

Go
我要回答