我尝试使用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程序为什么不起作用。
答案 0 :(得分:2)
创建文件时,类Unix系统使用权限掩码(umask)来创建默认权限。
如果umask
值为0022
,则最多会创建一个权限为0755
的新目录。新文件最多只有0644
个权限。
如果要创建具有权限0775
的新目录,则必须将umask值设置为0002
。
另一种解决方法是在创建文件后修改权限:使用os.Mkdir
创建默认权限,然后使用os.Chmod
修改这些权限。