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


41

作为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上面的命令后,如何将David从famous组中删除,并重新分配hilbert尚不存在的主要组?

Answers:


27

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

还有其他问题...

  1. 如果指定阶段groupname中不存在的组,useradd则会收到错误-useradd:未知组groupname

  2. groupadd命令创建新组。

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

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

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


1
谢谢。如果我usermod -g hilbert hilbert愿意,这会删除希尔伯特的其他团体吗?如果是这样,我将如何留住其他小组?如果没有,我会把他从其他小组中删除吗?
cwd

测试一下,然后查看适合您的特定环境。
ewwhite 2011年

@MIck的答案引起了我的反对,因为他指出您需要将-a与-G一起使用(否则,您离开的任何组都将被删除
Jeff

9

您需要阅读,man usermod它解释了各种选项会发生什么:

usermod -g hilder hilder

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

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


5

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

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

要测试您的更改id并查看其价值gid=

如果命令运行没有错误,但gid仍未更改,则您错过了步骤2的粗体部分。


1

答案1很好,但是您仍然可以选择发出以下命令来添加新组:

# nano /etc/group

/etc/group直接编辑的缺点是您将不得不使用一个未使用的GID(组ID号)。

以下内容将允许您更改用户的主要组。 # nano /etc/passwd

找到用户所在的行,并更改GID(组号,在中查找/etc/group),请记住语法如下:

 <name>:*:<UID>:<GID>:<comment>:<directory>:<shell>

没有缺点我能想到的这个方法(前提是你知道的GID),这是我经常使用的本地用户,主要是因为我使用许多不同的UNIX系统具有不同的usermodadduseruseradd命令选项。

它有点手动,但是可以完成工作。请注意,如果您知道,可以使用viiso nano来编辑文件vi


0

要永久更改用户的主要组,请执行以下操作:

  • usermod -g groupname用户名命令

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

创建一个新的用户鲍勃和一个新的组dodo

useradd bob

因此,在RedHat / Centos中,我们有UID =(ID_number)bob; 默认情况下,GID =(ID_number)bob为主要组

groupadd dodo

将用户鲍勃添加到dodo组中:

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

newgrp更改所有权的下一个用途:

newgrp dodo

请注意您的帐户要有密码并成为将来的主要组的成员。newgrp打开一个新的shell;只要用户停留在该外壳中,主组就不会更改。要将主要组切换回原始组,可以通过运行exit命令离开新的Shell。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.