linux - MkdirAll 权限不适合 linux 权限
问题描述
我在 Ubuntu 18.04 上使用 Go (golang) 1.14
文件排列如下: parent/,它是工作目录。
当我使用
os.MkdirAll("dir/subdir", 0777)
它确实使文件看起来像 parent/dir/subdir
但是 dir 的文件权限
drwxrwxr-x
并不drwxrwxrwx
像我预期的那样。使用 0666 权限,我的权限被拒绝。
解决方案
Ubuntu的默认设置umask
是:
# umask
0002
因此它将w
从您mkdir
的权限中删除用户权限。
取消设置,你的程序应该获得你想要的权限:
# umask 0
# go build -o mkd ./main.go && ./mkd
$ ls -al dir/
drwxrwxrwx 3 me me 4096 Mar 17 10:27 .
drwxrwxr-x 7 me me 4096 Mar 17 10:27 ..
drwxrwxrwx 2 me me 4096 Mar 17 10:27 subdir
注意:如果您想确保不篡改 umask 并且只为您的 exe 执行此操作,请使用子 shell 技术:
# (umask 0 && ./mkd)
或通过包装脚本启动:
#!/bin/bash
cd `dirname "$0"`
umask 0
./mkd $* # <- passes along any arguments
推荐阅读
- jquery - jquery blueimp文件上传获取对变量的响应
- javascript - Polymer 3.0 iron-ajax 返回空响应
- c# - 如何在 Unity ARKit 插件中处理 ARAnchor 合并/替换
- javascript - 使用 web3-core-promievent 创建一个返回 PromiEvent 的函数
- anaconda - 如何在应用程序查看器中获取 Ubuntu 18 上的 Anaconda 图标
- jsf - primefaces 和 inputtextarea 无法复制
- javascript - Google 脚本编辑器:适用于除 3 个特定工作表之外的所有工作表
- d3.js - D3.js 带有两条尾巴的钟形曲线图
- tensorflow - 简单的自定义 Keras 度量函数的问题无法返回 Argmax?
- oracle - 如何从在 oracle 中有 100 个包的包中查找哪些过程正在执行插入/更新操作