umask对文本文件的影响



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

以umask 037为例。对于新创建的可执行文件或目录,我理解权限将从一个简单的减法(777-037 = 740)中产生。我的问题是,那么如何明显的减法工作,以确定权限说一个文本文件谁的默认权限将是666。

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

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

这不是减法。它的屏蔽:布尔"AND"使用umask的按位补码("NOT")。因此,将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

相关内容

  • 没有找到相关文章

最新更新