Answers:
我也从未见过使用此功能,甚至没有一次。大多数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)的能力确实提供了用户/组/其他权限模型无法单独提供的最后一点灵活性,从而使对组密码的任何可能需求都变得晦涩难懂。
sudo
ACL。我猜想也udev
有类似的故事,当然,重点放在设备上。有趣的阅读。
这是组密码的一种实际用法,我在工作服务器上为自己实现了该功能,因为日志表明我的帐户是蛮力的(或者可能是字典攻击)。
我曾经ssh-keygen
和puttygen
恭敬地生成从我的工作站和家用电脑使用密钥对。我在家中使用的钥匙需要密码。我将两个公钥都添加到中.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
命令,则可以做得更好。仍然是一个很好的答案。
newgrp
)和“新”(sudo
)的结合使用,并具有明显的附加值。这值得一些荣誉。
我也从未见过该密码的用例。大约20年的* nix经验。
我想到的唯一用例是将其设置为“!” -已锁定,因此没有任何人(不是该组的成员)可以使用newgrp
命令更改为该组。
如果我查看SLES上的/ etc / group或基于RedHat的系统上的/ etc / gshadow,这似乎是“典型”用例。SLES甚至不费心为该密码创建影子机制。
newgrp ntp
,!
锁定如何改变?
!
man newgrp
:如果组密码为空并且未将该用户列为成员,则将拒绝该用户访问。
让我提出一个用例。
首先让我说,我们已经习惯了“用户”一词,以至于我们甚至都没有考虑过。但是“用户”并不是真正的用户。例如,在家里,我们有三台计算机-我妻子的笔记本电脑,我的笔记本电脑和普通台式计算机。当我使用妻子的笔记本电脑时,我使用她的用户帐户登录。当她使用我的笔记本电脑时,她使用我的用户帐户登录。如果有人需要桌面,则他或她将使用一个普通帐户。我们在这里看到计算机系统称为“用户”的东西实际上不是用户,而是工作流 -一组活动。
问题是:为什么我不能从事一项以上的活动-我所从事的每一项不同的工作?我可以。在工作计算机上,我(通过实验)创建了许多不同的用户,因此我可以专注于当前任务。我将所有这些用户放在同一个组中,因此我无法访问我当前正在使用的那个用户的文件。
那么,gpasswd在哪里适合呢?
Ubuntu的默认行为是为每个用户创建一个特殊的组。
如果我们决定将这些主要组视为用户并将系统用户视为工作流,该怎么办?
比这些新用户需要密码登录,对吗?这是gpasswd的地方。我仍然需要弄清楚如何使用该组登录(到目前为止,我知道的是,如果您已经登录,则可以使用gpasswd切换组)。