为什么python中的os.mkdir设置权限的方式和bash中的mkdir设置权限的方式不一样?
Why is the way of setting permission by os.mkdir in python different from one of mkdir in bash?
我在 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)
系统调用。
mkdir(1)
的等效 Python 代码:
m = os.umask(0)
os.mkdir("ccc")
os.umask(m)
我在 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)
系统调用。
mkdir(1)
的等效 Python 代码:
m = os.umask(0)
os.mkdir("ccc")
os.umask(m)