组密码的典型用例


35

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


4
也许我应该给Ken发送电子邮件,请他在设计阶段进行考虑; o)
jippie 2013年

Answers:


26

我也从未见过使用此功能,甚至没有一次。大多数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)的能力确实提供了用户/组/其他权限模型无法单独提供的最后一点灵活性,从而使对组密码的任何可能需求都变得晦涩难懂。


您已经提到了sudoACL。我猜想也udev有类似的故事,当然,重点放在设备上。有趣的阅​​读。
jippie

11

这是组密码的一种实际用法,我在工作服务器上为自己实现了该功能,因为日志表明我的帐户是蛮力的(或者可能是字典攻击)。
我曾经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。如果您的命令列表没有或默认情况下您的根用户正在使用的任何shell,它也将需要您的用户帐户密码/bin/bash

尽管这样做确实使步的路径更长了一些,但它增加了良好的安全性。如果您选择使所有帐户都这样,请创建一个具有密码和sudo特权的本地帐户,但是/etc/ssh/sshd_config通过添加类似以下内容来拒绝它的ssh输入:

DenyUsers root caan
DenyGroups root daleks

如果您重新安装并忘记备份访问密钥,这对于本地访问是必需的。


sudo如果不使用POSIX newgrp命令,则可以做得更好。仍然是一个很好的答案。
mikeserv 2014年

并非完全是问题的答案,而是一个很好的建议,用于“旧”(newgrp)和“新”(sudo)的结合使用,并具有明显的附加值。这值得一些荣誉。
德克

1

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

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

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


不明白你的意思。例如。我还不能newgrp ntp!锁定如何改变?
jippie 2013年

@jippie-那么系统上ntp的密码字段是什么?如果密码很容易猜到,则可以执行newgrp ntp。用!你不能。
Nils 2013年

只是一个例子,它有一个“ x”,除ntp用户本身外没有其他组成员。通过将密码字段设置为!
jippie,2013年

2
发件人man newgrp:如果组密码为空并且未将该用户列为成员,则将拒绝该用户访问。
user2387

0

让我提出一个用例。

首先让我说,我们已经习惯了“用户”一词,以至于我们甚至都没有考虑过。但是“用户”并不是真正的用户。例如,在家里,我们有三台计算机-我妻子的笔记本电脑,我的笔记本电脑和普通台式计算机。当我使用妻子的笔记本电脑时,我使用她的用户帐户登录。当她使用我的笔记本电脑时,她使用我的用户帐户登录。如果有人需要桌面,则他或她将使用一个普通帐户。我们在这里看到计算机系统称为“用户”的东西实际上不是用户,而是工作流 -一组活动。

问题是:为什么我不能从事一项以上的活动-我所从事的每一项不同的工作?我可以。在工作计算机上,我(通过实验)创建了许多不同的用户,因此我可以专注于当前任务。我将所有这些用户放在同一个组中,因此我无法访问我当前正在使用的那个用户的文件。

那么,gpasswd在哪里适合呢?

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

如果我们决定将这些主要组视为用户并将系统用户视为工作流,该怎么办?

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


群组密码是这个问题的重点,但是您尚未解决。
杰夫·谢勒

从安全性和问责制的角度来看(在IT中非常常见),使用他人的用户帐户是不可接受的。尽管这可能适合您的家庭情况,但对于公司环境而言,这是不好的做法。
jippie 2015年
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.