【问题标题】:file creation mask and umask文件创建掩码和umask
【发布时间】:2013-10-29 17:09:23
【问题描述】:

我在一本书中阅读了有关文件创建掩码的内容,并遇到了这个:

例如,如果掩码的值为 04+02+01=07,那么权限 每当创建文件时,这些值通常会关闭。所以,随着 这个值实际上是用以下语句创建的文件:

fd open (" /tmp/newfile", O_CREAT, 0644); 

实际上将被赋予 0640 模式。这意味着文件所有者和成员 与该文件关联的组将能够使用该文件,但其他类型的 用户将被拒绝任何访问。

我无法理解为什么模式会从 0644 更改为 0640。正在创建的文件的权限是什么?

【问题讨论】:

    标签: file-io umask


    【解决方案1】:

    你传递给*open()(叫它mode)的值是这样修改的:

    perms = mode & ~umask;
    

    意思是umask 中设置的每个位都会关闭结果权限中的相应位,无论它是否已设置。在您的特定示例中:

    0644       = 0b110100100
      07       = 0b000000111
     ~07       = 0b111111000
    0644 & ~07 = 0b110100000 = 0640
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多