组密码的典型用例

组密码的典型用例

我检查了半个多世纪的 Unix 经验,我的同事和我自己都没有为组设置过密码(sggpasswd)。组密码的典型用例是什么,或者它几乎只是因为历史原因而存在?

答案1

我也从来没有见过这个功能被使用过,一次也没有。大多数 SA 甚至不知道该设施的存在。在查看手册页时,gpasswd有这样一条注释:

关于组密码的注意事项

  Group passwords are an inherent security problem since more than one 
  person is permitted to know the password. However, groups are a useful 
  tool for permitting co-operation between different users.

它们为何存在

我认为模仿用户拥有密码的模型是一个自然的想法,将用例模型复制到组也是有意义的。但实际上它们并没有什么用处。

使用组密码的想法是,如果您需要访问特定组(您没有被列为其成员的组),您可以使用该newgrp命令来执行此操作,并通过密码来获取访问权限给这些另类群体。

它们的一个大问题是,每个组只有一个密码,因此当多个人需要访问这个特定组时,迫使人们共享这个密码。

团体

我遇到的大多数环境通常都会将人们放入辅助组中,然后授予这些组对文件系统上的文件的访问权限,这几乎满足了需要发生的所有使用情况。

须藤

随着附加权限的出现,sudo可以根据需要向组授予权限,从而进一步破坏组密码可能提供的任何用例。如果您需要允许用户更多权限,那么创建角色sudo然后只允许他们所在的用户名或组、权限来提升这些权限以便他们可以执行特定任务会更容易。

ACL

最后,创建访问控制列表 (ACL) 的能力确实提供了用户/组/其他权限模型无法单独提供的最后一点灵活性,从而消除了对组密码的任何可能需要。

答案2

这是我在工作服务器上为自己实现的组密码的实际用途,因为日志表明我的帐户正在被暴力破解(或者可能是字典攻击)。
我分别使用ssh-keygenputtygen生成密钥对以供我的工作站和家庭计算机使用。我在家使用的钥匙需要密码。我将两个公钥添加到,创建了一个带有密码但没有成员的.ssh/authorized_keys组。marionette作为 root,我曾经visudo添加以下几行。

Cmnd_Alias      SUDOING = /bin/bash, /usr/bin/sudo -i
%marionette     ALL=NOPASSWD:SUDOING

我已经禁用了我的帐户密码,任何人都无法通过这种方式登录。我现在仅使用我的密钥登录,并进入受密码保护的组,newgrp marionette允许我使用 成为 root sudo -i
如果没有该NOPASSWD:选项,它将需要您用户帐号密码。如果它被禁用并且该组没有NOPASSWD,您将无法进行sudo -i。它还需要您的用户帐号密码(如果您的命令列表没有/bin/bash或您的 root 默认使用的任何 shell)。

虽然这确实使 sudoing 的路径更长了几个步骤,但它增加了良好的安全层。如果您选择像这样创建所有帐户,请创建一个具有密码和 sudo 权限的本地帐户,但/etc/ssh/sshd_config通过添加以下内容来拒绝其 ssh 访问:

DenyUsers root caan
DenyGroups root daleks

这是本地访问所必需的,以防您重新安装并忘记备份访问密钥。

答案3

我也从未见过该密码的用例。这就是大约 20 年的 *nix 经验。

我想到的唯一用例是将其设置为“!” - 锁定,因此任何人(不是该组的成员)都无法使用该命令更改该newgrp组。

如果我查看 SLES 上的 /etc/group 或基于 RedHat 的系统上的 /etc/gshadow,这似乎是“典型”用例。 SLES 甚至懒得为该密码创建影子机制。

答案4

让我建议一个用例。

首先我要说的是,我们已经习惯了“用户”这个词,甚至没有想到它。但“用户”并不是真正的用户。例如,我们家里有三台电脑——我妻子的笔记本电脑、我的笔记本电脑和普通的台式电脑。当我使用我妻子的笔记本电脑时,我使用她的用户帐户登录。当她使用我的笔记本电脑时,她使用我的用户帐户登录。如果有人需要桌面,他或她就使用一个通用帐户。我们在这里看到,计算机系统所说的“用户”并不是真正的用户。用户但是一个工作流程- 一组活动。

问题是:为什么我不能有一项以上的活动——我所从事的每一项不同的工作都有一项活动?我可以。在我的工作计算机上,我(实验性地)创建了许多不同的用户,这样我就可以专注于当前的任务。我将所有这些用户放在同一个组中,这样无论我当前使用哪个用户,我都可以访问我的文件。

那么 gpasswd 在其中起什么作用呢?

Ubuntu 的默认行为是为每个用户创建一个特殊的组。

如果我们决定将这些主要群体视为用户并将系统用户视为工作流程

这些新用户需要密码才能登录,对吧?这里是gpasswd的地方。我仍然需要弄清楚如何登录该组(到目前为止,我知道如果您已经登录,您可以使用 gpasswd 切换组)。

相关内容