登录
首页 >  Golang >  Go问答

在创建新目录时遇到"权限拒绝"错误?

来源:stackoverflow

时间:2024-03-01 23:15:26 182浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《在创建新目录时遇到"权限拒绝"错误?》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我尝试使用 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 以允许相同的脚本在新创建的目录中创建文件。我怎样才能实现这个目标?


解决方案


我发现如果我设置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⏎

这里,go 尝试在 aur 包安装期间在 /tmp 目录内创建。

所以我更改了 /tmp 中的权限:

64714​​7755681

但这还不够,所以我必须更改 /tmp 所有权(它是 root 的):

sudo chown -R "$USER":wheel /tmp

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在创建新目录时遇到"权限拒绝"错误?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>