0

在处理可执行文件或目录的权限时,我至少了解基本级别的 umask 工作原理。但是,当谈到 umask 如何将其规则应用于文本文件时,我感到很困惑。

例如,考虑 umask 037。在新创建的可执行文件或目录上,我知道权限将来自简单的减法 (777-037 = 740)。不过,我的问题是,明显的减法如何确定默认权限为 666 的文本文件的权限。

要清楚减法是如何完成的(666-037 = 637?)显然拥有可执行文本文件是没有意义的,并且根据我执行的一些示例,我知道在这种情况下文件权限应该可以解决640。

这个减法是怎么做的?我们如何到达 666-037 = 640?

4

1 回答 1

1

这不是减法。它是屏蔽:布尔值“AND”使用umask. 因此,将umask视为应该从模式中删除的位。

Create mode  0666 (octal)                         = 110110110 (binary)
Mask          037 (octal) = 000011111 (binary)
(Complement of mask)      = 111100000 (binary)    = 111100000 (binary) &
                                                    ---------
Result       0640                                   110100000

另见http://en.wikipedia.org/wiki/Boolean_algebra#Basic_operations

于 2015-06-05T11:54:02.417 回答