linux - umask 对文本文件的影响

标签 linux file unix permissions umask

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

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

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

这个减法是如何完成的?我们如何得出 666-037 = 640?

最佳答案

这不是减法。它是掩码:使用 umask 的按位补码(“NOT”)的 bool “AND”。因此,将 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

关于linux - umask 对文本文件的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30665113/

相关文章:

sockets - 使用 os.OpenFile() 而不是 net.Listen()

shell - 管道 `cd` 或 `popd` 输出阻止更改目录?

Python XML 解析,不了解标签主体

linux - 删除所有目录下的特定子目录

python - 将每个测序数据提取为单独的文件

c++ - 使用文件 C++

php - 使用 PHP 从 URL 字符串获取文件路径/扩展名

c++ - 如何等待命名管道的另一端打开?

linux - AWK - 替换它们之间的列

python open ('file' ,'r+' ) 给出奇怪的结果