为什么使用Golang设置的文件权限与预期不同?

时间:2015-12-25 01:53:59

标签: string file go permissions int

func stringToInt(s string) int {
    i, err := strconv.Atoi(s)
    check(err)
    return i
}

os.FileMode(stringToInt("0777"))

通过直接设置权限,不需要转换为int(不删除前导零):

os.FileMode(0777)

文件权限正确

当前结果

777
777
-r----x--x
753
753
--wxrw---x
500
500
-rwxrw-r--

预期结果

777
-rwxrwxrwx
753
-r-xr-x-wx
500
-r-x------

1 个答案:

答案 0 :(得分:0)

基于@AdamSmith和@JamesHenstridge的评论,以下内容解决了这个问题:

mode, _ := strconv.ParseInt(fileAttributes["mode"], 8, 32)

0777
511
-rwxrwxrwx
0753
491
-r-xr-x-wx
0500
320
-r-x------

然而,当删除前导零时,结果完全相同:

777
511
-rwxrwxrwx
753
491
-r-xr-x-wx
500
320
-r-x------

总之,根本不需要前导零。导致问题的是不正确的类型。