如何在 Linux 中更改用户的默认组?

如何在 Linux 中更改用户的默认组?

作为 Linux 管理新手,我对以下命令有点困惑:

useradd
usermod
groupadd
groupmod

我刚刚读完Linux/Unix管理员手册中的用户管理书,但有些东西仍然有点模糊。

基本上useradd看起来很简单:

useradd -c "David Hilbert" -d /home/math/hilbert -g faculty -G famous -m -s /bin/sh hilbert

我可以使用用户名添加“David Hilbert” hilbert,设置他的默认目录、shell 和组。我认为这-g是他的主要/默认组,也是-G他的其他组。

所以这些是我的下一个问题:

  1. 如果组facultyfamous不存在,此命令仍然有效吗?它会创造它们吗?
  2. 如果没有,我应该使用什么命令来创建新组?
  3. 如果我删除该用户hilbert并且这些组中没有其他用户,它们是否仍然存在?我应该删除它们吗?
  4. 运行useradd上面的命令后,如何从famous组中删除 David,并将他的主要组重新分配给hilbert尚不存在的组?

答案1

usermod命令将允许您更改用户的主要组、补充组或许多其他属性。开关-g控制主要组。

对于您的其他问题...

  1. 如果您指定的组 ,groupname在执行期间不存在useradd,您将收到错误 -useradd:未知组组名

  2. groupadd命令创建新组。

  3. 如果您删除其中包含的所有用户,该组将保留。您不一定需要删除空组。

  4. hilbert通过创建组groupadd hilbert。然后使用 移动 David 的主要组usermod -g hilbert hilbert。 (请注意,第一个hilbert是组名称,第二个hilbert是用户名。这在您将用户移动到具有不同名称的组的情况下很重要)

不过,你可能会让事情变得有点复杂。在许多 Linux 发行版中,只需创建一个与主用户同名的useradd hilbert用户和组。hilbert我将使用开关添加一起指定的补充组-G

答案2

您需要阅读其中man usermod解释了各种选项会发生什么情况:

usermod -g hilder hilder

只要“hilder”组存在,就会将您的登录组从“faculty”替换为“hilder”。如果它不存在,那么您首先需要使用 groupadd 创建它。

当您使用该-G选项时,您还应该使用该-a选项将新组附加到用户“hilder”所属的补充组的当前列表中。如果没有该-a选项,您将用新的组集替换当前的补充组。因此请谨慎使用。

答案3

要在 Linux 中更改用户的主要组:

  • usermod -g new_group user_name
  • 终止全部 用户名的活跃会话

要测试您的更改,请运行id并查看值gid=

如果命令运行没有错误,但 gid 没有更改,那么您就错过了步骤 2 中的粗体部分。

答案4

要永久更改用户的主要组,请执行:

  • usermod -g 组名 用户名 命令

或者您可以用于newgrp小环境和临时情况。

创建一个新用户 bob 和一个新组dodo

useradd bob

所以在 RedHat/Centos 中我们有 UID=(ID_number) bob; GID=(ID_number) bob 默认为主要组

groupadd dodo

将用户 bob 添加到dodo组中:

usermod -aG dodo bob -make sure to use "a"

接下来用于newgrp更改所有权:

newgrp dodo

请小心您的帐户,确保其有密码并成为未来主要组的成员。 newgrp 打开一个新的 shell;只要用户留在该 shell 中,主要组就不会改变。要将主要组切换回原始组,您可以通过运行 exit 命令退出新 shell。

相关内容