我正在尝试使用创建一个目录os.Mkdir(),然后在其中创建文件,类似于此脚本:package mainimport ( "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.go2019/10/15 14:44:02 create file: open test_dir/file.txt: permission deniedexit status 1从https://golang.org/pkg/os/#FileMode我并不清楚如何指定FileMode以允许相同的脚本在新创建的目录中创建文件。我怎样才能实现这个目标?
2 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
0777我发现如果我将权限设置为:我可以在目录中创建文件
package main
import (
"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⏎
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
在这里,Go 尝试在 AUR 包安装期间在 /tmp 目录内创建。
所以我更改了 /tmp 中的权限:
chmod 0777 -R /tmp
但这还不够,所以我必须更改 /tmp 所有权(它是 root 的):
sudo chown -R "$USER":wheel /tmp
- 2 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消