首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ioutils.WriteFile()不尊重权限

ioutils.WriteFile()不尊重权限
EN

Stack Overflow用户
提问于 2018-05-09 16:23:05
回答 1查看 7.7K关注 0票数 4

我试图使用ioutils.WriteFile(),但出于某种原因,它忽略了我给它的0777权限。

代码语言:javascript
复制
package main

import (
    "io/ioutil"
    "os"
)

func main() {

    // normal permissions
    if err := ioutil.WriteFile("cant-touch-this-0644", []byte{}, 0644); err != nil {
            panic(err)
    }


    // full permissions
    if err := ioutil.WriteFile("cant-touch-this-0777", []byte{}, 0777); err != nil {
            panic(err)
    }


    // normal permissions + chmod to full
    if err := ioutil.WriteFile("cant-touch-this-mixed", []byte{}, 0755); err != nil {
            panic(err)
    }

    if err := os.Chmod("cant-touch-this-mixed", 0777); err != nil {
            panic(err)
    }
}

我从中得到的输出是:

代码语言:javascript
复制
$ ls -l
-rw-r--r--  1 edson edson    0 May  9 17:19  cant-touch-this-0644
-rwxr-xr-x  1 edson edson    0 May  9 17:19  cant-touch-this-0777
-rwxrwxrwx  1 edson edson    0 May  9 17:19  cant-touch-this-mixed

这意味着:

  • 第一种情况(0644)起作用了
  • 第二个(0777)被忽略了。
  • 获得完整的0777权限的唯一方法是使用os.Chmod (类似于第三种场景)。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-12-21 07:46:19

正如关于这个问题的评论所述,这是因为乌木斯克起了作用。取消掩码控制如何为新创建的文件设置文件权限。当umask为022时,要创建为666的文件将为644 (从组和其他权限中移除写权限)。您可以使用umask命令检查目录的umask。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50257981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档