2017-10-05 35 views
2

我使用bash中的mkdir和python中的os.mkdir在文件模式下创建了目录。 他们制作了具有不同权限的目录。为什么在python中通过os.mkdir设置权限的方式与bash中的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没有。这样对吗? 为什么他们有不同的机制?

非常感谢。

+0

我不知道答案了蝙蝠,但我猜Python使用它自己的umask ...奔头成和(DIS )确认 – amphibient

回答

1

mkdir(1)temporarily setting the umask为0,如果你指定的模式,按照手册中的含糊记录:

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

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

等效Python代码什么mkdir(1)是这样做的:

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

谢谢你回答。即使在你的解决方案的python代码中,我也会使用bash方式。再次感谢你。 – mora

相关问题