我用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/