Linux上默认组和用户背后的原因


14

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

USERGROUPS_ENABin中的默认值/etc/login.defs似乎是“是”,这可以通过在man中找到的“默认情况下,还将为新用户创建一个组”来反映useradd,因此每次创建新用户时,组是使用相同的名称创建的,并且只有该新用户进入。这有什么用?或者这仅仅是一个占位符?

我觉得这样做会失去作为用户/组/其他用户的部分权限管理。拥有一个“用户”或“常规”组,或者您想称呼它的是每个用户的默认组,而不是拥有自己的组,这会很不好吗?

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

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


如果您能给我些时间,我会给您一个很好的答案。我只是一个慢打字员。可能需要30分钟或更长时间。
eyoung100

所有这些组的要点是set-group-id程序。
Barmar 2014年

2
第一个问题非常接近这个问题。
Leiaz 2014年

@ECarterYoung:当然,您可以花点时间,谢谢!
Horgix 2014年

@Leiaz:我意识到,但仍然想问“有一个组“用户”或“常规”或任何您想称呼它是每个用户的默认组而不是他们自己的组会不好吗?” 部分,并保留以前的内容作为简介。我最初是在StackOverflow上发布的,但直接是在这里。
Horgix 2014年

Answers:


13

每用户组

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

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

默认创建的组

它们大多数来自历史原因,但今天仍有许多用途:

  • 磁盘是拥有大多数磁盘驱动器设备的组
  • lp拥有并行端口(有时配置为具有杯子管理员权限)
  • uucp通常拥有串行端口(包括USB串行端口)
  • 在CD驱动器上安装特权需要cdrom
  • 某些系统使用wheel获得sudo权限。有些不
  • 等等

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


但是,根据Linux标准基础核心规范只有3个root,bin和daemon用户是绝对必需的。该原理的其他群体的背后是:

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

因此,最好将这些组保留在适当的位置。从理论上讲,可以将它们删除而不会造成损坏,尽管对于某些“神秘的”事物可能开始无法正常工作(例如,如果您杀死该组,则某些手册页将无法呈现,等等)。将它们保留在此处不会有任何危害,并且通常假定所有Linux系统都将包含它们。


在哪里可以找到有关生成临时文件的更多信息?在打开的手册页的情况下,ps aux | grep man不会向我显示在man组下运行的任何进程,并且find -group man /也不向我显示任何东西。在标准的Archlinux安装上尝试使用man 2.6.7.1。
Horgix 2014年

4

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

您好,我是ecyoung,您是horgix。我们每天上班,并与程序员登录到同一Linux Server。不久前的一天,我们的系统管理员决定简化用户的创建和维护工作,因此他关闭了该USERGROUPS_ENAB选项,并将所有现有用户置于新users组中。


这样做确实使用户创建更加容易,但是却很难维护,因为所有用户都可以访问所有其他用户文件。在公司环境中,由于Sarbanes Oxley之类的原因,这是一个很大的否定(和职责分离。如果我创建文件A,则将“组位”设置为“用户组”,这意味着所有用户至少可以读取文件A。如果sys admin懒惰,则在某些情况下,所有用户都可以RW文件A。这使Sarbanes Oxley败了和SoD,因为单独的部门应该不能少读任何其他人的文件。


启用“用户/组”后,如果我以ecyoung身份创建文档,则只有我具有rwx权限。由于没有其他人在我的群组中,因此当他们打开我的文档时,他们会看到带有警告的空白页。这将强制执行Sarbanes-Oxley和SoD。如果我邀请其他用户,则这些用户将被授予rw访问权限,通过这样做,我知道他们看到的内容将不会再次咬我或他们。就像其他人说的那样,如果在家,分开对您来说并不重要。如果确定,则可以安全地关闭该选项,所有用户都将添加到users GID为100组中。请参阅下面的问题2。

假想
您从事IT工作,路易斯从事薪资工作。路易斯将“计税和工资表”保留在她的主目录中,但是您都在“用户”组中,因此您可以打开她的主目录,因为该目录为用户标记了+ r并找到了她的电子表格。您会在列表中找到自己的薪水金额,以及乔和弗雷德的薪水。您认为乔和弗雷德想让您知道他们的薪水吗?


问题2:组ID的0到500

组ID和相反的用户ID 0-500保留用于系统帐户和设备访问。有关标准帐户的列表,请参见“ 预配置的系统组”表。请不要手动删除这些帐户。例如,如果要删除用户ftp,请在软件包管理系统中删除ftp守护程序。这样做还将删除系统帐户。系统服务包括但不限于:

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

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


5
假设很好,但失败了。1.默认权限通常被屏蔽022,这意味着其他人仍然具有读取访问权限。2. sysad不仅懒惰,而且无能,因为他应该根据部门创建组,并在创建帐户时分配正确的组,而不是将全部分配给某个组。该USERGROUPS_ENAB仍应然后关闭。禁用USERGROUPS_ENAB!=将所有用户放在同一组中。
muru

@ECarterYound的第一部分:我明白了您对访问保护的含义,如果我错了,请更正我,但是将所有用户归为一users组,对组进行正确的权限管理应该不是问题,也就是说,不能完全相同组的权利要比所有者高。因此,USERGROUPS_ENAB启用该功能的唯一好处是维护起来比较容易,因为它允许您在创建文件和目录时保留默认权限,同时仍限制其他用户的访问?
Horgix 2014年

没错,但是如果很多人是家庭用户,他们将无法正确管理网上论坛。我不能肯定地验证这一点,但是我相信维护者创建了该选项是为了支持权限管理。
eyoung100

3

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

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


1

通过每个用户组,您既可以拥有“主目录中的隐私”功能,又可以拥有“共享文件夹中的轻松协作”功能。如果没有按用户组,则只能有一个,但不能两个都有。详细信息如下:

Unix是一个多用户系统,无论是公司文件服务器还是具有2个用户的PC。“您的主目录中的隐私”可以通过以下几种方式实现:

设置“ umask 077”,以便使用rw为您创建文件,而对其他人则没有权限。另外,也可以使用027或022,以便部分或全部可以读取但不能写入文件。明显的缺点是您无法在共享文件夹中进行协作,因为由于严格的权限,其他文件夹无法处理您在其中创建的文件。您可以更改此类文件的权限,但这是“太多的工作”,并且经常被忘记。

要进行协作,您需要“ umask 7”之类的东西,以便您和所属组都可以读取和写入您创建的文件。这对于包含所有需要共享访问权限的人员的共享文件夹和组非常有用。但是,您会丢失主文件夹中的隐私!

每个用户组就是解决方案!您使用umask 7,因此您创建的所有文件都“为您提供rw,为该组提供rw”。您的主目录中的文件是使用您的个人组作为“所有者组”创建的,因此,即使拥有“ group rw”权限,也没有其他人可以访问这些文件。因为除了你之外没有人在那个特定的小组中。

您仍然可以在共享文件夹中进行协作。共享文件夹中的文件将成为所属组的“ rw”,然后sysadmin会设置共享文件夹,以便共享组(称为协作者)将成为该文件所在组的所有者。这是通过创建此协作者组并将所有协作用户作为成员来完成的。然后,管理员将共享文件夹的组所有权设置为“协作者”,并为共享文件夹设置SETGID权限。启用S​​ETGID时,在共享文件夹中创建的所有内容都将具有与共享文件夹相同的组所有者,即“协作者”组。使用umask 7(或替代2),该组中的所有人都将具有读写访问权限,因此能够进行协作。


0

最初,Unix进程一次可以属于一个组(过去是一个chgrp(1)命令,要求存储在中的残留密码字段中的组密码/etc/groups)。Plus系统由紧密联系的一组用户使用。让每个人都参与其中是很有意义的users组中并通过组权限在系统范围内共享内容。没有真正的安全意识,十几个人的用户很少怀疑。一切都是本地的,在同一台计算机上。没有网络可以共享内容,例如通过博客等。

当今的Unix系统具有数百个用户,安全性要求越来越严格,并且用户(和进程)可以属于几个组。给每个(更无能为力的)用户一个家庭组,并允许其散居以进行共享。或使用ACL。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.