【问题标题】:A folder created with os.Mkdir() has incorrect permissions使用 os.Mkdir() 创建的文件夹权限不正确
【发布时间】:2015-07-05 20:35:20
【问题描述】:

我正在使用 os.Mkdir() 在 go 中创建一个文件夹。虽然它确实被创建了,但它不具备我期望的权限。

这是我用来创建目录的代码:

package main

import (
    "fmt"
    "os"
)

func main() {
    err := os.Mkdir("/var/run/testdir", 0777)
    if err != nil {
        fmt.Println("could not create dir: %s", err.Error())
        err = nil
    }
}

由于我已将“0777”作为参数,我希望创建的目录对每个人都具有完全权限。然而它有:

drwxr-xr-x  2 root       root         40 Apr 27 11:43 testdir/

我在这里做错了什么?

【问题讨论】:

  • 检查你的 umask :-)
  • 您可以通过在终端中输入umask(或umask -S)来执行此操作。您还可以尝试使用umask 077 设置一个临时的
  • 了解 umasks 的工作原理。为“预期”行为将 umask 设置为 0。

标签: go permissions directory


【解决方案1】:

创建的文件夹将获得的实际权限是您指定的权限 (0777) 和您的进程(正在运行的 Go 程序)的活动 umask 的结果。

这很可能是创建的文件夹缺少组和其他访问的写入权限的原因。

您可以在Wikipedia 上阅读有关umask 的更多信息。

【讨论】:

猜你喜欢
  • 2011-10-01
  • 2018-10-04
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 2015-05-01
  • 2011-01-19
  • 2014-12-24
相关资源
最近更新 更多