我正在阅读一本书中的文件创建掩码,并且发现了这个:
例如,如果掩码的值是04 + 02 + 01 = 07那么权限 每当创建文件时,通常由这些值指示的都将被关闭。所以,随着 该值有效,使用语句创建的文件:
fd open (" /tmp/newfile", O_CREAT, 0644);
实际上将被赋予0640的模式。这意味着文件所有者和成员 与该文件关联的组将能够使用该文件,但其他类型的 用户将被拒绝任何访问权。
我无法理解为什么模式从0644更改为0640.对于正在创建的文件的权限是什么?
答案 0 :(得分:1)
您传递给*open()
的值(称之为mode
)会以这种方式修改:
perms = mode & ~umask;
意味着umask
中设置的每个位都会关闭结果权限中的相应位,无论它是否已设置。在您的特定示例中:
0644 = 0b110100100
07 = 0b000000111
~07 = 0b111111000
0644 & ~07 = 0b110100000 = 0640