【问题标题】:Why is the way of setting permission by os.mkdir in python different from one of mkdir in bash?为什么在 python 中通过 os.mkdir 设置权限的方式与 bash 中的 mkdir 不同?
【发布时间】:2018-03-17 05:37:39
【问题描述】:

我通过 bash 中的 mkdir 和 python 中的 os.mkdir 创建了具有文件模式的目录。 他们创建了具有不同权限的目录。

我在命令行中的测试代码如下,

$ mkdir -m 0775 aaa
$ cd aaa
$ mkdir -m 0777 bbb
$ python -c 'import os; os.mkdir("ccc",0o777)'

目录、aaa、bbb、ccc的权限如下

directory aaa: drwxrwxr-x
directory bbb: drwxrwxrwx
directory ccc: drwxrwxr-x

似乎 bash 中的 mkdir 不关心父目录的权限,但 python 中的 os.mkdir 关心。这样对吗? 为什么它们有不同的机制?

非常感谢。

【问题讨论】:

  • 我不知道答案,但我猜 python 使用它自己的 umask... 需要查看和(dis)确认的东西

标签: python bash umask


【解决方案1】:

mkdir(1)temporarily setting the umask 到 0,如果您指定模式,如手册中神秘记录的那样:

   -m, --mode=MODE
          set file mode (as in chmod), not a=rwx - umask

Python 只是使用给定的模式和通常的 umask 行为调用 mkdir(2) 系统调用。

mkdir(1) 正在执行的操作等效的 Python 代码:

m = os.umask(0)
os.mkdir("ccc")
os.umask(m)

【讨论】:

  • 感谢您的回答。即使在您的解决方案中,我也会在 python 代码中使用 bash 方式。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2016-07-28
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2016-03-21
  • 2022-07-26
  • 1970-01-01
相关资源
最近更新 更多