在大多数地方,权限被定义为格式为的八进制数 0777
。但UNIX的 umask
命令(因此 os.umask()
)需要 0o000
生成权限位 0o777
和 0o022
等于 0o755
在我的理解中。
我听说过UNIX的 umask
由于某种原因倒转,我不明白其背后的原因。有人可以解释这个不一致吗?
在大多数地方,权限被定义为格式为的八进制数 0777
。但UNIX的 umask
命令(因此 os.umask()
)需要 0o000
生成权限位 0o777
和 0o022
等于 0o755
在我的理解中。
我听说过UNIX的 umask
由于某种原因倒转,我不明白其背后的原因。有人可以解释这个不一致吗?
没有真正的不一致,因为它们之间的关系 umask
和 chmod
纯粹可以用方程写下来。显然, umask
与此相反 chmod
,它在过去就像这样创造出来了。
例: 022
(默认通常 umask
)创造 755
。它的工作原理如下:
7 - 0 = 7
成为第一个字节7 - 2 = 5
成为第二个和第三个字节使用这个例子, umask 777
用。创建一个文件 chmod 000
, umask 112
将等于 chmod 664
。据我所知,这发生的原因是因为 umask
最初创建命令是为了指示文件的权限位 不 在它创建之后(因此转换)。
虽然它可能很烦人,但是习惯它并不难。试想你会怎样 chmod
您的文件,并从中减去所需的字节 7
,你会得到的 umask
值。或者,当您在IDE中编写代码时,请不要使用 umask
,而是创建文件(使用默认值 umask
当然)然后在Python中使用 os.chmod()
代替。