go新建文件权限与设置不符

lengfengchui · · 1567 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

fileName := "/Users/my/tests/perm_file" ```go f, _ := os.OpenFile(fileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) //代码 f.Close() ``` 上述代码是打开一个文件,如果文件不存在则创建一个新文件,同时权限设置为0666(-rw-rw-rw-),但实际生成的文件权限可能与你认为的不一致: > bogon:tests didi$ ll perm_file > -rw-r--r-- 1 my staff 0 1 12 16:06 perm_file 这个跟umask值相关,下面说明下umask - 功能说明:指定在建立文件时预设的权限掩码。 - 语  法:umask [-S][权限掩码] - 补充说明:umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。 - 参  数: - `-S`  以文字的方式来表示权限掩码。 - 文件:用八进制基数666,即无x位(可执行位)rw- rw- rw-.执行位需由用户自行加入。 umask就是系统的一个安全机制,通过设置不同的权限,可以达到限制用户操作的目的,有效地保证了文件的完整性。 接着说上面的例子 需要的权限是-rw-rw-rw-,但实际生成的文件权限是-rw-r–r–,用户组和其他用户的w权限被去掉了,查看下系统的umask值 > bogon:tests my $ umask > bogon:tests my $ umask > 0022 umask值是0022,r是4,w是2,x是1,对应如下 说明 所属用户 所属用户组 其他用户 需要的 -rw- rw- rw- 减去umask 0 2(w) 2(w) 得到 -rw- r– r–

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1567 次点击  
加入收藏 微博
1 回复  |  直到 2019-08-30 16:38:06
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传