没有组成员资格的新 Kubuntu 20.04 用户帐户

没有组成员资格的新 Kubuntu 20.04 用户帐户

我最近在新安装的 Kubuntu 20.04 PC 上创建用户帐户时遇到了奇怪的问题。

在安装操作系统期间创建的用户帐户按预期工作。它是各种组的成员:

myself@pc10:~$ groups myself
myself : myself adm cdrom sudo dip plugdev lpadmin lxd sambashare

但是每个额外的用户(稍后使用 KDE 系统设置创建的)不是同一组的成员(管理帐户的 sudo 除外):

myself@pc10:~$ groups test
test : test

myself@pc10:~$ groups administrator
administrator : administrator sudo

其中一个明显的副作用是,其他用户如果不提供 root 密码(不存在),则无法更改任何打印机设置。我想还会有更多我尚未注意到的副作用。

我的问题:

  1. 我的假设是否正确,即所有用户在创建后都应该共享相同的组成员身份?
  2. 如果是,那么缺失群组的可能原因是什么?
  3. 有没有彻底的解决办法?或者至少有个解决办法?(如果可能的话,不用手动单独修复每个用户帐户)

答案1

但是每个额外的用户(稍后使用 KDE 系统设置创建)并不是同一组的成员

这是正常的,也是所有 Ubuntu 版本的默认设置。默认情况下,普通用户无权更改硬件/配置文件,并且只能对自己的主目录拥有写访问权限。这是设计使然。

我的假设是否正确,即所有用户在创建后都应该共享相同的组成员身份?

不符合最小特权原则。

有没有彻底的解决办法?或者至少有个解决办法?(如果可能的话,不用手动单独修复每个用户帐户)

如果您希望用户有权限更改打印机配置,您可以使用将其添加到 lpadmin 组sudo usermod -aG lpadmin USERNAME

要使用单个命令将多个用户添加到组中(来自对这个问题):

for user in USERNAME1 USERNAME2 USERNAME3; do sudo usermod -aG lpadmin "$user"; done

或者将多个用户添加到多个组:

for user in USERNAME1 USERNAME2 USERNAME3; do sudo usermod -aG GROUP1,GROUP2,GROUP3,GROUP4 "$user"; done

如果您希望将附加组成员身份作为新用户的默认设置,请编辑/etc/adduser.conf并取消注释该行#ADD_EXTRA_GROUPS=1,同时取消注释并将以 开头的行更改为#EXTRA_GROUPS=EXTRA_GROUPS="lpadmin"您可以列出多个组,并用引号之间的空格分隔。

答案2

如今,每个新用户都会创建一个新组。该组的名称与用户相同,并且只有一个用户作为成员。第一个用户帐户比较特殊;它被添加到更多组中,因为该用户被视为机器的主要用户,因此该用户有权使用各种硬件或虚拟机等;但对于在第一个用户之后创建的其他用户,默认情况下不会这样做。

很多年前只有组叫用户包含所有普通用户帐户,因此组权限实际上是有意义的。

我猜测(我不确定)将这些用户帐户彼此分开被认为更安全,因此创建了这些单用户组。

但是没有什么可以阻止您将所有其他用户(对应于真实人类的用户,而不是伪用户帐户)添加到公共用户组;只需创建一个并将用户添加到该用户组即可。

由于组 ID 1000 可能已被第一个用户占用,因此您需要决定是否要重命名该组,或者是否创建一个具有数字 ID 的新组,以便在多台机器上保持不变。

手动编辑是完全安全的/etc/group

请注意,每个条目的组 ID/etc/password是该用户的基本的组;用户可以是任意数量组的成员,但用户创建的任何文件或目录都将具有该主要组的组成员身份,因此如果您希望这些用户能够简单地基于组权限共享文件,您可能希望为他们提供相同的主要组(使用该newgrp命令非常罕见,因此不要依赖它)。

最后,如果这些人使用多台机器,您可能需要考虑使用像 NIS 这样的集中式用户管理,但这是一个更高级的主题。

相关内容