我正在尝试使用 os.Mkdir 创建具有某些权限的目录,但由于某种原因我无法使其工作。
我的测试程序是:
package main
import (
"log"
"os"
)
func main() {
err := os.Mkdir("testdir", 0775)
if err != nil {
log.Print(err)
}
}
Run Code Online (Sandbox Code Playgroud)
但是创建的目录默认有0755权限:
drwxr-xr-x 2 user user 4096 Jan 10 10:14 testdir
Run Code Online (Sandbox Code Playgroud)
shell 中的 chmod 工作得很好,所以我不确定为什么 Go 程序不工作。
创建文件时,类Unix系统使用权限掩码(umask)来创建默认权限。
如果值为umask,则最多0022将创建具有权限的新目录。新文件最多0755有权限。0644
如果要创建具有权限的新目录0775,则必须将 umask 值设置为0002。
另一种解决此问题的方法是在创建文件后修改权限:使用默认权限创建文件os.Mkdir,然后使用 修改这些权限os.Chmod。