为什么umask要使用这种复杂的数字系统呢?

为什么umask要使用这种复杂的数字系统呢?

我正在尝试学习如何使用 umask,但它看起来很复杂。

除了每次看到掩码值时我必须在脑海中分别为目录和文件进行所有减法之外,umask 在不同时间似乎也不同(见下文)。

例如,如果我有一个面具

umask
0002

也可以看作

umask -S
u=rwx,g=rwx,o=rx

为什么 umask 会给出rwxrwxr-x-------w-在本例中不会给出?当我得到 0002 时,我应该通过 666-002 计算文件的权限,通过 777-002 计算目录的权限。那么不应该umask -S给我一个类似的东西,以便我可以用它进行计算。例如negation-of(-------w-)。因此,在一种情况下,它充当否定的掩码,而在第二种情况下,它只是给出我理解的结果。为什么会出现这种模棱两可的行为?

答案1

这就是行为的umask定义方式:

如果-S指定时,消息应采用以下格式:

"u=%s,g=%s,o=%s\n",,,

其中三个值应为集合 { r, w, x} 中的字母组合;字母的存在表示文件模式创建掩码中的相应位已清除。

(从http://pubs.opengroup.org/onlinepubs/9699919799/utilities/umask.html

能够以两种形式显示掩码很有用,这看起来合乎逻辑,尽管不可否认的是,umask(1)手册页并没有非常清楚地说明该-S选项的作用。

相关内容