【问题标题】:Why are the file permissions that are set using Golang different than expected?为什么使用 Golang 设置的文件权限与预期不同?
【发布时间】:2016-03-31 06:54:57
【问题描述】:
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------

【问题讨论】:

  • 您期望"0777" 被解释为八进制的问题吗?
  • 0777777 不同的唯一上下文是字符串。如果您将其转换为int,那么它当然会丢失其前导数字。正如@JamesHenstridge 所问:你认为0777777 base 8 吗?

标签: string file go permissions int


【解决方案1】:

基于@AdamSmith 和@JamesHenstridge 的cmets,以下解决了该问题:

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------

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 2013-11-14
    • 2014-11-09
    • 1970-01-01
    相关资源
    最近更新 更多