我在 Ubuntu 18.04 上使用 Go (golang) 1.14文件排列如下: parent/,它是工作目录。当我使用os.MkdirAll("dir/subdir", 0777)它确实使文件看起来像 parent/dir/subdir但是 dir 的文件权限 drwxrwxr-x并不drwxrwxrwx像我预期的那样。使用 0666 权限,我的权限被拒绝。
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
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
- 1 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消