在大多数地方,权限被定义为0777
格式的八进制数。但是在我的理解中,UNIX的umask
命令(因此os.umask()
)需要0o000
来生成0o777
和0o022
的权限位等于0o755
。
我听说UNIX的umask
由于某种原因被颠倒了,我不明白其背后的原因。有人可以解释一下这种不一致吗?
答案 0 :(得分:11)
没有真正的不一致,因为umask
和chmod
之间的关系可以纯粹用方程式写下来。显然,umask
设置了chmod
的反面,它在过去就像这样创建了。
示例:022
(默认通常umask
)创建755
。它的工作原理如下:
7 - 0 = 7
成为第一个字节7 - 2 = 5
成为第二个和第三个字节使用此示例,umask 777
会创建一个chmod 000
的文件,umask 112
将等于chmod 664
。据我所知,这是因为最初创建umask
命令是为了指示文件在 NOT 创建之后具有哪些权限位(因此是反转)。 / p>
虽然它可能令人讨厌,但它并不难以适应它。只需考虑如何chmod
您的文件,并从7
中减去所需的字节,您将获得umask
值。或者,当您在IDE中编写代码时,不要使用umask
,而是创建文件(当然使用默认的umask
),然后在Python中使用{ {1}}而不是。