每用户组

每用户组

看看一些常见的 Linux 发行版(分别是 ArchLinux 和 Debian)上的默认用户和组管理,我想知道有关它的两件事以及修改默认设置和配置的后果。

USERGROUPS_ENABin的默认值/etc/login.defs似乎是“yes”,这反映在“默认情况下,还会为新用户创建一个组”可以在useraddman 中找到,因此每次创建新用户时,都会创建一个具有相同名称的组,并且只有该新用户在其中。这有什么用处还是这只是一个占位符?

我感觉我们正在失去一部分权利管理用户/组/其他通过做这个。拥有一个组“用户”或“常客”或任何您想称之为的组作为每个用户的默认组而不是拥有自己的组会很糟糕吗?

我的问题的第二部分仍然基于我在 Arch 和 Debian 上看到的内容:默认创建了很多用户(FTP、HTTP 等)。它们有什么用处还是仅因历史原因而存在?

我正在考虑删除它们,但不想破坏任何可以使用它的东西,但我从未见过任何东西这样做,也不知道可以做什么。对于我从未见过任何用户所属的默认组(tty、mem 等)也是如此。

答案1

每用户组

我也没有看到每个用户组有很多实用性。主要用例是,如果用户想要允许“朋友”访问他们的文件,他们可以将朋友用户添加到他们的组中。我遇到的很少有系统真正以这种方式使用它。

USERGROUPS_ENABin/etc/login.defs设置为“no”时,useradd将所有创建的用户添加到该字段定义的组/etc/default/useraddGROUP。在大多数发行版中,它被设置为100通常对应于users组的 GID。这确实允许您对用户进行更通用的管理。然后,如果您需要更精细的控制,您可以手动添加这些组并向其中添加有意义的用户。

默认创建的组

它们中的大多数都是由于历史原因而产生的,但许多在今天仍然具有有效的用途:

  • disk 是拥有最多磁盘驱动器设备的组
  • lp 拥有并行端口(有时配置为 cups 的管理员权限)
  • uucp经常拥有串口(包括USB串口)
  • 在 CD 驱动器上安装权限需要 cdrom
  • 有些系统使用wheel来获得sudo权限;有些不是
  • ETC。

其他组由后台脚本使用。例如,man运行时生成临时文件等;它的进程使用 man 组来处理其中一些文件,并且通常会自行清理。


根据Linux 标准基本核心规范尽管,只有 root、bin 和 daemon 3 个用户是绝对强制的。这理由其他组后面的是:

指定可选用户和组的目的是减少应用程序和发行版之间发生名称冲突的可能性。

因此,看起来最好保留这些群体。它是理论上可以在不损坏的情况下删除它们,尽管对于某些人来说,“神秘”的东西可能开始无法正常工作(例如,如果您杀死该组,则某些手册页不会呈现,等等)。将它们留在那里并没有什么坏处,并且通常认为所有 Linux 系统都会有它们。

答案2

问题1:同一用户和组的推理

大家好,我是ecyoung,你是horgix。我们每天上班,都和程序员一样登录同一个Linux服务器。不久前的一天,我们的系统管理员决定让自己更轻松地创建和维护用户,因此他关闭了该USERGROUPS_ENAB选项并将所有现有用户放入新users组中。


这确实使用户创建更容易,但维护起来却困难重重,因为所有用户都可以访问所有其他用户文件。在公司环境中,这是大不不由于诸如此类的事情萨班斯·奥克斯利法案职责分离。如果我创建文件 A,则组位设置为用户组,这意味着所有用户至少可以读取文件 A。如果系统管理员很懒,那么在某些情况下所有用户都可以 RW 文件 A。这击败了 Sarbanes Oxley和 SoD,因为不同的部门不应该能够读取任何其他人的文档,更不用说编写任何其他人的文档了。


启用用户/组后,如果我以 ecyoung 创建文档,则只有我对其拥有 rwx 权限。由于我的小组中没有其他人,因此当他们打开我的文档时,他们会看到一张带有警告的空白页。这强制执行 Sarbanes-Oxley 和 SoD。如果我邀请其他用户,这些用户将被允许读写访问,并且通过这样做,我知道他们所看到的内容不会回来咬我或他们。正如其他人所说,如果在家,这种分离对您来说可能并不重要。如果您确定这一点,那么您可以安全地关闭该选项,所有用户都将被添加到usersGID 为 100 的组中。请参阅下面的问题 2。

假想
您在 IT 部门工作,Louis 在薪资部门工作。 Louis 将税务和工资单保存在她的主目录中,但你们都在用户组中,因此您打开她的主目录(因为其标记为用户的 +r)并找到她的电子表格。您会发现您的工资金额与乔和弗雷德的工资金额一起列出。你认为乔和弗雷德希望你知道他们的薪水吗?


问题 2:组 ID 0 到 500

组 ID 和相反的用户 ID 0 - 500 保留用于系统帐户和设备访问。请参阅预配置系统组表查看标准账户列表。请不要手动删除这些帐户。例如,如果要删除用户 ftp,请使用包管理系统删除 ftp 守护程序。这样做也会删除系统帐户。系统服务包括但不限于:

  • CUPS 打印服务
  • MySQL 服务器守护进程
  • FTP 服务器守护进程
  • Apac Web 服务器
  • 用于远程连接的 X 服务器套接字
  • ALSA 声音系统守护进程
  • DBUS 服务

还有其他服务,因此如果其他读者想在上面的服务列表中添加或删除,请这样做。

答案3

如果我们都共享一个默认组,就像过去一样,那么我们需要将 umask 设置为 077 以阻止该组。如果默认是我,那么我可以将umask设置为027,现在如果我将目录或文件设置到共享组,则该组可以读取。我也不必搞乱模式。

这只是一个示例,但总的来说,这是一种禁用组的方法,直到您需要它们为止,从而使它们更容易打开和管理。

答案4

最初,Unix 进程一次只能属于一个组(曾经有一个chgrp(1)命令,询问存储在 中残留密码字段中的组密码/etc/groups)。 Plus 系统由一群紧密联系的用户使用。让每个人都在users组中,并通过组权限在系统范围内共享内容是有意义的。十几个其他用户没有真正的安全意识,也没有什么疑心。一切都是本地的,在同一台机器上。没有网络可以分享东西,例如通过博客等。

如今的Unix系统有数百个用户,安全要求更加严格,并且用户(和进程)可以属于多个组。给每个(更无知的)用户一个家庭组,并允许偏离它进行共享。或者使用 ACL。

相关内容