为什么要使用umask?

6

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

umask(077);

这是什么原因呢?

man手册(man 2 umask)中写道:

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

这种清除允许每个用户限制对他的默认访问权限

但我不清楚为什么会有人这样做?是为了快捷方式吗?


1
你熟悉Unix文件属性吗?我的意思是,你知道“ls -l”命令中第一列-rwx------+代表什么吗? - Dewfy
2个回答

12

设置 umask(077) 可以确保程序创建的任何文件仅对其所有者可见(第一个位置中的0表示所有权限都可以使用),而对任何其他人都无法访问(第二/三个位置中的7表示组/其他人不允许任何权限)。


1
你会期望在生成高度敏感文件的程序中看到这个设置,这些文件不应该被任何其他用户在任何情况下访问(ssh-keygen是一个很好的例子)。普通程序应该尊重用户已经设置的现有 umask() - caf

4

它需要文件系统安全。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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接