模式掩码

模式掩码

我刚开始使用莱尼斯(请不要认为我拼错了 Linux)。运行后,系统建议我设置umask/etc/login.defs改为/etc/init.d/rc默认027022

我想知道这会对文件权限产生什么影响。另外,为什么值存储在两个文件中?它们的工作原理不同吗?

如果需要更多信息,我使用 Ubuntu 12.10,我是该系统的唯一用户。

答案1

027 umask 设置意味着所有者组也可以读取新创建的文件。这使权限授予模型不再处理权限位,而是以组所有权为基础。

这将创建具有权限 750 的目录。

请查看这篇精彩的文章027 umask — 安全性和简单性之间的折衷

答案2

模式掩码

去引用维基百科

umask 实用程序用于控制文件创建模式掩码,它决定了新创建文件的文件权限位的初始值。

模式位

三个八进制数字分别对应用户、组和其他人的权限。通过将第三个数字从 2 更改为 7,其他权限已改变。

为了理解这些数字,把它们写成二进制形式,每个位对应一个, 和执行。简而言之,2 对应于;7 对应于执行。目录有点不同,表示获取目录中的项目(文件和目录)列表,而执行意味着只要知道这些项目的名称就可以访问它们。

它是如何掩盖的

确切地说,模式掩码决定哪些权限被屏蔽,或者默认从新创建的文件中删除。因此,掩码值为 2 表示使文件不可写;7 表示删除所有权限。请注意,即使某些权限没有被模式掩码删除,它们也可能因为其他限制而不可用。例如,Linux 不允许创建具有执行权限的文件,因此默认情况下它们永远不会被执行。

合理的价值

因此,回答第一个问题:022 意味着权限被屏蔽其他,因此默认情况下文件可以被读取,但不能被其他人写入或修改。尽管执行权限未被屏蔽,其他人将无法执行文件,因为上述限制;但是,他们可能能够访问带有目录的项目。将其更改为 027,然后执行也被屏蔽了。因此,新创建的文件和目录对其他人来说是私密的;新创建的目录中的项目将始终无法被其他人访问。

在许多情况下,只有一个人类用户。但是,通常有多个系统用户用于运行服务,例如nobody。在某些罕见情况下,例如当以无人身份运行的程序受到攻击时,限制性权限可能会阻止其读取敏感数据。

然而,在多用户环境中,共享文件变得更加复杂:除了设置文件的权限外,至少执行需要在所有父目录上设置权限。

设置值

至于第二个问题,模式掩码只需设置一次。如果设置多次,则最后一个很重要。大多数发行版在中设置了默认模式掩码/etc/profile,因此我建议编辑此文件。

相关内容