英文:
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
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论