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

cwd*_*cwd 44 linux users administration group

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

useradd
usermod
groupadd
groupmod
Run Code Online (Sandbox Code Playgroud)

我刚刚读完Linux/Unix Administrator's handbook 中的用户管理书,但有些东西还是有点模糊。

基本上useradd看起来很简单:

useradd -c "David Hilbert" -d /home/math/hilbert -g faculty -G famous -m -s /bin/sh hilbert
Run Code Online (Sandbox Code Playgroud)

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

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

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

eww*_*ite 30

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

对于您的其他问题...

  1. 如果您指定了一个groupname在该useradd阶段不存在的组 ,您将收到一个错误 - useradd: unknown group groupname

  2. groupadd命令创建新组。

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

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

不过,您在这里可能会使事情复杂化。在许多 Linux 发行版中,一个 simpleuseradd hilbert将创建用户hilbert和一个与主同名的组。我将使用-G开关添加一起指定的补充组。

  • 谢谢。如果我执行 `usermod -g hilbert hilbert` 会删除希尔伯特的其他组吗?如果是这样,我将如何保留其他组?如果不是,我会将他从其他组中删除吗? (2认同)
  • @MIck 的回答得到了我的支持,因为他指出你需要将 -a 与 -G 一起使用(否则你离开的任何组都将被*删除*) (2认同)

小智 11

您需要阅读man usermod解释各种选项会发生什么的文章:

usermod -g hilder hilder
Run Code Online (Sandbox Code Playgroud)

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

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


nde*_*mou 6

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

  • usermod -g new_group user_name
  • 终止所有 user_name的活动会话

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

如果命令运行没有错误,但 gid 没有改变,你就错过了第 2 步的粗体部分。