我正在阅读一些源代码,发现在主程序的开头有这个语句:
umask(077);
这是什么原因呢?
man手册(man 2 umask)中写道:
umask -- 设置文件创建模式掩码
这种清除允许每个用户限制对他的默认访问权限
但我不清楚为什么会有人这样做?是为了快捷方式吗?
设置 umask(077)
可以确保程序创建的任何文件仅对其所有者可见(第一个位置中的0表示所有权限都可以使用),而对任何其他人都无法访问(第二/三个位置中的7表示组/其他人不允许任何权限)。
ssh-keygen
是一个很好的例子)。普通程序应该尊重用户已经设置的现有 umask()
。 - caf它需要文件系统安全。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