为什么很多 Unix 系统默认的 umask 是 002 或 022?默认情况下似乎不安全

Bos*_*iaw 9 security permissions umask privacy historical-unix

我已经使用 Linux 和 Unix 很长时间了。我第一次学习Unix是在一个有很多学生的电脑教室里,老师告诉我们可以用ssh它登录我就读的大学提供的远程工作站。

在这种情况下,我立即知道 Unix 是一个多用户操作系统,因为学生多于工作站。(鸽巢原理。)

不知何故,经过多年的使用,我基本上知道umask(默认为 002)是什么,并且用户(和新用户)的默认权限是755文件夹、644文件。

但是仔细想想,在这样的多用户操作系统中,默认权限设置似乎是不安全的。虽然它使共享数据更容易,但当您可以轻松地在他们的主目录中列出和复制其他用户的文件时,我仍然感到奇怪。

那么为什么在许多 Unix 系统中默认 umask 002 呢?传统Unix选择这种设计有什么历史原因吗?

(我能想到的一个可能的原因是,1970~1980年计算机主要用于科学研究,计算能力非常有限。所以当Unix早期版本出来时,他们决定默认权限应该是为了方便共享而不是隐私保护。)

Gil*_*il' 11

Unix 最初并长期用于专业环境。在专业环境中,与同事在同一主题上工作是很常见的。有些文件是保密的;例如,我见过的每个电子邮件程序都会创建仅所有者可读的文件(模式 600)。但是默认情况下让文件公开可读是有意义的:大多数文件不是机密的。

在私人机器上,这个问题没有实际意义,因为只有一个用户。

一些预计有多个用户但协作不多的系统使用 077 作为 umask。由系统管理员决定。

如今,带有通过网络协议访问的中央存储库和多个工作副本(CVS、subversion、git、mercurial 等)的版本控制系统非常普遍,因此用户直接访问相同文件的情况不太常见。直到 1990 年代,这种情况还不太常见,用户忘记授予其他人应该处理的文件的读取权限是一个常见问题。

为了确保即使您忘记运行文件也始终是私有的chmod,请将它们放在私有目录下,例如

mkdir ~/private
chmod 700 ~/private
Run Code Online (Sandbox Code Playgroud)

其他人(当然,root 除外)可以访问 下的文件~/private,无论他们的权限是什么。

  • 关于 macOS 的最后一点:相关的是 `~/Desktop/`、`~/Documents/` 等(`~/Public/` 除外)都具有模式 700(即 `"drwx----- -"`),即默认情况下它们是私有目录。 (2认同)