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

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

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

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

不知何故,经过多年的使用,我基本上知道了umask(默认为022为用户的写权限,002为用户组(例如团队)的写权限)是什么,以及用户(和新用户)的默认权限用于755文件夹,644用于文件。

但深入思考一下,似乎默认的权限设置在这样的多用户操作系统中是不安全的。尽管它使共享数据变得更容易,但当您可以轻松地列出和复制其他用户的主目录中的文件时,我仍然感到很奇怪。

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

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

答案1

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

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

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

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

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

mkdir ~/private
chmod 700 ~/private

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

相关内容