英文:
Setting os.Mkdir permissions
问题
我正在尝试使用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程序无法正常工作。
英文:
I'm trying to create directories with certain permissions using os.Mkdir but I cannot make it work, for some reason.
My test program is:
package main
import (
        "log"
        "os"
)
func main() {                 
    err := os.Mkdir("testdir", 0775)
    if err != nil {              
        log.Print(err)
    }
}
However, the created directory has the default 0755 permissions:
drwxr-xr-x 2 user user 4096 Jan 10 10:14 testdir
A chmod from the shell works just fine, so I'm not sure why the Go program is not working.
答案1
得分: 4
创建文件时,类Unix系统使用权限掩码(umask)来创建默认权限。
如果umask值为0022,则新目录的最大权限为0755。新文件的最大权限为0644。
如果您想要创建具有权限0775的新目录,则必须将umask值设置为0002。
另一种解决方法是在创建文件后修改权限:使用os.Mkdir以默认权限创建文件,然后使用os.Chmod修改这些权限。
英文:
When creating a file, Unix-like system use a permission mask (umask) to create the default permissions.
With a umask value of 0022, new directories will be created with permissions 0755 at most. New files will have permissions 0644 at most.
If you want to create a new directory with permissions 0775, then you have to set your umask value to 0002.
An other way of working this around is to modify the permissions after creating the file : Create it with default permissions with os.Mkdir, then modify those permissions with os.Chmod.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论