【问题标题】:Why do I need to set permissions when calling OpenFile?为什么调用 OpenFile 时需要设置权限?
【发布时间】:2018-12-13 20:29:30
【问题描述】:

我了解权限对于存储在文件系统中的文件和目录意味着什么。 但是为什么我需要设置权限调用os.OpenFile时? 如果成功打开,它会更新文件系统上的文件权限吗? 如果不是 - 使用 0000 或 0777 打开同一个文件有什么区别?

https://golang.org/src/os/file.go?s=8454:8520#L272

func OpenFile(name string, flag int, perm FileMode) (*File, error)
...
f, err := os.OpenFile("access.log", os.O_APPEND, 0644)

【问题讨论】:

    标签: go


    【解决方案1】:

    作为documented(强调):

    OpenFile 是广义的 open 调用;大多数用户会改用 Open 或 Create 。它使用指定的标志(O_RDONLY 等)和 perm(在 umask 之前)打开命名文件(如果适用)。如果成功,则返回的 File 上的方法可用于 I/O。如果有错误,它将是 *PathError 类型。

    因此,perm 值仅在创建文件时使用——打开现有文件时,它不适用,因此被忽略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2012-09-06
      • 1970-01-01
      相关资源
      最近更新 更多