【问题标题】:Why would you use umask?为什么要使用 umask?
【发布时间】:2010-05-06 10:23:34
【问题描述】:

我正在阅读一些源代码,我在主程序的最开始发现了这个语句:

umask(077);

这可能是什么原因?

手册页 (man 2 umask) 指出:

umask -- 设置文件创建模式掩码

此清除允许每个用户 限制对他的默认访问 文件

但我不清楚为什么有人会这样做?作为捷径?

【问题讨论】:

  • 你熟悉 unix 文件属性吗,我的意思是你知道命令 "ls -l" 中的第一列是什么意思吗? -rwx------+

标签: c++ c unix


【解决方案1】:

设置umask(077) 确保程序创建的任何文件只能由其所有者访问(第一个位置的 0 = 所有可能可用的权限),其他任何人都不能访问(第二/第三个位置的 7 = 不允许组的所有权限/其他)。

【讨论】:

  • 您会希望在生成高度敏感文件的程序中看到此设置,任何其他用户在任何情况下都绝不可以访问这些文件(ssh-keygen 是好例子)。普通程序应该尊重用户设置的现有umask()
【解决方案2】:

它需要文件系统的安全性。 umask 包含倒数,用作新文件的文件模式。例如

dzen@DZeN ~ $ umask
022
dzen@DZeN ~ $ touch file
dzen@DZeN ~ $ ls -la file
-rw-r--r--  1 dzen  dzen  0  6 may 14:29 file
dzen@DZeN ~ $ umask 777
dzen@DZeN ~ $ umask      
0777
dzen@DZeN ~ $ touch file1
dzen@DZeN ~ $ ls -la file1
----------  1 dzen  dzen  0  6 may 14:30 file1

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2012-08-20
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2017-05-16
    相关资源
    最近更新 更多