我最近在新安装的 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 密码(不存在),其他用户无法更改任何打印机设置。我想会有更多我还没有注意到的副作用。
我的问题:
- 我的假设是否正确,即所有用户在创建后应该共享相同的组成员身份?
- 如果是,丢失组的可能原因是什么?
- 有干净的解决方法吗?或者至少是一种解决方法?(如果可能,无需单独手动修复每个用户帐户)
这是正常的,也是所有 Ubuntu 风格的默认设置。默认情况下,普通用户无权更改硬件/配置文件,并且只能访问他们自己的主目录。这是设计使然。
不是按照最小特权原则。
如果您希望用户有权更改打印机配置,您可以使用 .将他们添加到 lpadmin 组
sudo usermod -aG lpadmin USERNAME
。要在单个命令中将多个用户添加到组(来自此问题的答案):
或者将多个用户添加到多个组:
如果您希望其他组成员身份成为新用户的默认设置,请编辑
/etc/adduser.conf
并取消注释该行,并取消注释并更改以to#ADD_EXTRA_GROUPS=1
开头的行。您可以列出由引号之间的空格分隔的多个组。#EXTRA_GROUPS=
EXTRA_GROUPS="lpadmin"
这些天来,为每个新用户创建一个新组。该组与用户具有相同的名称,并且只有一个用户作为成员。第一个用户帐户是特殊的;它被添加到更多的组,因为那个被认为是机器的主要用户,以便用户获得使用各种硬件或虚拟机等的权限;但是对于在第一个用户之后创建的其他用户,这不会(默认情况下)完成。
很多年前,只有一个名为users的组包含所有普通用户帐户,因此组权限实际上是有意义的。
我想(我不确定)将这些用户帐户彼此分开会更安全,因此创建了这些单用户组。
但是没有什么能阻止您将所有其他用户(对应于真人而非伪用户帐户的用户)添加到公共用户组;只需创建一个并将用户添加到那个。
由于第一个用户可能已经使用了组 ID 1000,因此您需要决定是要重命名该组,还是创建一个具有数字 ID 的新组,以便在多台机器上保持不变。
/etc/group
手动编辑是完全安全的。请注意,每个条目的组 ID
/etc/password
是该用户的主要组;用户可以是任意数量的组的成员,但用户创建的任何文件或目录都将具有该主要组的组成员身份,因此如果您希望这些用户能够简单地基于组权限共享文件,您可能想要给他们相同的主要组(使用newgrp
命令非常罕见,所以不要依赖它)。最后,如果这些人使用多台机器,您可能需要考虑使用像 NIS 这样的集中式用户管理,但这是一个更高级的主题。