从历史上看,为什么 umask 是这样的?

ojb*_*ass 7 umask history

umask 总是让我绊倒。从逻辑上讲,我更喜欢使用 'setmask' 而不是采用 chmod 样式的参数。有谁知道为什么会这样?

Gra*_*avy 6

我相信这源于两个想法,尽管我可能是错的。

  • 最初在 UNIX 中开发权限是完全开放的。在安全时代之前,让文件只能由某些人可读/可写/可执行的想法是没有必要的。因此,从这个角度来看,自然的进展是采用权限的概念,并限制它们。而不是取 0 值的权限并添加到其中。

  • 另一个原因是,在大多数情况下,特定的拒绝会比指定的允许产生更准确的结果。不同的情况有不同的需求。例如,默认目录权限是:755默认文件权限是644

例如,如果您特别允许执行,则必须转换为目录和文件。然后,您将面临选择,要么目录不启用执行,要么文件启用。但是,目录需要启用执行才能发挥作用。因此,您可以选择删除额外的权限,而不是专门添加权限。

使用 umask 0000,您最终仍然没有对普通文件的执行权限,如果您做相反的事情,那么以这种方式设计它会更困难。