我正在尝试使用操作系统创建具有某些权限的目录。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
来自外壳的chmod工作得很好,所以我不确定为什么Go程序不起作用。
创建文件时,类Unix系统使用权限掩码(umask)来创建默认权限。
如果umask
值为 0022
,将创建具有最多0755
权限的新目录。新文件最多具有0644
的权限。
如果要创建具有权限的新目录 0775
,则必须将掩码值设置为 0002
。
另一种解决方法是在创建文件后修改权限:使用 os.Mkdir
使用默认权限创建它,然后使用 os.Chmod
修改这些权限。