doudanglang5826 2015-12-25 01:53
浏览 169
已采纳

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

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

os.FileMode(stringToInt("0777"))

when no conversion to int is required (leading zero is not removed) by setting the permission directly:

os.FileMode(0777)

the file permissions are correct

Current outcome

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

Expected outcome

777
-rwxrwxrwx
753
-r-xr-x-wx
500
-r-x------
  • 写回答

1条回答 默认 最新

  • doumou1864 2015-12-25 15:48
    关注

    Based on the comments of @AdamSmith and @JamesHenstridge the following solves the issue:

    mode, _ := strconv.ParseInt(fileAttributes["mode"], 8, 32)
    
    0777
    511
    -rwxrwxrwx
    0753
    491
    -r-xr-x-wx
    0500
    320
    -r-x------
    

    However when the leading zeros have been removed the outcome is exactly the same:

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

    In conclusion, the leading zeros are not required at all. It was the incorrect type that was causing the issue.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM