在大多数地方,权限被定义为格式为的八进制数 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() 代替。