我用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则在意。这样对吗?
 为什么它们有不同的机制?

非常感谢你。

最佳答案

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

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


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

mkdir(1)所做的等效的Python代码:

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

关于python - 为什么python中os.mkdir设置权限的方式与bash中mkdir设置权限的方式不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46588363/

10-12 22:10