gpt4 book ai didi

python - 为什么 os.umask() 的参数是倒置的? (umask 0o000 使 chmod 0o777)

转载 作者:太空狗 更新时间:2023-10-29 18:05:00 26 4
gpt4 key购买 nike

在大多数地方,权限被定义为格式为0777 的八进制数。但是 UNIX 的 umask 命令(因此 os.umask())需要 0o000 来生成 0o777 的权限位,并且0o022 在我的理解中等于 0o755

听说UNIX的umask不知为何倒置了,不明白是什么原因。有人可以解释这种不一致吗?

最佳答案

没有真正的不一致,因为umaskchmod 之间的关系完全可以用方程式写下来。显然,umaskchmod 设置相反,它在过去是这样创建的。

示例: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() 代替。

关于python - 为什么 os.umask() 的参数是倒置的? (umask 0o000 使 chmod 0o777),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com