设置os.Mkdir权限

时间:2017-01-10 09:18:31

标签: go

我尝试使用os.Mkdir创建具有特定权限的目录,但出于某种原因我无法使其正常工作。

我的测试程序是:

package main

import (
        "log"
        "os"
)

func main() {                 
    err := os.Mkdir("testdir", 0775)
    if err != nil {              
        log.Print(err)
    }
}

但是,创建的目录具有默认的0755权限:

drwxr-xr-x 2 user user 4096 Jan 10 10:14 testdir

来自shell的chmod工作得很好,所以我不确定Go程序为什么不起作用。

1 个答案:

答案 0 :(得分:2)

创建文件时,类Unix系统使用权限掩码(umask)来创建默认权限。

如果umask值为0022,则最多会创建一个权限为0755的新目录。新文件最多只有0644个权限。

如果要创建具有权限0775的新目录,则必须将umask值设置为0002

另一种解决方法是在创建文件后修改权限:使用os.Mkdir创建默认权限,然后使用os.Chmod修改这些权限。