create a directory with normal permission in go

huangapple go评论82阅读模式
英文:

create a directory with normal permission in go

问题

你可以使用os.Mkdir方法创建一个具有普通权限(例如八进制表示法中的0700)的目录。要正确设置perm值,你可以使用os.FileMode类型来表示权限。在这种情况下,你可以使用os.FileMode(0700)来设置权限值。下面是一个示例代码:

package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.Mkdir("mydir", os.FileMode(0700))
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("Directory created successfully.")
}

这段代码将创建一个名为"mydir"的目录,并将其权限设置为0700。如果目录创建成功,将打印"Directory created successfully."。

英文:

How can I create a directory with normal permissions (say 0700 in octal notation) with the os.Mkdir method. I did not manage to find how to set the perm value correctly.

答案1

得分: 8

你可以直接使用八进制表示法:

os.Mkdir("dirname", 0700)

根据FileMode的文档

最低有效的9位是标准的Unix rwxrwxrwx权限

模式位被定义为你可以像使用chmod一样使用正常的八进制表示法。然而,你必须在前面加上一个零来告诉Go它是一个八进制字面量。

另外,请记住,第四个数字在chmod中不存在。在chmod中,你可以使用1700来设置粘滞位。在Go中,你需要通过类似以下方式设置操作系统库中定义的位:0700 | os.ModeSticky

英文:

You can use that octal notation directly:

os.Mkdir("dirname", 0700)

From the documentation for FileMode:

>The nine least-significant bits are the standard Unix rwxrwxrwx permissions

The mode bits are defined so that you may use normal octal notation just as you would with chmod. However, you must prefix it with a zero to tell Go it is an octal literal.

Also, remember that the 4th number doesn't exist like it does in chmod. With chmod, you could do 1700 to set the sticky bit. In Go, you would need to set the bit defined in the OS lib by doing something like: 0700 | os.ModeSticky

huangapple
  • 本文由 发表于 2014年4月7日 02:38:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/22898236.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定