为什么将新创建的用户分配到其用户名的主要组?

peo*_*les 6 users group

我注意到,在许多 linux 发行版上,每当创建新用户时,都会将其分配给一个以其自己名称命名的主要组。

例如。如果我创建一个名为“testuser”的用户,默认情况下它被分配给“testuser”主要组。

这会导致所有用户拥有自己独特的主要组。所有这些组也只会有 1 个用户,因为将其他用户添加到这些组实际上没有意义。这有点违反直觉,因为“组”通常意味着“超过 1”。

在尝试为文件/文件夹分配权限时,这些用户主要组通常也无用。

有什么理由这是发行版的默认行为吗?以及这种行为实际上有用的任何用例?为什么不将所有新用户分配给“用户”主要组?

Gil*_*il' 7

究其原因(唯一的原因,据我所知)把用户一群自己的是使umask 002umask 007一个合理的默认。

umask的是为新创建的文件的默认权限的面具。数字的含义同chmod; 第一个数字代表用户,第二个数字代表群组,第三个数字代表其他人。如果 umask 中的某个位为 1,则会从新创建的文件的权限中删除(屏蔽)它。例如,如果一个应用程序创建了一个没有特殊隐私要求的不可执行文件¹,它将通过 666 作为文件权限,而 umask 002 的应用程序将导致一个具有权限 664 的文件(0666 & ~002在类似 C 的符号中),即每个人都可以读取并且只能由用户和组 ( rw-rw-r--)写入的文件。

使用 umask 022,默认情况下文件是世界可读的,但只能由其作者写入。使用 umask 002,文件还可以由拥有它们的组写入。如果用户的主要组是他们唯一的用户,并且 umask 是 002,则:

  • 默认情况下,文件只能由其作者写入,因为虽然权限是rw-rw-r--,但组中没有其他用户具有写入权限。
  • 要允许组成员修改文件,作者只需使用chgrp. 如果文件是在带有 setgid 位或等效ACL目录中创建的,这甚至会自动发生。

与 022 umask 相比的优势在于,在该设置中,为了使用户可编辑文件,作者必须做两件事:设置组和扩展权限 ( chmod g+w)。人们往往会忘记这第二步(或唯一的一步,在 setgid 目录中)。

¹具有特殊隐私要求的文件示例:加密密钥;电子邮件;公共目录中的任何文件,例如/tmp.